public JsonResult DamageCalculation(int battleID, int weaponQuality, bool isAttacker) { try { var citizen = SessionHelper.CurrentEntity.Citizen; var battle = battleRepository.GetById(battleID); if (battle == null) { return(JsonError("Battle does not exist!")); } if (weaponQuality > 0) { if (citizen.Entity.GetEquipmentItem(ProductTypeEnum.Weapon, weaponQuality, productRepository).Amount == 0) { return(JsonError("You do not have such weapon in inventory!")); } } var info = new { damage = battleService.CalculateDamage(citizen, battle, weaponQuality, isAttacker), weaponBonus = battleService.CalculateWeaponBonus(weaponQuality), healthModifier = Percentage.ConvertToPercent(battleService.CalculateHealthModifier(citizen.HitPoints)), militaryRankModifier = Percentage.ConvertToPercent(battleService.CalculateMilitaryRankModifier((double)citizen.MilitaryRank)), weaponAndStrengthModifier = Percentage.ConvertToPercent(battleService.CalculateStrengthModifier((double)citizen.Strength, weaponQuality)), distanceModifier = Percentage.ConvertToPercent(battleService.CalculateDistanceModifier(citizen, battle, isAttacker)), developmentModifier = Percentage.ConvertToPercent(battleService.CalculateDevelopmentModifier(battle, isAttacker)), overallModifier = Percentage.ConvertToPercent(battleService.CalculateOverallModifier(citizen, battle, weaponQuality, isAttacker)) }; return(JsonData(info)); } catch (Exception e) { return(JsonDebugError(e)); } }
public CompanyStatisticsViewModel(Company company, ICompanyService companyService, IRegionService regionService, IRegionRepository regionRepository) { var calculator = new ProductionPointsCalculatorFactory() .SetProductType(company.GetProducedProductType()) .Create(); var args = new ProductionPointsCalculateArgs(company, regionService, regionRepository) { Skill = 4.0, Distance = 0.0, HitPoints = 100 }; RawMultiplier = Percentage.ConvertToPercent(calculator.CalculateRawMultiplier(args)); QualityModifier = Percentage.ConvertToPercent(calculator.CalculateQualityModifier(args)); ProductionModifier = Percentage.ConvertToPercent(calculator.CalculateProductModifier(args)); DevelopmentModifier = Percentage.ConvertToPercent(calculator.CalculateDevelopmentModifier(args)); PeopleModifier = Percentage.ConvertToPercent(calculator.CalculatePeopleModifier(args)); ShowRawMultiplier = companyService.CanUseRawMultiplier(company); ShowQualityModifier = companyService.CanUseQualityModifier(company); }