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;
     }
 }
Esempio n. 2
0
        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);
        }