mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Add changed item for meta manipulations to effective changes.
This commit is contained in:
parent
6a3d214e15
commit
347e4b2023
2 changed files with 22 additions and 7 deletions
|
|
@ -474,25 +474,40 @@ public partial class ModCollection
|
|||
// Skip IMCs because they would result in far too many false-positive items,
|
||||
// since they are per set instead of per item-slot/item/variant.
|
||||
var identifier = Penumbra.Identifier;
|
||||
foreach( var (resolved, modPath) in ResolvedFiles.Where( file => !file.Key.Path.EndsWith( "imc"u8 ) ) )
|
||||
var items = new SortedList< string, object? >(512);
|
||||
|
||||
void AddItems( IMod mod )
|
||||
{
|
||||
foreach( var (name, obj) in identifier.Identify( resolved.ToString() ) )
|
||||
foreach( var (name, obj) in items )
|
||||
{
|
||||
if( !_changedItems.TryGetValue( name, out var data ) )
|
||||
{
|
||||
_changedItems.Add( name, ( new SingleArray< IMod >( modPath.Mod ), obj ) );
|
||||
_changedItems.Add( name, ( new SingleArray< IMod >( mod ), obj ) );
|
||||
}
|
||||
else if( !data.Item1.Contains( modPath.Mod ) )
|
||||
else if( !data.Item1.Contains( mod ) )
|
||||
{
|
||||
_changedItems[ name ] = ( data.Item1.Append( modPath.Mod ), obj is int x && data.Item2 is int y ? x + y : obj );
|
||||
_changedItems[ name ] = ( data.Item1.Append( mod ), obj is int x && data.Item2 is int y ? x + y : obj );
|
||||
}
|
||||
else if( obj is int x && data.Item2 is int y )
|
||||
{
|
||||
_changedItems[ name ] = ( data.Item1, x + y );
|
||||
}
|
||||
}
|
||||
|
||||
items.Clear();
|
||||
}
|
||||
|
||||
foreach( var (resolved, modPath) in ResolvedFiles.Where( file => !file.Key.Path.EndsWith( "imc"u8 ) ) )
|
||||
{
|
||||
identifier.Identify( items, resolved.ToString() );
|
||||
AddItems( modPath.Mod );
|
||||
}
|
||||
|
||||
foreach( var (manip, mod) in MetaManipulations )
|
||||
{
|
||||
Mod.ComputeChangedItems( items, manip );
|
||||
AddItems( mod );
|
||||
}
|
||||
// TODO: Meta Manipulations
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -397,7 +397,7 @@ public class CommandHandler : IDisposable
|
|||
return false;
|
||||
}
|
||||
|
||||
var settings = collection.Settings[ mod.Index ];
|
||||
var settings = collection!.Settings[ mod.Index ];
|
||||
switch( state )
|
||||
{
|
||||
case 0:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue