예제 #1
0
#pragma warning restore 0414

    public PlayerCity()
    {
        ECityBuildingKey[] buildingKeys = Enum.GetValues(typeof(ECityBuildingKey)) as ECityBuildingKey[];
        _buildings = new CityBuildingInfo[buildingKeys.Length - 1];
        for (int i = 1; i < buildingKeys.Length; i++)
        {
            _buildings[i - 1] = new CityBuildingInfo(buildingKeys[i], 1);
        }

        //TODO: setup correct last refresh time
        _fuelRefresher = new PlayerFuelRefresher(Utils.UnixTimestamp);
        //TODO: start ongoing constructions

        //TODO: setup correct buildings info
        //TODO: setup correct upgrades info
        //TOOD: setup warehouse collect time
        if (IsWarehouseFilled)
        {
            OnWarehouseFilled();
        }
        else
        {
            GameTimer.Instance.AddListener(WarehouseCollectTime, OnWarehouseFilled);
        }
    }
예제 #2
0
    private void OnConstructionComplete(ECityBuildingKey buildingKey)
    {
        CityBuildingInfo bInfo = GetBuilding(buildingKey);

        bInfo.Level++;
        bInfo.ConstructionCompletionTimestamp = -1;

        EventsAggregator.City.Broadcast <ECityBuildingKey>(ECityEvent.ConstructionEnd, buildingKey);
    }
예제 #3
0
    public void StartConstruction(ECityBuildingKey buildingKey)
    {
        CityBuildingInfo bInfo = GetBuilding(buildingKey);

        //check level
        if (bInfo.IsLevelMaxed)
        {
            return;
        }
        //check current building is not under construction
        if (bInfo.IsUnderCoustruction)
        {
            return;
        }

        CBConstructionRequirement requirements = CityConfig.Instance.GetBuildingData(buildingKey).GetConstructionRequirements(bInfo.Level + 1);

        //check resources requirements
        if (Global.Instance.Player.Resources.Credits < requirements.CostCredits ||
            Global.Instance.Player.Resources.Minerals < requirements.CostMinerals ||
            Global.Instance.Player.Resources.Fuel < requirements.CostFuel)
        {
            return;
        }

        //check necessary buildings requirements
        for (int i = 0; i < requirements.BuildingRequirements.Length; i++)
        {
            if (GetBuilding(requirements.BuildingRequirements[i].Key).Level < requirements.BuildingRequirements[i].Level)
            {
                return;
            }
        }

        //all conditions match: remove resources and start construction
        Global.Instance.Player.Resources.Credits  -= requirements.CostCredits;
        Global.Instance.Player.Resources.Minerals -= requirements.CostMinerals;
        Global.Instance.Player.Resources.Fuel     -= requirements.CostFuel;
        bInfo.ConstructionCompletionTimestamp      = Utils.UnixTimestamp + requirements.BuildTime;

        StartConstructionInternal(buildingKey, bInfo.ConstructionCompletionTimestamp);
    }
예제 #4
0
#pragma warning restore 0414
	
	public PlayerCity() {
		ECityBuildingKey[] buildingKeys = Enum.GetValues(typeof(ECityBuildingKey)) as ECityBuildingKey[];
		_buildings = new CityBuildingInfo[buildingKeys.Length - 1];
		for (int i = 1; i < buildingKeys.Length; i++) {
			_buildings[i - 1] = new CityBuildingInfo(buildingKeys[i], 1);
		}

		//TODO: setup correct last refresh time
		_fuelRefresher = new PlayerFuelRefresher(Utils.UnixTimestamp);
		//TODO: start ongoing constructions

		//TODO: setup correct buildings info
		//TODO: setup correct upgrades info
		//TOOD: setup warehouse collect time
		if (IsWarehouseFilled) {
			OnWarehouseFilled();
		} else {
			GameTimer.Instance.AddListener(WarehouseCollectTime, OnWarehouseFilled);
		}
	}
