예제 #1
0
    /// <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]);
        }
    }
예제 #2
0
        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));
        }
예제 #3
0
 public static int OrderOf(PTPlayer player)
 {
     return(orderOfPlayers.FindIndex(element => element.Equals(player)));
 }
예제 #4
0
 protected abstract IEnumerator TurnEnd(PTPlayer player);
예제 #5
0
 protected abstract IEnumerator TurnStart(PTPlayer player);
예제 #6
0
 protected abstract bool TurnCanEnd(PTPlayer player);
예제 #7
0
 protected abstract bool TurnCanStart(PTPlayer player);
예제 #8
0
 protected abstract bool allowOwnershipReplaceWith(PTPlayer player);
예제 #9
0
 protected abstract bool allowOwnershipRemove(PTPlayer player);
예제 #10
0
 protected abstract bool allowOwnershipAdd(PTPlayer player);
예제 #11
0
 protected override bool TurnCanEnd(PTPlayer player)
 {
     return(player.GetComponent <WarPlayer>().hasFlipped);
 }
예제 #12
0
 protected override IEnumerator TurnStart(PTPlayer player)
 {
     currentPlayer = player;
     Debug.Log("It's" + player.name + "'s turn");
     yield return(null);
 }
예제 #13
0
 protected override IEnumerator TurnEnd(PTPlayer player)
 {
     player.GetComponent <WarPlayer>().hasFlipped = false;
     yield return(null);
 }
예제 #14
0
 protected override bool TurnCanStart(PTPlayer player)
 {
     return(true);
 }