Ejemplo n.º 1
0
        public ICollection <UpgradeModel> BuildingPage(Towns Town)
        {
            VindorelDbContext          _context = new VindorelDbContext();
            ICollection <UpgradeModel> Upgrades = new List <UpgradeModel>();

            Buildings     = _context.Buildings.LastOrDefault(x => x.TownID == Town.TownId);
            Settings      = _context.UserGameSettings.LastOrDefault(x => x.UserId == Town.UserId);
            Populations   = _context.Population.LastOrDefault(x => x.TownId == Town.TownId);
            this.Upgrades = Upgrades;
            this.Upgrades.Add(UpgradeTownCenter(Buildings.TownCenter));
            this.Upgrades.Add(UpgradeCityWall(Buildings.CityWall));
            this.Upgrades.Add(UpgradeTechnologyCamp(Buildings.TechnologyCamp));
            this.Upgrades.Add(UpgradeTradeHouse(Buildings.TradeHouse));
            this.Upgrades.Add(UpgradeWareHouse(Buildings.Warehouse));
            this.Upgrades.Add(UpgradeTemple(Buildings.Temple));
            this.Upgrades.Add(UpgradeBarracks(Buildings.Barracks));
            this.Upgrades.Add(UpgradeFarm(Buildings.Farm));
            this.Upgrades.Add(UpgradeMeatCamp(Buildings.MeatCamp));
            this.Upgrades.Add(UpgradeMine(Buildings.Mine));
            this.Upgrades.Add(UpgradeWoodCutterHut(Buildings.WoodCutterHut));
            this.Upgrades.Add(UpgradeTaxHouse(Buildings.TaxHouse));

            return(Upgrades);
        }
    public void Open(HallBuilding a_Building, bool a_RightClick = false)
    {
        m_BuildButton.transform.parent.gameObject.SetActive(!a_RightClick);
        m_CancelButton.transform.parent.gameObject.SetActive(!a_RightClick);

        gameObject.SetActive(true);

        TownBuildings _Buildings = m_TownScreen.GetTownBuildings();

        m_BuildingData = a_Building.BuildingData;

        m_Title.text        = "Build " + m_BuildingData.DisplayName;
        m_Image.sprite      = a_Building.Image.sprite;
        m_Description.text  = m_BuildingData.Description;
        m_Requirements.text = "Requires:\n";

        List <BuildingRequirements> _RemainingRequirements = new List <BuildingRequirements>();

        if (m_BuildingData.Requirements != null)
        {
            for (int i = 0; i < m_BuildingData.Requirements.Requirements.Length; i++)
            {
                if (!_Buildings.IsBuildingBuilt(m_BuildingData.Requirements.Requirements[i]))
                {
                    _RemainingRequirements.Add(m_BuildingData.Requirements.Requirements[i]);
                }
            }
        }

        for (int i = 0; i < _RemainingRequirements.Count; i++)
        {
            m_Requirements.text += _RemainingRequirements[i].name;

            if (i < _RemainingRequirements.Count - 1)
            {
                m_Requirements.text += ",  ";
            }
        }

        if (_RemainingRequirements.Count == 0)
        {
            m_Requirements.text = "All prerequisites for this building have been met.";
        }

        m_BuildButton.interactable = a_Building.Buildable;

        int _ResourceCount = 0;

        if (a_Building.BuildingData.WoodCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_WoodSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.WoodCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.MercuryCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_MercurySprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.MercuryCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.OreCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_OreSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.OreCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.SulfurCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_SulfurSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.SulfurCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.CrystalCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_CrystalsSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.CrystalCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.GemCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_GemsSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.GemCost.ToString();
            _ResourceCount++;
        }

        if (a_Building.BuildingData.GoldCost > 0)
        {
            m_ResourceImages[_ResourceCount].sprite = m_GoldSprite;
            m_ResourceAmounts[_ResourceCount].text  = a_Building.BuildingData.GoldCost.ToString();
            _ResourceCount++;
        }

        if (_ResourceCount > 3)
        {
            for (int i = 0; i < 4; i++)
            {
                m_ResourceImages[i].rectTransform.anchoredPosition  = new Vector2(80 * (i - 1.5f), -59);
                m_ResourceAmounts[i].rectTransform.anchoredPosition = new Vector2(80 * (i - 1.5f), -83);

                m_ResourceImages[i].gameObject.SetActive(true);
                m_ResourceAmounts[i].gameObject.SetActive(true);
            }

            for (int i = 4; i < _ResourceCount; i++)
            {
                m_ResourceImages[i].rectTransform.anchoredPosition  = new Vector2(80 * ((i - 4) - (_ResourceCount - 5) / 2.0f), -133);
                m_ResourceAmounts[i].rectTransform.anchoredPosition = new Vector2(80 * ((i - 4) - (_ResourceCount - 5) / 2.0f), -157);

                m_ResourceImages[i].gameObject.SetActive(true);
                m_ResourceAmounts[i].gameObject.SetActive(true);
            }

            for (int i = _ResourceCount; i < 7; i++)
            {
                m_ResourceImages[i].gameObject.SetActive(false);
                m_ResourceAmounts[i].gameObject.SetActive(false);
            }
        }
        else
        {
            for (int i = 0; i < _ResourceCount; i++)
            {
                m_ResourceImages[i].rectTransform.anchoredPosition  = new Vector2(80 * (i - (_ResourceCount - 1) / 2.0f), -96);
                m_ResourceAmounts[i].rectTransform.anchoredPosition = new Vector2(80 * (i - (_ResourceCount - 1) / 2.0f), -120);

                m_ResourceImages[i].gameObject.SetActive(true);
                m_ResourceAmounts[i].gameObject.SetActive(true);
            }

            for (int i = _ResourceCount; i < 7; i++)
            {
                m_ResourceImages[i].gameObject.SetActive(false);
                m_ResourceAmounts[i].gameObject.SetActive(false);
            }
        }
    }