/// <summary> /// Determine the player Order /// </summary> void DeterminePlayerOrder() { PTPlayer[] playerArray = new PTPlayer[PTTableTop.players.Length]; PTTableTop.players.CopyTo(playerArray, 0); //Sort by player by players active in scene System.Array.Sort(playerArray, (a, b) => a.transform.GetSiblingIndex().CompareTo(b.transform.GetSiblingIndex())); int rand = UnityEngine.Random.Range(0, playerArray.Length); for (int i = rand; i < rand + playerArray.Length; ++i) { orderOfPlayers.Add(playerArray[i % playerArray.Length]); } }
private IEnumerator Turn(PTPlayer player) { //Get ready to start yield return(new WaitUntil(() => TurnCanStart(player))); //Turn start try { playedThisRound.Add((PTPlayer)player); } catch { } if (OnTurnStart != null) { OnTurnStart(player); } yield return(TurnStart(player)); //Until turn end yield return(new WaitUntil(() => TurnCanEnd(player))); //Turn end if (OnTurnEnd != null) { OnTurnEnd(player); } yield return(TurnEnd(player)); }
public static int OrderOf(PTPlayer player) { return(orderOfPlayers.FindIndex(element => element.Equals(player))); }
protected abstract IEnumerator TurnEnd(PTPlayer player);
protected abstract IEnumerator TurnStart(PTPlayer player);
protected abstract bool TurnCanEnd(PTPlayer player);
protected abstract bool TurnCanStart(PTPlayer player);
protected abstract bool allowOwnershipReplaceWith(PTPlayer player);
protected abstract bool allowOwnershipRemove(PTPlayer player);
protected abstract bool allowOwnershipAdd(PTPlayer player);
protected override bool TurnCanEnd(PTPlayer player) { return(player.GetComponent <WarPlayer>().hasFlipped); }
protected override IEnumerator TurnStart(PTPlayer player) { currentPlayer = player; Debug.Log("It's" + player.name + "'s turn"); yield return(null); }
protected override IEnumerator TurnEnd(PTPlayer player) { player.GetComponent <WarPlayer>().hasFlipped = false; yield return(null); }
protected override bool TurnCanStart(PTPlayer player) { return(true); }