Beispiel #1
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);
        }
Beispiel #2
0
        public static Dictionary <UnitType, Dictionary <BattleStatTypes, IBattleStatsDouble> > CreateSkagryMods(
            NpcModel npc)
        {
            // todo  нужно определить одинаковоые или разные  статы
            var dic = new Dictionary <UnitType, Dictionary <BattleStatTypes, IBattleStatsDouble> >();
            //todo  будут ли статы отличными. тут хорошее место для применения отличных статов от базы
            var unitsStats = UnitHelper.CreateBaseUnitStats();
            //todo  заполняем статы для нпс
            var npcTeches = new BattleTeches(npc.NpcMother.TechProgress);
            //todo  можно вести свзяь  с офицерами и элитными войсками скагри
            var officerBonus = new BattleStatsDouble(0, 0);
            // todo можно ввести связь с бустерами игрока, или ввести рандом на понижение сил скагрей
            var boosertsSummaryMods = new BattleStatsDouble(0, 0);

            var npcAllianceTeches        = new BattleTeches(npc.NpcAllianceTeth.Teches);
            var userBaseUnitStats        = npcTeches.GetBaseResultStats();
            var userProfileUnitStats     = npcTeches.GetProfileResultStats();
            var allianceBaseUnitStats    = npcAllianceTeches.GetBaseResultStats();
            var allianceProfileUnitStats = npcAllianceTeches.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);
            }
            return(dic);
        }