Example #1
0
        public static string GetPlayerTag(PlayerTurnOrder order)
        {
            switch (order)
            {
            case PlayerTurnOrder.First:
                return(Mods.Lua.LuaConstants.FirstPlayer);

            case PlayerTurnOrder.Second:
                return(Mods.Lua.LuaConstants.SecondPlayer);

            default:
                return("");
            }
        }
Example #2
0
        private bool CheckHasPieces(string player)
        {
            PlayerTurnOrder turnOrder = LuaTranslator.GetPlayerFromLua(player);

            for (int p = 0; p < board.Pieces.Count; p++)
            {
                Piece piece = board.Pieces[p];
                if (!piece.IsCaptured && piece.OwnerPlayer == turnOrder)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #3
0
        private bool CheckCanMove(string player)
        {
            PlayerTurnOrder turnOrder = LuaTranslator.GetPlayerFromLua(player);

            for (int p = 0; p < board.Pieces.Count; p++)
            {
                Piece piece = board.Pieces[p];
                if (!piece.IsCaptured && piece.OwnerPlayer == turnOrder)
                {
                    PieceTurnOptions luaOptions = CacheTurnOptions(p);
                    if (CheckTurnOptionsHasAny(luaOptions))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private NetworkGameState CalculateStartingConditions()
        {
            Debug.LogError("Calculating start");

            PlayerTurnOrder hostOrder = PlayerTurnOrder.Undecided;

            switch (lobby.OrderChoice)
            {
            case LobbyTurnOrderChoice.HostIsFirst:
                hostOrder = PlayerTurnOrder.First;
                break;

            case LobbyTurnOrderChoice.ClientIsFirst:
                hostOrder = PlayerTurnOrder.Second;
                break;

            default: {
                bool hostFirst = UnityEngine.Random.value < 0.5f;
                hostOrder = hostFirst ? PlayerTurnOrder.First : PlayerTurnOrder.Second;
            }
            break;
            }

            NetworkGameState gsc = new NetworkGameState()
            {
                hostPlayerOrder = hostOrder,
                turnNumber      = 0,
                activePlayer    = PlayerTurnOrder.First,
                turnState       = TurnState.None,
            };

            SetupBoard lBoard = new SetupBoard();

            lBoard.Width  = db.BoardDimensions.x;
            lBoard.Length = db.BoardDimensions.y;
            ScriptRuntimeException luaException;

            scripts.CallFunction(db.SetupFunction, lBoard, out luaException);
            if (luaException != null)
            {
                throw new BoardSetupException(string.Format("Board setup exception: exception in Lua code: {0}", luaException.DecoratedMessage));
            }

            if (lBoard.NumPieces == 0)
            {
                throw new BoardSetupException("Board setup exception: No piece created");
            }
            HashSet <IntVector2> takenPositions = new HashSet <IntVector2>();
            bool anyPlayer1 = false;
            bool anyPlayer2 = false;

            List <NetworkGameStatePiece> pieceList = new List <NetworkGameStatePiece>();

            for (int p = 1; p <= lBoard.NumPieces; p++)
            {
                SetupPiece      lPiece = lBoard.GetPiece(p);
                IntVector2      pos    = TranslatePosition(lPiece, p, takenPositions);
                PlayerTurnOrder player = TranslatePlayer(lPiece, p);
                switch (player)
                {
                case PlayerTurnOrder.First:
                    anyPlayer1 = true;
                    break;

                case PlayerTurnOrder.Second:
                    anyPlayer2 = true;
                    break;
                }
                int prototype = TranslatePrototype(lPiece, p);
                NetworkGameStatePiece piece = new NetworkGameStatePiece()
                {
                    prototypeID      = prototype,
                    owner            = player,
                    position         = pos,
                    isCaptured       = false,
                    numberMovesTaken = 0,
                };
                pieceList.Add(piece);
            }

            if (!anyPlayer1)
            {
                throw new BoardSetupException("Board setup exception: First player given no pieces");
            }
            else if (!anyPlayer2)
            {
                throw new BoardSetupException("Board setup exception: Second player given no pieces");
            }

            gsc.pieces = pieceList.ToArray();

            return(gsc);
        }
 public CheckCalcArgs(int kingIndex, IntVector2 testPosition, PlayerTurnOrder activePlayer)
 {
     this.kingIndex    = kingIndex;
     this.testPosition = testPosition;
     this.activePlayer = activePlayer;
 }
Example #6
0
 protected override void OnPlayerAdded(ServerCharacterInfo toon)
 {
     base.OnPlayerAdded(toon);
     PlayerTurnOrder.Remove(toon.ID);
     PlayerTurnOrder.Add(toon.ID);
 }