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 }
/// <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); }