protected void AddCore(Character character, TraitData newData) { TraitData data; if (character.Traits.TryGetValue(Id, out data)) { var replaceData = OnStack(character, newData, data); if (replaceData) { character.Traits[Id] = newData; } } else { character.Traits.Add(Id, newData); OnAdd(character, newData); } }
public abstract void OnAdd(Character character, TraitData traitData);
public abstract void OnRemove(Character character, TraitData traitData);
public virtual bool OnStack(Character character, TraitData traitData, TraitData oldData) => true;
public TraitDataDescription(TraitData traitData) { Trait = traitData.Trait; }