예제 #5
0
    //WARNING! temp!
    private void SetupLabel()
    {
        string strBuildingName = string.Empty;
        string strEnterCaption = "Enter";

        switch (_buildingKey)
        {
        case ECityBuildingKey.TownHall:
            strBuildingName = "Main";
            strEnterCaption = "Info";
            break;

        case ECityBuildingKey.Barracks:
            strBuildingName = "Barracks";
            break;

        case ECityBuildingKey.Fort:
            strBuildingName = "Fort";
            break;

        case ECityBuildingKey.HeroesHall:
            strBuildingName = "Heroes Hall";
            break;

        case ECityBuildingKey.Market:
            strBuildingName = "Merchant";
            break;

        case ECityBuildingKey.Warehouse:
            strBuildingName = "Warehouse";
            break;
        }

        CityBuildingInfo buildingInfo = Global.Instance.Player.City.GetBuilding(_buildingKey);
        int buildingLevel             = buildingInfo != null ? buildingInfo.Level : 1;

        _lblBuildingName.text = string.Format("{0} {1} lvl", strBuildingName, buildingLevel);
        _lblEnter.text        = strEnterCaption;
    }
    public void Setup(ECityBuildingKey buildingKey)
    {
        StopAllCoroutines();

        if (_imgBuilding.sprite != null)
        {
            _imgBuilding.sprite = null;
            UIResourcesManager.Instance.FreeResource(string.Format("{0}/{1}", GameConstants.Paths.UI_CITY_BUILDINGS_RESOURCES, CityConfig.Instance.GetBuildingData(_buildingKey).GetConstructionRequirements(_buildngLevel).IconPath));
        }

        _imgBuilding.enabled = false;
        _buildingKey         = buildingKey;

        bool       canUpgrade   = false;
        CBBaseData buildingData = CityConfig.Instance.GetBuildingData(_buildingKey);

        if (buildingData != null)
        {
            CityBuildingInfo playerBuildingInfo = Global.Instance.Player.City.GetBuilding(_buildingKey);
            if (playerBuildingInfo != null)
            {
                _buildngLevel = playerBuildingInfo.Level;

                //setup image
                Sprite sprResource = UIResourcesManager.Instance.GetResource <Sprite>(string.Format("{0}/{1}", GameConstants.Paths.UI_CITY_BUILDINGS_RESOURCES, buildingData.GetConstructionRequirements(_buildngLevel).IconPath));
                if (sprResource != null)
                {
                    _imgBuilding.sprite  = sprResource;
                    _imgBuilding.enabled = true;
                }

                if (playerBuildingInfo.IsLevelMaxed)
                {
                    //TODO: set correct text
                    _lblCaption.text = "Building has maximum level";

                    _lblFuelCost.text     = "-";
                    _lblMineralsCost.text = "-";
                    _lblCreditsCost.text  = "-";
                    _lblTimeCost.text     = "-";
                }
                else
                {
                    if (playerBuildingInfo.IsUnderCoustruction)
                    {
                        StartCoroutine(UpdateConstriuctionTime(playerBuildingInfo.ConstructionCompletionTimestamp - Utils.UnixTimestamp));

                        _lblFuelCost.text     = "-";
                        _lblMineralsCost.text = "-";
                        _lblCreditsCost.text  = "-";
                        _lblTimeCost.text     = "-";
                    }
                    else
                    {
                        _lblCaption.text = string.Format("Ready to upgrade {0} to {1} lvl?", GetBuildingName(), (_buildngLevel + 1));

                        CBConstructionRequirement nextLevelRequirenemts = buildingData.GetConstructionRequirements(_buildngLevel + 1);
                        _lblFuelCost.text     = nextLevelRequirenemts.CostFuel.ToString();
                        _lblMineralsCost.text = nextLevelRequirenemts.CostMinerals.ToString();
                        _lblCreditsCost.text  = nextLevelRequirenemts.CostCredits.ToString();
                        _lblTimeCost.text     = nextLevelRequirenemts.BuildTime == 0 ? "instant" : Utils.FormatTime(nextLevelRequirenemts.BuildTime);                           //TODO: setup correct "instant" text

                        canUpgrade = true;

                        if (Global.Instance.Player.Resources.Fuel < nextLevelRequirenemts.CostFuel)
                        {
                            _lblFuelCost.color = Color.red;
                            canUpgrade         = false;
                        }
                        else
                        {
                            _lblFuelCost.color = Color.white;
                        }
                        if (Global.Instance.Player.Resources.Minerals < nextLevelRequirenemts.CostMinerals)
                        {
                            _lblMineralsCost.color = Color.red;
                            canUpgrade             = false;
                        }
                        else
                        {
                            _lblMineralsCost.color = Color.white;
                        }
                        if (Global.Instance.Player.Resources.Credits < nextLevelRequirenemts.CostCredits)
                        {
                            _lblCreditsCost.color = Color.red;
                            canUpgrade            = false;
                        }
                        else
                        {
                            _lblCreditsCost.color = Color.white;
                        }
                    }
                }
            }
        }
        _btnUpgrade.interactable = canUpgrade;
    }