public virtual void Add(IBattleStatsDouble other, bool lockAdd) { if (_lockAdd) { throw new Exception("Calculated Finalized and locked"); } Attack += other.Attack; Hp += other.Hp; if (lockAdd) { _lockAdd = true; } }
public static Dictionary <UnitType, Dictionary <BattleStatTypes, IBattleStatsDouble> > GetUnitStatsAndMods( int userId, BattleTeches userTechs, BattleTeches allianceTeches, IBattleStatsDouble officerBonus, IBattleStatsDouble boosertsSummaryMods) { var key = _stringGetKey(userId); var existData = TmpCache.Get(key); if (existData != null) { return((Dictionary <UnitType, Dictionary <BattleStatTypes, IBattleStatsDouble> >)existData); } boosertsSummaryMods.ConvertPercentToMod(); var dic = new Dictionary <UnitType, Dictionary <BattleStatTypes, IBattleStatsDouble> >(); var unitsStats = UnitHelper.CreateBaseUnitStats(); var userBaseUnitStats = userTechs.GetBaseResultStats(); var userProfileUnitStats = userTechs.GetProfileResultStats(); var allianceBaseUnitStats = allianceTeches.GetBaseResultStats(); var allianceProfileUnitStats = allianceTeches.GetProfileResultStats(); foreach (var unitStats in unitsStats) { var unitTechType = BattleTeches.UnitTypeToTechType(unitStats.Key); var statTypes = new Dictionary <BattleStatTypes, IBattleStatsDouble>(); var userUnitTechStat = userProfileUnitStats[unitTechType]; var allianceUnitTechStat = allianceProfileUnitStats[unitTechType]; var summaryMod = new BattleStatsDouble(0, 0); summaryMod.Add(userBaseUnitStats, false); summaryMod.Add(userUnitTechStat, false); summaryMod.Add(allianceBaseUnitStats, false); summaryMod.Add(allianceUnitTechStat, false); summaryMod.Add(officerBonus, false); summaryMod.Add(boosertsSummaryMods, true); statTypes.Add(BattleStatTypes.UnitStat, unitStats.Value.DoubleStats); statTypes.Add(BattleStatTypes.UserTechMod, userBaseUnitStats); statTypes.Add(BattleStatTypes.UserUnitProfileTechMod, userUnitTechStat); statTypes.Add(BattleStatTypes.AllianceTechMod, allianceBaseUnitStats); statTypes.Add(BattleStatTypes.AllianceUnitProfileTechMod, allianceUnitTechStat); statTypes.Add(BattleStatTypes.OfficerBonus, officerBonus); statTypes.Add(BattleStatTypes.BooserMod, boosertsSummaryMods); statTypes.Add(BattleStatTypes.SummaryMods, summaryMod); dic.Add(unitStats.Key, statTypes); } TmpCache.AddOrUpdate(key, dic, _chacheTime); return(dic); }