public void FixedUpdate()
    {
        foodText.text = player.Food.ToString();
        woodText.text = player.Wood.ToString();
        goldText.text = player.Gold.ToString();

        dispatchableFarmersText.text = "可调遣农夫:" + player.DispatchableFarmer;
        maxFarmersText.text          = "最大农夫人口数:" + player.MaxFarmerNumber;

#if UNITY_EDITOR
        if (Input.GetKey(KeyCode.Q))
        {
            player.ChangeResource(GameResourceType.Gold, 10);
        }
#endif
    }
Exemplo n.º 2
0
        /// <summary>
        ///     派遣单位
        /// </summary>
        protected void DispatchUnits()
        {
            //TODO mid
            var sendRoad = Road.Mid;

            var sendArray = new int[aiAvailableUnits.Length];

            // int maxSendIndex = 0;
            for (var i = 0; i < sendArray.Length; i++)
            {
                sendArray[i] = GetUnitMaxSend(aiAvailableUnits[i]);
            }

            Unit sendUnit;
            var  probability = Random.Range(0f, 1f);

            if (probability < 0.5f)
            {
                sendUnit = aiAvailableUnits[Array.IndexOf(sendArray, sendArray.Max())];
            }
            else
            {
                sendUnit = aiAvailableUnits[Random.Range(0, aiAvailableUnits.Length)];
            }


            //消耗木材、食物资源计算
            var foodAndWoodSend = aiPlayer.Food / sendUnit.costFood > aiPlayer.Wood / sendUnit.costWood
                ? aiPlayer.Wood / sendUnit.costWood
                : aiPlayer.Food / sendUnit.costFood;
            //派遣数量随机
            var foodAndWoodSendNumber = Random.Range((int)Mathf.Ceil(foodAndWoodSend * 0.5f), foodAndWoodSend);

            //消耗金矿资源计算
            var goldSend = aiPlayer.Gold / sendUnit.costGold;
            //派遣数量随机
            var goldSendNumber = Random.Range((int)Mathf.Ceil(goldSend * 0.5f), goldSend);


            var costFood = foodAndWoodSendNumber * sendUnit.costFood;
            var costWood = foodAndWoodSendNumber * sendUnit.costWood;
            var costGold = goldSendNumber * sendUnit.costGold;


            aiPlayer.ChangeResource(GameResourceType.Food, -costFood);
            aiPlayer.ChangeResource(GameResourceType.Wood, -costWood);
            aiPlayer.ChangeResource(GameResourceType.Gold, -costGold);

            aiPlayer.SetUnits(RoadToTransform(sendRoad).position, Array.IndexOf(aiAvailableUnits, sendUnit), sendRoad,
                              goldSendNumber + foodAndWoodSendNumber);
        }
        public void AddClick(bool isFoodAndWood)
        {
            // 尝试分配资源
            if (isFoodAndWood)
            {
                try
                {
                    player.ChangeResource(GameResourceType.Food, -unit.costFood);
                    player.ChangeResource(GameResourceType.Wood, -unit.costWood);
                }
                catch (GameException e)
                {
                    if (e.GameResourceType == GameResourceType.Wood)
                    {
                        player.ChangeResource(GameResourceType.Food, unit.costFood);
                    }

                    return;
                }
            }
            else
            {
                try
                {
                    player.ChangeResource(GameResourceType.Gold, -unit.costGold);
                }
                catch (GameException)
                {
                    return;
                }
            }

            UnitDispatchNumber++;

            unitNumberText.gameObject.SetActive(true);
            unitNumberText.text = UnitDispatchNumber.ToString();
            unitSetIndicator.gameObject.SetActive(true);
            unitRemoveButton.gameObject.SetActive(true);

            _unitSelectStack.Push(isFoodAndWood);
        }
        public void AddClick(bool isFoodAndWood)
        {
            if (UnitDispatchNumber >= onceMax)
            {
                return;
            }

            dispatchManagerUI.IsInDispatching = true;
            try
            {
                spriteIndicatorUI.UnitSprite =
                    unit.gameObject.transform.Find("Character").GetComponent <SpriteRenderer>().sprite;
                spriteIndicatorUI.transform.localScale = unit.gameObject.transform.Find("Character").transform.localScale;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            spriteIndicatorUI.gameObject.SetActive(true);

            // 尝试分配资源
            if (isFoodAndWood)
            {
                try
                {
                    player.ChangeResource(GameResourceType.Food, -unit.costFood);
                    player.ChangeResource(GameResourceType.Wood, -unit.costWood);
                }
                catch (GameException e)
                {
                    if (e.GameResourceType == GameResourceType.Wood)
                    {
                        player.ChangeResource(GameResourceType.Food, unit.costFood);
                    }

                    return;
                }
            }
            else
            {
                try
                {
                    player.ChangeResource(GameResourceType.Gold, -unit.costGold);
                }
                catch (GameException)
                {
                    return;
                }
            }

            UnitDispatchNumber++;

            unitNumberText?.gameObject.SetActive(true);
            ShowStackNumber();

            unitSetIndicator.gameObject.SetActive(true);
            unitRemoveButton.gameObject.SetActive(true);

            UnitSelectStack.Push(isFoodAndWood);
        }