mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-20 23:07:51 +01:00
Add local data, favorites and tags.
This commit is contained in:
parent
b9662e39a9
commit
ccfc05f2b2
19 changed files with 481 additions and 94 deletions
|
|
@ -58,6 +58,7 @@ public partial class Mod
|
|||
return;
|
||||
}
|
||||
|
||||
MoveDataFile( oldDirectory, BasePath );
|
||||
new ModBackup( mod ).Move( null, dir.Name );
|
||||
|
||||
dir.Refresh();
|
||||
|
|
@ -69,9 +70,9 @@ public partial class Mod
|
|||
}
|
||||
|
||||
ModPathChanged.Invoke( ModPathChangeType.Moved, mod, oldDirectory, BasePath );
|
||||
if( metaChange != MetaChangeType.None )
|
||||
if( metaChange != ModDataChangeType.None )
|
||||
{
|
||||
ModMetaChanged?.Invoke( metaChange, mod, oldName );
|
||||
ModDataChanged?.Invoke( metaChange, mod, oldName );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,9 +95,9 @@ public partial class Mod
|
|||
}
|
||||
|
||||
ModPathChanged.Invoke( ModPathChangeType.Reloaded, mod, mod.ModPath, mod.ModPath );
|
||||
if( metaChange != MetaChangeType.None )
|
||||
if( metaChange != ModDataChangeType.None )
|
||||
{
|
||||
ModMetaChanged?.Invoke( metaChange, mod, oldName );
|
||||
ModDataChanged?.Invoke( metaChange, mod, oldName );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -211,6 +212,13 @@ public partial class Mod
|
|||
break;
|
||||
case ModPathChangeType.Deleted:
|
||||
NewMods.Remove( mod );
|
||||
break;
|
||||
case ModPathChangeType.Moved:
|
||||
if( oldDirectory != null && newDirectory != null )
|
||||
{
|
||||
MoveDataFile( oldDirectory, newDirectory );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
75
Penumbra/Mods/Manager/Mod.Manager.Local.cs
Normal file
75
Penumbra/Mods/Manager/Mod.Manager.Local.cs
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ImGuiScene;
|
||||
|
||||
namespace Penumbra.Mods;
|
||||
|
||||
public sealed partial class Mod
|
||||
{
|
||||
public partial class Manager
|
||||
{
|
||||
public void ChangeModFavorite( Index idx, bool state )
|
||||
{
|
||||
var mod = this[ idx ];
|
||||
if( mod.Favorite != state )
|
||||
{
|
||||
mod.Favorite = state;
|
||||
mod.SaveLocalData();
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Favorite, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeModNote( Index idx, string newNote )
|
||||
{
|
||||
var mod = this[ idx ];
|
||||
if( mod.Note != newNote )
|
||||
{
|
||||
mod.Note = newNote;
|
||||
mod.SaveLocalData();
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Favorite, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ChangeTag( Index idx, int tagIdx, string newTag, bool local )
|
||||
{
|
||||
var mod = this[ idx ];
|
||||
var which = local ? mod.LocalTags : mod.ModTags;
|
||||
if( tagIdx < 0 || tagIdx > which.Count )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ModDataChangeType flags = 0;
|
||||
if( tagIdx == which.Count )
|
||||
{
|
||||
flags = mod.UpdateTags( local ? null : which.Append( newTag ), local ? which.Append( newTag ) : null );
|
||||
}
|
||||
else
|
||||
{
|
||||
var tmp = which.ToArray();
|
||||
tmp[ tagIdx ] = newTag;
|
||||
flags = mod.UpdateTags( local ? null : tmp, local ? tmp : null );
|
||||
}
|
||||
|
||||
if( flags.HasFlag( ModDataChangeType.ModTags ) )
|
||||
{
|
||||
mod.SaveMeta();
|
||||
}
|
||||
|
||||
if( flags.HasFlag( ModDataChangeType.LocalTags ) )
|
||||
{
|
||||
mod.SaveLocalData();
|
||||
}
|
||||
|
||||
if( flags != 0 )
|
||||
{
|
||||
ModDataChanged?.Invoke( flags, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeLocalTag( Index idx, int tagIdx, string newTag )
|
||||
=> ChangeTag( idx, tagIdx, newTag, true );
|
||||
}
|
||||
}
|
||||
|
|
@ -6,8 +6,8 @@ public sealed partial class Mod
|
|||
{
|
||||
public partial class Manager
|
||||
{
|
||||
public delegate void ModMetaChangeDelegate( MetaChangeType type, Mod mod, string? oldName );
|
||||
public event ModMetaChangeDelegate? ModMetaChanged;
|
||||
public delegate void ModDataChangeDelegate( ModDataChangeType type, Mod mod, string? oldName );
|
||||
public event ModDataChangeDelegate? ModDataChanged;
|
||||
|
||||
public void ChangeModName( Index idx, string newName )
|
||||
{
|
||||
|
|
@ -17,7 +17,7 @@ public sealed partial class Mod
|
|||
var oldName = mod.Name;
|
||||
mod.Name = newName;
|
||||
mod.SaveMeta();
|
||||
ModMetaChanged?.Invoke( MetaChangeType.Name, mod, oldName.Text );
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Name, mod, oldName.Text );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ public sealed partial class Mod
|
|||
{
|
||||
mod.Author = newAuthor;
|
||||
mod.SaveMeta();
|
||||
ModMetaChanged?.Invoke( MetaChangeType.Author, mod, null );
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Author, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ public sealed partial class Mod
|
|||
{
|
||||
mod.Description = newDescription;
|
||||
mod.SaveMeta();
|
||||
ModMetaChanged?.Invoke( MetaChangeType.Description, mod, null );
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Description, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ public sealed partial class Mod
|
|||
{
|
||||
mod.Version = newVersion;
|
||||
mod.SaveMeta();
|
||||
ModMetaChanged?.Invoke( MetaChangeType.Version, mod, null );
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Version, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -61,8 +61,11 @@ public sealed partial class Mod
|
|||
{
|
||||
mod.Website = newWebsite;
|
||||
mod.SaveMeta();
|
||||
ModMetaChanged?.Invoke( MetaChangeType.Website, mod, null );
|
||||
ModDataChanged?.Invoke( ModDataChangeType.Website, mod, null );
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeModTag( Index idx, int tagIdx, string newTag )
|
||||
=> ChangeTag( idx, tagIdx, newTag, false );
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue