public ViewCitizenViewModel(Entities.Citizen citizen, IList <Citizen> friends, ICitizenService citizenService, IFriendService friendService) { var entity = citizen.Entity; Info = new CitizenInfoViewModel(citizen, friendService); Avatar = new ImageViewModel(entity.ImgUrl); Name = entity.Name; RegionName = citizen.Region.Name; CountryName = citizen.Region.Country.Entity.Name; HitPoints = citizen.HitPoints; Experience = citizen.Experience; Level = citizen.ExperienceLevel; NextLevelExperience = citizenService.CalculateExperienceForNextLevel(citizen.ExperienceLevel); Manufacturing = (double)citizen.Manufacturing; Raw = (double)citizen.Raw; Selling = (double)citizen.Selling; Construction = (double)citizen.Construction; ExperienceProgress = (int)(Experience / (double)NextLevelExperience * 100.0); int militaryRank = (int)citizen.MilitaryRank; int nextMilitaryRank = (MilitaryRankEnumExtensions.CalculateNextMilitaryRankNeeded(militaryRank) ?? militaryRank); MilitaryRank = militaryRank.ConvertToBasicUnits(); NextMilitaryRank = nextMilitaryRank.ConvertToBasicUnits(); NextMilitaryRankProgress = (int)(militaryRank / (double)nextMilitaryRank * 100.0); MilitaryRankIconCss = MilitaryRankEnumExtensions.GetRankCss(MilitaryRankEnumExtensions.GetRankForMilitaryRank(militaryRank)); Strength = string.Format("{0:0.##}", citizen.Strength); Medals = new MedalViewModel(citizen); var company = citizen.GetCurrentJob(); if (company != null) { Job = new CitizenJobShortViewModel(company); } Friends = friends .TakeRandom(4) .Select(cit => new ViewCitizenFriendModel(cit)) .ToList(); FriendCount = friends.Count(); }
public void ParticipateInBattle(Citizen citizen, Battle battle, bool isAttacker, int weaponQuality) { var damage = CalculateDamage(citizen, battle, weaponQuality, isAttacker); if (isAttacker) { battle.WallHealth -= (decimal)damage; } else { battle.WallHealth += (decimal)damage; } var currentRank = MilitaryRankEnumExtensions.GetRankForMilitaryRank((double)citizen.MilitaryRank); citizen.MilitaryRank += (decimal)damage; citizen.HitPoints -= 10; var newRank = MilitaryRankEnumExtensions.GetRankForMilitaryRank((double)citizen.MilitaryRank); if (currentRank != newRank) { var msg = string.Format("You were promoted to {0}.", newRank.ToHumanReadable()); warningService.AddWarning(citizen.ID, msg); } if (weaponQuality > 0) { equipmentRepository.RemoveEquipmentItem(citizen.Entity.EquipmentID.Value, (int)ProductTypeEnum.Weapon, weaponQuality); } var participant = new BattleParticipant() { BattleID = battle.ID, CitizenID = citizen.ID, DamageDealt = (decimal)damage, IsAttacker = isAttacker, WeaponQualityUsed = weaponQuality, Day = GameHelper.CurrentDay, DateTime = DateTime.Now }; battleRepository.AddParticipant(participant); ConditionalSaveChanges(battleRepository); }
public CitizenInfoViewModel(Entities.Citizen citizen, IFriendService friendService) { var entity = citizen.Entity; CitizenName = entity.Name; CitizenID = entity.EntityID; Avatar = new ImageViewModel(entity.ImgUrl); var region = citizen.Entity.GetCurrentRegion(); var country = citizen.Entity.GetCurrentCountry(); RegionName = region.Name; RegionID = region.ID; CountryName = country.Entity.Name; CountryID = country.ID; CitizenshipCountryID = citizen.CitizenshipID; CitizenshipCountryName = Persistent.Countries.GetById(CitizenshipCountryID).Entity.Name; if (citizen.CompanyEmployee != null) { WorkingCompanyID = citizen.CompanyEmployee.CompanyID; WorkingCompanyName = citizen.CompanyEmployee.Company.Entity.Name; } if (citizen.PartyMember != null) { PartyID = citizen.PartyMember.PartyID; PartyName = citizen.PartyMember.Party.Entity.Name; } IsUnderControl = citizen.ID == SessionHelper.CurrentEntity.EntityID; if (IsUnderControl) { AvatarChange = new AvatarChangeViewModel(citizen.ID); } MilitaryRankReadable = StringUtils.FirstToUpper(MilitaryRankEnumExtensions.GetRankForMilitaryRank((double)citizen.MilitaryRank).ToHumanReadable()); var currentCitizen = SessionHelper.CurrentEntity.Citizen; friendshipInit(citizen, friendService, currentCitizen); createMenu(); }
public double CalculateMilitaryRankModifier(double militaryRank) { MilitaryRankEnum rank = MilitaryRankEnumExtensions.GetRankForMilitaryRank(militaryRank); return(1.0 + (double)rank * 0.02); }