mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Add Penumbra Mod Pack file ending and migration.
This commit is contained in:
parent
5eda2d3a23
commit
7b7f241923
8 changed files with 62 additions and 10 deletions
|
|
@ -47,6 +47,15 @@ public partial class Configuration
|
|||
m.Version1To2();
|
||||
m.Version2To3();
|
||||
m.Version3To4();
|
||||
m.Version4To5();
|
||||
}
|
||||
|
||||
// Mod backup extension was changed from .zip to .pmp.
|
||||
// Actual migration takes place in ModManager.
|
||||
private void Version4To5()
|
||||
{
|
||||
Mod.Manager.MigrateModBackups = true;
|
||||
_config.Version = 5;
|
||||
}
|
||||
|
||||
// SortMode was changed from an enum to a type.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ using Newtonsoft.Json;
|
|||
using OtterGui;
|
||||
using OtterGui.Classes;
|
||||
using OtterGui.Filesystem;
|
||||
using OtterGui.Widgets;
|
||||
using Penumbra.Import;
|
||||
using Penumbra.Mods;
|
||||
using Penumbra.UI;
|
||||
|
|
@ -142,7 +141,7 @@ public partial class Configuration : IPluginConfiguration
|
|||
// Contains some default values or boundaries for config values.
|
||||
public static class Constants
|
||||
{
|
||||
public const int CurrentVersion = 4;
|
||||
public const int CurrentVersion = 5;
|
||||
public const float MaxAbsoluteSize = 600;
|
||||
public const int DefaultAbsoluteSize = 250;
|
||||
public const float MinAbsoluteSize = 50;
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ public partial class TexToolsImporter : IDisposable
|
|||
// Puts out warnings if extension does not correspond to data.
|
||||
private DirectoryInfo VerifyVersionAndImport( FileInfo modPackFile )
|
||||
{
|
||||
if( modPackFile.Extension is ".zip" or ".7z" or ".rar" )
|
||||
if( modPackFile.Extension.ToLowerInvariant() is ".pmp" or ".zip" or ".7z" or ".rar" )
|
||||
{
|
||||
return HandleRegularArchive( modPackFile );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,10 +18,39 @@ public class ModBackup
|
|||
public ModBackup( Mod mod )
|
||||
{
|
||||
_mod = mod;
|
||||
Name = mod.ModPath + ".zip";
|
||||
Name = _mod.ModPath + ".pmp";
|
||||
Exists = File.Exists( Name );
|
||||
}
|
||||
|
||||
// Migrate file extensions.
|
||||
public static void MigrateZipToPmp(Mod.Manager manager)
|
||||
{
|
||||
foreach( var mod in manager )
|
||||
{
|
||||
var pmpName = mod.ModPath + ".pmp";
|
||||
var zipName = mod.ModPath + ".zip";
|
||||
if( File.Exists( zipName ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
if( !File.Exists( pmpName ) )
|
||||
{
|
||||
File.Move( zipName, pmpName );
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete( zipName );
|
||||
}
|
||||
PluginLog.Information( $"Migrated mod backup from {zipName} to {pmpName}." );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
PluginLog.Warning( $"Could not migrate mod backup of {mod.ModPath} from .pmp to .zip:\n{e}" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create a backup zip without blocking the main thread.
|
||||
public async void CreateAsync()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -99,6 +99,11 @@ public sealed partial class Mod
|
|||
|
||||
ModDiscoveryFinished?.Invoke();
|
||||
PluginLog.Information( "Rediscovered mods." );
|
||||
|
||||
if( MigrateModBackups )
|
||||
{
|
||||
ModBackup.MigrateZipToPmp( this );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,9 @@ public sealed partial class Mod
|
|||
{
|
||||
public sealed partial class Manager : IReadOnlyList< Mod >
|
||||
{
|
||||
// Set when reading Config and migrating from v4 to v5.
|
||||
public static bool MigrateModBackups = false;
|
||||
|
||||
// An easily accessible set of new mods.
|
||||
// Mods are added when they are created or imported.
|
||||
// Mods are removed when they are deleted or when they are toggled in any collection.
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public class Penumbra : IDalamudPlugin
|
|||
Dalamud.PluginInterface.UiBuilder.Draw += _windowSystem.Draw;
|
||||
|
||||
OtterTex.NativeDll.Initialize( Dalamud.PluginInterface.AssemblyLocation.DirectoryName );
|
||||
PluginLog.Information( $"Loading native assembly from {OtterTex.NativeDll.Directory}." );
|
||||
PluginLog.Information( $"Loading native OtterTex assembly from {OtterTex.NativeDll.Directory}." );
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
@ -165,10 +165,17 @@ public class Penumbra : IDalamudPlugin
|
|||
|
||||
private void DisposeInterface()
|
||||
{
|
||||
Dalamud.PluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
|
||||
Dalamud.PluginInterface.UiBuilder.OpenConfigUi -= _configWindow.Toggle;
|
||||
if( _windowSystem != null )
|
||||
{
|
||||
Dalamud.PluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
|
||||
}
|
||||
|
||||
_launchButton?.Dispose();
|
||||
_configWindow?.Dispose();
|
||||
if( _configWindow != null )
|
||||
{
|
||||
Dalamud.PluginInterface.UiBuilder.OpenConfigUi -= _configWindow.Toggle;
|
||||
_configWindow.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public bool Enable()
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ public sealed partial class ModFileSystemSelector : FileSystemSelector< Mod, Mod
|
|||
private void AddImportModButton( Vector2 size )
|
||||
{
|
||||
var button = ImGuiUtil.DrawDisabledButton( FontAwesomeIcon.FileImport.ToIconString(), size,
|
||||
"Import one or multiple mods from Tex Tools Mod Pack Files.", !Penumbra.ModManager.Valid, true );
|
||||
"Import one or multiple mods from Tex Tools Mod Pack Files or Penumbra Mod Pack Files.", !Penumbra.ModManager.Valid, true );
|
||||
ConfigWindow.OpenTutorial( ConfigWindow.BasicTutorialSteps.ModImport );
|
||||
if( !button )
|
||||
{
|
||||
|
|
@ -213,7 +213,7 @@ public sealed partial class ModFileSystemSelector : FileSystemSelector< Mod, Mod
|
|||
_hasSetFolder = true;
|
||||
|
||||
_fileManager.OpenFileDialog( "Import Mod Pack",
|
||||
"Mod Packs{.ttmp,.ttmp2,.zip,.7z,.rar},TexTools Mod Packs{.ttmp,.ttmp2},Archives{.zip,.7z,.rar}", ( s, f ) =>
|
||||
"Mod Packs{.ttmp,.ttmp2,.pmp},TexTools Mod Packs{.ttmp,.ttmp2},Penumbra Mod Packs{.pmp},Archives{.zip,.7z,.rar}", ( s, f ) =>
|
||||
{
|
||||
if( s )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue