public BuildingViewModel(int level, IBuilding res)
        {
            this.Level = level;
            this.Name = res.Name;
            this.Description = res.Description;
            this.MaxLevel = res.MaxLevel;
            this.Prerequisite = res.Prerequisite;
            this.RequiredBuildTime = this.Level < this.MaxLevel ? res.BuildTime[this.Level + 1].TotalMinutes : 0;

            var requiredResources = res.GetRequiredResources(this.Level + 1);
            this.RequiredEnergy = requiredResources[0];
            this.RequiredCrystals = requiredResources[1];
            this.RequiredMetal = requiredResources[2];
        }
        private bool CanBuild(PlayerObject pO, int toLevel, IBuilding buildingLogic)
        {
            if (pO.Buildings.CurrentlyBuilding != CurrentlyBuilding.None)
            {
                return false;
            }

            if (toLevel > buildingLogic.MaxLevel)
            {
                return false;
            }

            if (pO.Buildings.HeadQuartersLevel < buildingLogic.Prerequisite)
            {
                return false;
            }

            if (toLevel > pO.Buildings.HeadQuartersLevel && buildingLogic.Name != "Headquarters")
            {
                return false;
            }

            var requiredResources = buildingLogic.GetRequiredResources(toLevel);

            return pO.Resources.Energy > requiredResources[0]
                && pO.Resources.Crystal > requiredResources[1]
                && pO.Resources.Metal > requiredResources[2];
        }