示例#1
0
    public void CreateLocalPlayer(LudoType playerType, string playerName, BoardPlayer boardPlayer, BoardPlayerUI boardPlayerUI)
    {
        var player = new LocalPlayer(playerType, playerName, boardPlayer, boardPlayerUI);

        rulesManager.AddPlayer(player);
        players.Add(player);
    }
示例#2
0
    public int GetOuterPathTileNo(PlayerType playerType, int tilesTraveled, int tiles = 0)
    {
        int startingTileNo = GetStartingTileNo(playerType);
        int tilesReached   = CalculateOuterPathTileNo(startingTileNo, tilesTraveled + tiles);

        return(tilesReached);
    }
示例#3
0
    public Vector2 GetInnerTilePosition(PlayerType playerType, int tileIndex)
    {
        int row = TileManager.Instance.GetInnerTileRowNo(playerType, tileIndex);
        int col = TileManager.Instance.GetInnerTileColNo(playerType, tileIndex);

        return(tile_0_0.transform.position + new Vector3(col * tileWidth, row * tileHeight, 0));
    }
示例#4
0
    // Temp disabled, waiting for server implementation
    /*public*/
    private void CreateOnlinePlayer(LudoType playerType)
    {
        var player = new OnlinePlayer(playerType);

        //rulesManager.AddPlayer(player);
        players.Add(player);
    }
示例#5
0
    public BoardPlayer CreatePlayer(LudoType playerType)
    {
        BoardPlayer player = new BoardPlayer(playerType);

        boardPlayers.Add(new BoardPlayerInfo(player, playerType, 0)); // TODO update starting tile use tile manager
        return(player);
    }
示例#6
0
 public Vector2 GetNextTilePosition(PlayerType playerType, int tilesTraveled)
 {
     if (TileManager.Instance.IsInnerTile(tilesTraveled + 1))
     {
         return(GetNextInnerTilePosition(playerType, tilesTraveled));
     }
     return(GetTilePosition(TileManager.Instance.GetNextOuterPathTileNo(playerType, tilesTraveled)));
 }
示例#7
0
 public void InitTwoPlayerBoard(LudoType bottomPlayerType, string player1Name, string player2Name)
 {
     RotateBoard(bottomPlayerType);
     UpdatePlayerName(0, player1Name);
     DisablePlayer(1);
     UpdatePlayerName(2, player2Name);
     DisablePlayer(3);
 }
示例#8
0
    private void CreateLocalPlayer(LudoType playerType, string playerName)
    {
        BoardPlayerUI boardPlayerUI = boardUI.GetPlayer(playerType);
        BoardPlayer   boardPlayer   = board.CreatePlayer(playerType);

        boardPlayerUI.SetUITileManager(uiTileManager);
        playerManager.CreateLocalPlayer(playerType, playerName, boardPlayer, boardPlayerUI);
    }
示例#9
0
 private void InitPawns(PlayerType playerType)
 {
     for (int i = 0; i < pawns.Length; i++)
     {
         pawns[i].Init(playerType, new PawnUIID(i));
         slots[i].PutPawnInSlot(pawns[i]);
     }
 }
示例#10
0
 public LocalPlayer(LudoType playerType, string playerName, BoardPlayer boardPlayer, BoardPlayerUI boardPlayerUI)
 {
     playerBoardType    = playerType;
     this.playerName    = playerName;
     playerOriginalType = playerType;
     this.boardPlayer   = boardPlayer;
     this.boardPlayerUI = boardPlayerUI;
     InitPawnData();
 }
示例#11
0
    public int ConvertTileNoToTilesTraveled(PlayerType playerType, int tileNo)
    {
        int startingTileNo = GetStartingTileNo(playerType);

        if (tileNo >= startingTileNo)
        {
            return(tileNo - startingTileNo + 1);
        }
        return(Constants.Tiles.TotalTilesInOuterPath - startingTileNo + tileNo);
    }
示例#12
0
    private void CreateBoardWithPawnSelected(LudoType pawn)
    {
        LudoType player1Type = pawn;
        LudoType player2Type = (LudoType)(((int)pawn + 2) % (int)LudoType.END);

        Debugger.Log("PlayerSelectedPawn player1Type:" + player1Type + " player2Type:" + player2Type);
        CreateTwoPlayerBoard(player1Type, player2Type, "You", "Opponent");
        TileManager.Instance.SetBottomLeftPlayer(player1Type);
        gameState = GameState.InitGameBoard;
    }
示例#13
0
 public BoardPlayerUI GetPlayer(LudoType playerType)
 {
     foreach (var player in boardPlayers)
     {
         if (player.playerType == playerType)
         {
             return(player);
         }
     }
     return(null);
 }
示例#14
0
    public int GetInnerTileRowNo(PlayerType playerType, int innerTileIndex)
    {
        int row = GetOuterPathRowNo(GetStartingInnerTileNo(playerType));

        switch (GetPlayerIndex(playerType))
        {
        case 0: row += innerTileIndex; break;     // Bottom player

        case 2: row -= innerTileIndex; break;     // Top Player
        }
        return(row);
    }
示例#15
0
    public int GetInnerTileColNo(PlayerType playerType, int innerTileIndex)
    {
        int col = GetOuterPathColNo(GetStartingInnerTileNo(playerType));

        switch (GetPlayerIndex(playerType))
        {
        case 1: col += innerTileIndex; break;     // Left Player

        case 3: col -= innerTileIndex; break;     // Right Player
        }
        return(col);
    }
示例#16
0
    private void UpdatePlayers(LudoType bottomLeftPlayer)
    {
        LudoType playerType = bottomLeftPlayer;

        for (int i = 0; i < boardPlayers.Length; i++)
        {
            boardPlayers[i].Init(playerType);
            playerType++;
            if (playerType == LudoType.END)
            {
                playerType = 0;
            }
        }
    }
示例#17
0
    public Vector2 GetStartingTilePositionFor(PlayerType playerType)
    {
        switch (TileManager.Instance.GetPlayerIndex(playerType))
        {
        case 0: return(GetBottomLeftPlayerStartingTile());

        case 1: return(GetTopLeftPlayerStartingTile());

        case 2: return(GetTopRightPlayerStartingTile());

        case 3: return(GetBottomRightPlayerStartingTile());
        }
        return(Vector2.zero);
    }
示例#18
0
    public int GetPlayerIndex(PlayerType playerType)
    {
        // Consider BottomLeftPlayer:2
        // PlayerType:2 => 2 - 2               = 0
        // PlayerType:3 => 3 - 2               = 1
        // PlayerType:0 => 0 - 2 = -2 => 4 - 2 = 2
        // PlayerType:1 => 1 - 2 = -1 => 4 - 1 = 3
        int player = (int)playerType - (int)bottomLeftPlayer;

        if (player < 0)
        {
            player += (int)PlayerType.END;
        }
        return(player);
    }
示例#19
0
    private Vector2 GetNextInnerTilePosition(PlayerType playerType, int tilesTraveled, int tiles = 1)
    {
        int     noOfInnerTilesReached     = tilesTraveled + tiles - Constants.Tiles.InnerTileStarting;
        Vector2 startingInnerTilePosition = GetTilePosition(TileManager.Instance.GetStartingInnerTileNo(playerType));

        switch (TileManager.Instance.GetPlayerIndex(playerType))
        {
        case 0: return(GetPositionToTop(startingInnerTilePosition, noOfInnerTilesReached));    // Go up from first inner tile

        case 1: return(GetPositionToRight(startingInnerTilePosition, noOfInnerTilesReached));  // Go right from first inner tile

        case 2: return(GetPositionToBottom(startingInnerTilePosition, noOfInnerTilesReached)); // Go bottom from first inner tile

        case 3: return(GetPositionToLeft(startingInnerTilePosition, noOfInnerTilesReached));   // Go left from first inner tile
        }
        return(Vector2.zero);
    }
示例#20
0
    private void InternalRotateBoard(LudoType boardType)
    {
        this.boardType = boardType;
        Debugger.Log("Rotate Board : " + boardType);
        switch (boardType)
        {
        case LudoType.Blue:
            board.transform.SetPositionAndRotation(board.transform.position, Quaternion.AngleAxis(0, new Vector3(0, 0, 1)));
            break;

        case LudoType.Yellow:
            board.transform.SetPositionAndRotation(board.transform.position, Quaternion.AngleAxis(90, new Vector3(0, 0, 1)));
            break;

        case LudoType.Red:
            board.transform.SetPositionAndRotation(board.transform.position, Quaternion.AngleAxis(180, new Vector3(0, 0, 1)));
            break;

        case LudoType.Green:
            board.transform.SetPositionAndRotation(board.transform.position, Quaternion.AngleAxis(270, new Vector3(0, 0, 1)));
            break;
        }
        UpdatePlayers(boardType);
    }
示例#21
0
 public BoardPlayer(LudoType playerType)
 {
     PlayerType = playerType;
     CreatePawns();
 }
示例#22
0
 public OnlinePlayer(LudoType playerType)
 {
     playerBoardType = playerType;
     // Player Original type is retrived from server connection
 }
示例#23
0
 public int GetStartingTileNo(PlayerType playerType) => Constants.Tiles.StartingTilesNo[GetPlayerIndex(playerType)];
示例#24
0
 public int GetNextOuterPathTileNo(PlayerType playerType, int tilesTraveled) => GetOuterPathTileNo(playerType, tilesTraveled, 1);
示例#25
0
 private void CreateTwoPlayerBoard(LudoType player1Type, LudoType player2Type, string player1Name, string player2Name)
 {
     boardUI.InitTwoPlayerBoard(player1Type, player1Name, player2Name);
     CreateLocalPlayer(player1Type, player1Name);
     CreateLocalPlayer(player2Type, player2Name);
 }
示例#26
0
 public int GetStartingInnerTileNo(PlayerType playerType) => CalculateOuterPathTileNo(GetStartingTileNo(playerType), Constants.Tiles.InnerTileStarting);
示例#27
0
 public void RotateBoard(LudoType boardType)
 {
     InternalRotateBoard(boardType);
 }
示例#28
0
 public BoardPlayerInfo(BoardPlayer player, LudoType playerType, int startingTile)
 {
     this.player       = player;
     this.playerType   = playerType;
     this.startingTile = startingTile;
 }
示例#29
0
 public void Init(PlayerType playerType)
 {
     InitPawns(playerType);
     this.playerType = playerType;
 }
示例#30
0
 // Start is called before the first frame update
 void Start()
 {
     playerType = PlayerType.Red;
     HideDice();
 }