//---------------------------------------------------------------------------- // Add Alterations //---------------------------------------------------------------------------- #region Add Alterations // Attack alterations have to specify who they apply to // Trade off: you have to add an alteration for each character // so you have quicker implementation but more memory is used // // Honestly I don't think either would impact performance, but // it might be a good idea to add a mix of both public void AddAttackAlteration(IHasAttack hasAttack, IAttackDataAlteration attackDataAlteration) { if (!HasAttackAlterationsDict.ContainsKey(hasAttack)) { HasAttackAlterationsDict[hasAttack] = new List <IAttackDataAlteration>(); } HasAttackAlterationsDict[hasAttack].Add(attackDataAlteration); }
//---------------------------------------------------------------------------- // Alter //---------------------------------------------------------------------------- #region Alter public void Alter(IAttackData attackData) { if (HasAttackAlterationsDict.ContainsKey(attackData.MyHasAttack)) { foreach (IAttackDataAlteration attackDataAlteration in HasAttackAlterationsDict[attackData.MyHasAttack]) { attackDataAlteration.Alter(attackData); } } if (IsVictimAlterationsDict.ContainsKey(attackData.MyIsVictim)) { foreach (IAttackDataAlteration attackDataAlteration in IsVictimAlterationsDict[attackData.MyIsVictim]) { attackDataAlteration.Alter(attackData); } } }