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,
|
// 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.
|
// since they are per set instead of per item-slot/item/variant.
|
||||||
var identifier = Penumbra.Identifier;
|
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 ) )
|
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 )
|
else if( obj is int x && data.Item2 is int y )
|
||||||
{
|
{
|
||||||
_changedItems[ name ] = ( data.Item1, x + 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 )
|
catch( Exception e )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -397,7 +397,7 @@ public class CommandHandler : IDisposable
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var settings = collection.Settings[ mod.Index ];
|
var settings = collection!.Settings[ mod.Index ];
|
||||||
switch( state )
|
switch( state )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue