mirror of
https://github.com/kwsch/NHSE.git
synced 2026-09-11 20:55:35 -05:00
Add item display name -> item ID autodetect
This commit is contained in:
@@ -71,5 +71,17 @@ public void Execute(IList<string> lines, IEnumerable<T> data)
|
||||
Process(pk, set.Filters, set.Instructions);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void Initialize(StringInstructionSet[] sets);
|
||||
|
||||
public void Process(StringInstructionSet[] sets, IReadOnlyList<T> items)
|
||||
{
|
||||
Initialize(sets);
|
||||
foreach (var s in sets)
|
||||
{
|
||||
foreach (var i in items)
|
||||
Process(i, s.Filters, s.Instructions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
namespace NHSE.Core
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace NHSE.Core
|
||||
{
|
||||
public class ItemProcessor : BatchProcessor<Item>
|
||||
{
|
||||
@@ -8,5 +11,42 @@ public ItemProcessor(BatchMutator<Item> mut) : base(mut)
|
||||
|
||||
protected override bool CanModify(Item item) => true;
|
||||
protected override bool Finalize(Item item) => true;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the <see cref="StringInstruction"/> list with a context-sensitive value. If the provided value is a string, it will attempt to convert that string to its corresponding index.
|
||||
/// </summary>
|
||||
/// <param name="il">Instructions to initialize.</param>
|
||||
public void ScreenStrings(IEnumerable<StringInstruction> il)
|
||||
{
|
||||
foreach (var i in il.Where(i => !i.PropertyValue.All(char.IsDigit)))
|
||||
{
|
||||
string pv = i.PropertyValue;
|
||||
if (pv.StartsWith("$") && pv.Contains(","))
|
||||
i.SetRandRange(pv);
|
||||
|
||||
SetInstructionScreenedValue(i);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the <see cref="StringInstruction"/> with a context-sensitive value. If the provided value is a string, it will attempt to convert that string to its corresponding index.
|
||||
/// </summary>
|
||||
/// <param name="i">Instruction to initialize.</param>
|
||||
private static void SetInstructionScreenedValue(StringInstruction i)
|
||||
{
|
||||
switch (i.PropertyName)
|
||||
{
|
||||
case nameof(Item.ItemId) or nameof(Item.ExtensionItemId): i.SetScreenedValue(GameInfo.Strings.itemlistdisplay); return;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Initialize(StringInstructionSet[] sets)
|
||||
{
|
||||
foreach (var set in sets)
|
||||
{
|
||||
ScreenStrings(set.Filters);
|
||||
ScreenStrings(set.Instructions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,13 +116,8 @@ private void RunBatchEdit(StringInstructionSet[] sets)
|
||||
{
|
||||
if (finished)
|
||||
return;
|
||||
|
||||
foreach (var s in sets)
|
||||
{
|
||||
foreach (var i in Items)
|
||||
Processor.Process(i, s.Filters, s.Instructions);
|
||||
}
|
||||
|
||||
// don't bother reporting progress...
|
||||
Processor.Process(sets, Items);
|
||||
finished = true;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user