mirror of
https://github.com/Ratstail91/Mementos.git
synced 2025-11-29 02:24:28 +11:00
54 lines
1.6 KiB
C#
54 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace Ink.Runtime
|
|
{
|
|
public class ListDefinitionsOrigin
|
|
{
|
|
public List<Runtime.ListDefinition> lists {
|
|
get {
|
|
var listOfLists = new List<Runtime.ListDefinition> ();
|
|
foreach (var namedList in _lists) {
|
|
listOfLists.Add (namedList.Value);
|
|
}
|
|
return listOfLists;
|
|
}
|
|
}
|
|
|
|
public ListDefinitionsOrigin (List<Runtime.ListDefinition> lists)
|
|
{
|
|
_lists = new Dictionary<string, ListDefinition> ();
|
|
_allUnambiguousListValueCache = new Dictionary<string, ListValue>();
|
|
|
|
foreach (var list in lists) {
|
|
_lists [list.name] = list;
|
|
|
|
foreach(var itemWithValue in list.items) {
|
|
var item = itemWithValue.Key;
|
|
var val = itemWithValue.Value;
|
|
var listValue = new ListValue(item, val);
|
|
|
|
// May be ambiguous, but compiler should've caught that,
|
|
// so we may be doing some replacement here, but that's okay.
|
|
_allUnambiguousListValueCache[item.itemName] = listValue;
|
|
_allUnambiguousListValueCache[item.fullName] = listValue;
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool TryListGetDefinition (string name, out ListDefinition def)
|
|
{
|
|
return _lists.TryGetValue (name, out def);
|
|
}
|
|
|
|
public ListValue FindSingleItemListWithName (string name)
|
|
{
|
|
ListValue val = null;
|
|
_allUnambiguousListValueCache.TryGetValue(name, out val);
|
|
return val;
|
|
}
|
|
|
|
Dictionary<string, Runtime.ListDefinition> _lists;
|
|
Dictionary<string, ListValue> _allUnambiguousListValueCache;
|
|
}
|
|
}
|