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); }
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); }