public void EndOfPlanification(int aTeam) { Unit unit = FindNextUnit(aTeam, myPlayer1ActiveUnitIndex); if (unit == null) { if (aTeam == 1) { myPlayerMatch.SetActiveUnit(null); } else { myPlayer2Match.SetActiveUnit(null); } myPlayer1ActiveUnitIndex = 0; myMatchState = Data.MatchState.RESOLUTION; } else { if (aTeam == 1) { myPlayerMatch.SetActiveUnit(unit); } else { myPlayer2Match.SetActiveUnit(unit); } } }
private IEnumerator GameState() { myMatchState = Data.MatchState.PREPARATION; myMatchStateText.text = "PREPARATION"; myInitiativeOrder = new Unit[myPlayer1Units.Count + myPlayer2Units.Count]; for (int i = 0; i < myPlayer1Units.Count; i++) { myInitiativeOrder[i] = myPlayer1Units[i]; } for (int i = 0; i < myPlayer2Units.Count; i++) { myInitiativeOrder[myPlayer1Units.Count + i] = myPlayer2Units[i]; } for (int i = 0; i < myInitiativeOrder.Length; i++) { Unit temp = myInitiativeOrder[i]; int rand = Random.Range(0, myInitiativeOrder.Length); myInitiativeOrder[i] = myInitiativeOrder[rand]; myInitiativeOrder[rand] = temp; } for (int i = 0; i < myInitiativeOrder.Length; i++) { myInitiativeObject.GetChild(i).GetComponent <RawImage>().color = myInitiativeOrder[i].GetTeam() == 1 ? Color.red : Color.blue; myInitiativeObject.GetChild(i).GetComponentInChildren <Text>().text = "Unit-" + myInitiativeOrder[i].GetIndex(); } yield return(new WaitForSeconds(1)); //turn loop while (myMatchState != Data.MatchState.ENDING) { for (int i = 0; i < myInitiativeOrder.Length; i++) { myInitiativeOrder[i].ResetBeforeTurn(); } myMatchState = Data.MatchState.PLANIFICATION; myMatchStateText.text = "PLANIFICATION PLAYER 1"; //player 1 turn myPlayerMatch.SetCanPlay(true); myPlayerMatch.SetActiveUnit(FindNextUnit(1, 0)); while (myMatchState == Data.MatchState.PLANIFICATION) { yield return(null); } myPlayerMatch.SetCanPlay(false); yield return(new WaitForSeconds(1)); myMatchStateText.text = "PLANIFICATION PLAYER 2"; myMatchState = Data.MatchState.PLANIFICATION; //player 2 turn myPlayer2Match.SetCanPlay(true); myPlayer2Match.SetActiveUnit(FindNextUnit(2, 0)); while (myMatchState == Data.MatchState.PLANIFICATION) { yield return(null); } myPlayer2Match.SetCanPlay(false); myMatchStateText.text = "RESOLUTION"; yield return(new WaitForSeconds(1)); bool resolve = true; Unit[] tempUnit = new Unit[myInitiativeOrder.Length]; tempUnit[0] = myInitiativeOrder[0]; int unitAdded = 0; bool inTurn = true; while (inTurn) { while (resolve) { bool allResolved = true; for (int i = 0; i < unitAdded + 1; i++) { if (!tempUnit[i].Resolve()) { allResolved = false; } } if (allResolved) { resolve = false; } yield return(null); } for (int i = 0; i < unitAdded + 1; i++) { tempUnit[i].NextStep(); } if (unitAdded < myInitiativeOrder.Length - 1) { unitAdded++; tempUnit[unitAdded] = myInitiativeOrder[unitAdded]; resolve = true; } else { bool allFinished = true; for (int i = 0; i < unitAdded + 1; i++) { if (!tempUnit[i].GetMovementFinished()) { resolve = true; allFinished = false; } } if (allFinished) { resolve = false; inTurn = false; } } } yield return(new WaitForSeconds(1)); } }