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));
            }
        }
Example #2
0
        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);
        }