Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/AIStyleData.cs
gamer147 c88b8df409 cull(engine-cleanup): pass-8 phase-2 cascade round 3
[trim] fully-unreachable files deleted: 3
[trim] files edited: 6, files deleted: 0, nodes removed: 23
[type-trim] files edited: 0, types removed: 0

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-03 21:20:40 -04:00

79 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace Wizard;
public class AIStyleData
{
private List<AICategory> categoryFilter;
private Dictionary<AIStyleKey, List<AIPolicyData>> policyDic = new Dictionary<AIStyleKey, List<AIPolicyData>>();
public AIStyleData()
{
}
public AIStyleData(List<AICategory> filter)
{
categoryFilter = filter;
}
public void CreateFromAsset(List<AIPolicyDataAsset> assetList)
{
foreach (AIPolicyDataAsset asset in assetList)
{
AIPolicyData aIPolicyData = new AIPolicyData(asset);
AIStyleKey key = new AIStyleKey(aIPolicyData.Category, aIPolicyData.PolicyType);
MixInPolicy(key, aIPolicyData);
}
}
public List<AIPolicyData> ConvertToPolicyList()
{
List<AIPolicyData> list = new List<AIPolicyData>();
foreach (KeyValuePair<AIStyleKey, List<AIPolicyData>> item in policyDic)
{
foreach (AIPolicyData item2 in item.Value)
{
list.Add(item2);
}
}
return list;
}
public bool MixInPolicy(AIStyleKey key, AIPolicyData value)
{
if (categoryFilter != null && !categoryFilter.Any((AICategory c) => c == key.category))
{
return false;
}
if (policyDic.ContainsKey(key))
{
List<AIPolicyData> list = policyDic[key];
if (list == null)
{
list = new List<AIPolicyData>();
list.Add(value);
return true;
}
int priority = list[0].Priority;
if (value.Priority > priority)
{
list.Clear();
list.Add(value);
return true;
}
if (value.Priority == priority)
{
list.Add(value);
return true;
}
return false;
}
List<AIPolicyData> list2 = new List<AIPolicyData>();
list2.Add(value);
policyDic.Add(key, list2);
return true;
}
}