using System.Collections.Generic; namespace CleverCrow.Fluid.StatsSystem { /// /// A collection for caching stat defintion collections at runtime /// public class StatDefinitionsCompiled { private Dictionary> _compiled = new Dictionary>(); public List Get (StatDefinitionCollection id) { if (id == null) return null; List definitions; if (_compiled.TryGetValue(id, out definitions)) { return definitions; } definitions = id.GetDefinitions(); // Append default definitions that haven't already been added var defaults = GetDefaults(); if (defaults != null) { foreach (var statDefinition in defaults) { if (definitions.Contains(statDefinition)) continue; definitions.Add(statDefinition); } } _compiled[id] = definitions; return definitions; } public List GetDefaults () { var id = StatsSettings.Current.DefaultStats; if (id == null) return null; List definitions; if (_compiled.TryGetValue(id, out definitions)) { return definitions; } definitions = id.GetDefinitions(); _compiled[id] = definitions; return definitions; } public static List GetDefinitions (StatDefinitionCollection id) { if (id == null) return null; var definitions = id.GetDefinitions(); var defaults = GetDefinitionDefaults(); if (defaults == null) return definitions; foreach (var statDefinition in defaults) { if (definitions.Contains(statDefinition)) continue; definitions.Add(statDefinition); } return definitions; } public static List GetDefinitionDefaults () { var id = StatsSettings.Current.DefaultStats; if (id == null) return null; return id.GetDefinitions(); } } }