//Load unit info of selected units (bottom left panel) void LoadMultipleFrames(int player) { for (int i = 0; i < 18; i++) { multipleSelectionInfo.transform.GetChild(i).gameObject.SetActive(false); } for (int i = 0; i < selectedUnits.Count; i++) { MeleeWarriorUnitScript unit_mWUS = multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetComponent <MeleeWarriorUnitScript>(); unit_mWUS.id = selectedUnits[i]; multipleSelectionInfo.transform.GetChild(i).gameObject.SetActive(true); multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetComponent <Image>().sprite = units[deployedUnits[selectedUnits[i]].id].icon[player]; multipleSelectionInfo.transform.GetChild(i).GetChild(0).GetChild(0).GetChild(0).localScale = new Vector3((deployedUnits[selectedUnits[i]].currentHP / (float)deployedUnits[selectedUnits[i]].maxHP), 1, 1); } }
//Refresh unit creation queue (bottom left panel) void UpdateQueuePanel(int player) { if (selectedUnits.Count == 0) { return; } //Barracks if (!deployedUnits[selectedUnits[0]].canAttack) { if (control == player) { for (int i = 0; i < 4; i++) { deployInfo.transform.GetChild(3).GetChild(i).gameObject.SetActive(false); } for (int i = 1; i < players[player].queueUnits.Count; i++) { deployInfo.transform.GetChild(3).GetChild(i - 1).gameObject.SetActive(true); MeleeWarriorUnitScript unit_mWUS = deployInfo.transform.GetChild(3).GetChild(i - 1).GetChild(0).GetComponent <MeleeWarriorUnitScript>(); unit_mWUS.owner = player; unit_mWUS.id = i; unit_mWUS.GetComponent <Image>().sprite = units[players[player].queueUnits[i].id].icon[player]; } if (players[player].queueUnits.Count >= 1) { deployInfo.SetActive(true); MeleeWarriorUnitScript unit_mWUS = deployInfo.transform.GetChild(2).GetChild(0).GetComponent <MeleeWarriorUnitScript>(); unit_mWUS.owner = player; unit_mWUS.GetComponent <Image>().sprite = units[players[player].queueUnits[0].id].icon[player]; } else { deployInfo.SetActive(false); } } } else { deployInfo.SetActive(false); } }
//Refresh deployable units buttons (bottom mid panel) public void UpdateDeployableFrames(int player) { for (int i = 0; i < deployMenu[player].transform.childCount; i++) { MeleeWarriorUnitScript unit_mWUS = deployMenu[player].transform.GetChild(i).GetComponent <MeleeWarriorUnitScript>(); Color frameColor = unit_mWUS.transform.GetChild(0).GetComponent <Image>().color; if (CheckIfDeployable(unit_mWUS.id, player)) { frameColor = new Color(frameColor.r, frameColor.g, frameColor.b, 1f); } else { frameColor = new Color(frameColor.r, frameColor.g, frameColor.b, 0.5f); } unit_mWUS.transform.GetChild(0).GetComponent <Image>().color = frameColor; } }
//Create unit in barracks public void SpawnUnit(int unitId, int player) { GameObject newObject = null; deployedUnits.Add(new UnitInstance(deployedUnits.Count, player, newObject = Instantiate(units[unitId].unitPrefab[player], barracks[player].transform.position + (barracks[player].transform.forward * 3f), Quaternion.identity), newObject.AddComponent <NavMeshAgent>(), newObject.GetComponent <Animator>(), units[unitId])); UnitInstance newUnit = deployedUnits[deployedUnits.Count - 1]; MeleeWarriorUnitScript unit_mWUS = newObject.AddComponent <KevinIglesias.MeleeWarriorUnitScript>(); unit_mWUS.coreScript = this; unit_mWUS.guid = deployedUnits.Count - 1; unit_mWUS.id = unitId; unit_mWUS.owner = player; newUnit.navAgent.baseOffset = -0.04f; newUnit.navAgent.radius = 0.075f; newUnit.navAgent.speed = 2.75f; newUnit.navAgent.acceleration = 60f; newUnit.navAgent.stoppingDistance = 0.5f; newUnit.navAgent.obstacleAvoidanceType = ObstacleAvoidanceType.GoodQualityObstacleAvoidance; }
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (mWUS == null) { mWUS = animator.GetComponent <MeleeWarriorUnitScript>(); } if (rb == null) { rb = animator.GetComponent <Rigidbody>(); } //Attack if (mWUS != null) { mWUS.Attack(); } //Avoid being pushed when attacking if (rb != null) { rb.constraints = RigidbodyConstraints.FreezeAll; } }