Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        public CitizenSummaryViewModel(CitizenSummaryInfo info, ICitizenService citizenService)
        {
            Name       = info.Name;
            CitizenID  = info.ID;
            CanWork    = info.CanWork;
            HitPoints  = info.HitPoints;
            Experience = info.Experience;
            Trained    = info.Trained;
            Strength   = info.Strength;
            Avatar     = new ImageViewModel(info.AvatarUrl);
            JobID      = info.JobID;

            EatingSafety = info.EatingSafety;

            CountryMoney = new MoneyViewModel(info.CountryCurrencyID, (decimal)info.CountryMoneyAmount);
            AdminMoney   = new MoneyViewModel(CurrencyTypeEnum.Gold, (decimal)info.GoldAmount);
            CountryID    = info.CountryID;

            NextExperienceLevel = citizenService.CalculateExperienceForNextLevel(info.Level);

            ExperienceProgress = (int)(info.Experience / (double)NextExperienceLevel * 100.0);

            int militaryRank     = (int)info.MilitaryRank;
            int nextMilitaryRank = MilitaryRankEnumExtensions.CalculateNextMilitaryRankNeeded(militaryRank) ?? militaryRank;

            MilitaryRank             = militaryRank.ConvertToBasicUnits();
            NextMilitaryRank         = nextMilitaryRank.ConvertToBasicUnits();
            NextMilitaryRankProgress = (int)(militaryRank / (double)nextMilitaryRank * 100.0);

            UnreadMessages = info.UnreadMessages;
            UnreadWarnings = info.UnreadWarnings;

            if (HitPoints < 90 && info.CanHeal)
            {
                CanHeal = info.CanHeal;

                HealCurrency = CountryMoney.Symbol;
                HospitalID   = info.HospitalID.Value;
                FreeHealing  = info.HealingCost.HasValue == false;
                if (FreeHealing == false)
                {
                    HealCost = (double)info.HealingCost.Value;
                }
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        public double CalculateMilitaryRankModifier(double militaryRank)
        {
            MilitaryRankEnum rank = MilitaryRankEnumExtensions.GetRankForMilitaryRank(militaryRank);

            return(1.0 + (double)rank * 0.02);
        }