Update submod positions on group deletions.

This commit is contained in:
Ottermandias 2022-08-13 21:18:34 +02:00
parent 8aefdbd948
commit 5ac3a903f6

View file

@ -70,6 +70,7 @@ public sealed partial class Mod
var group = mod._groups[ groupIdx ]; var group = mod._groups[ groupIdx ];
ModOptionChanged.Invoke( ModOptionChangeType.PrepareChange, mod, groupIdx, -1, -1 ); ModOptionChanged.Invoke( ModOptionChangeType.PrepareChange, mod, groupIdx, -1, -1 );
mod._groups.RemoveAt( groupIdx ); mod._groups.RemoveAt( groupIdx );
UpdateSubModPositions( mod, groupIdx );
group.DeleteFile( mod.ModPath, groupIdx ); group.DeleteFile( mod.ModPath, groupIdx );
ModOptionChanged.Invoke( ModOptionChangeType.GroupDeleted, mod, groupIdx, -1, -1 ); ModOptionChanged.Invoke( ModOptionChangeType.GroupDeleted, mod, groupIdx, -1, -1 );
} }
@ -78,16 +79,20 @@ public sealed partial class Mod
{ {
if( mod._groups.Move( groupIdxFrom, groupIdxTo ) ) if( mod._groups.Move( groupIdxFrom, groupIdxTo ) )
{ {
foreach( var (group, groupIdx) in mod._groups.WithIndex().Skip( Math.Min( groupIdxFrom, groupIdxTo ) ) ) UpdateSubModPositions( mod, Math.Min( groupIdxFrom, groupIdxTo ) );
ModOptionChanged.Invoke( ModOptionChangeType.GroupMoved, mod, groupIdxFrom, -1, groupIdxTo );
}
}
private static void UpdateSubModPositions( Mod mod, int fromGroup )
{
foreach( var (group, groupIdx) in mod._groups.WithIndex().Skip( fromGroup ) )
{ {
foreach( var (o, optionIdx) in group.OfType<SubMod>().WithIndex() ) foreach( var (o, optionIdx) in group.OfType<SubMod>().WithIndex() )
{ {
o.SetPosition( groupIdx, optionIdx ); o.SetPosition( groupIdx, optionIdx );
} }
} }
ModOptionChanged.Invoke( ModOptionChangeType.GroupMoved, mod, groupIdxFrom, -1, groupIdxTo );
}
} }
public void ChangeGroupDescription( Mod mod, int groupIdx, string newDescription ) public void ChangeGroupDescription( Mod mod, int groupIdx, string newDescription )