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 MapDistance GetMotherJumpTime(IDbConnection connection, int currentUserId, int sourceSystemId, int targetSystemId) { var premium = _storeService.GetOrUpdatePremium(connection, currentUserId); if (sourceSystemId == targetSystemId) { throw new Exception(Error.JupmMotherIsCurrentSystem); } var curTask = _motherJumpService.GetActive(connection, currentUserId, i => i.Id); if (curTask != 0) { throw new Exception(Error.JumpMotherInProgress); } var dm = MapDistanceHelper.CalculateJumpTime(connection, sourceSystemId, targetSystemId, _mapAdressService, !premium.Finished); dm.Guid = Guid.NewGuid().ToString(); dm.StartCacheTime = UnixTime.UtcNow(); return((MapDistance)TmpCache.AddOrUpdate(dm.Guid, dm, CACHE_TIME_SEC_JUMP)); }