Example #1
0
 private bool SimulateIfAllPossibleMovesMakeCheck(EPlayerType player)
 {
     Debug.Assert(State != EGameState.CHECK, "You cannot use this method if Check");
     for (int i = 0; i < 8; i++)
     {
         for (int j = 0; j < 8; j++)
         {
             Piece piece = mMap[i, j];
             if (piece != null && piece.Player == player)
             {
                 List <Move> moves = piece.PossibleMoves;
                 foreach (Move move in moves)
                 {
                     int xTo = move.X;
                     int yTo = move.Y;
                     if (!SimulateIfCheckWhenGoToThere(player, j, i, xTo, yTo))
                     {
                         return(false);
                     }
                 }
             }
         }
     }
     return(true);
 }
Example #2
0
        /// <summary>
        /// Bot イメージを取得する
        /// </summary>
        /// <param name="player"></param>
        /// <returns></returns>
        private Image GetBotImage(EPlayerType player)
        {
            // 該当するイメージのインデックス
            ECellImage?cellImageIndex = null;

            // 所有者で分岐
            switch (player)
            {
            case EPlayerType.PLAYER1:
                cellImageIndex = ECellImage.PLAYER_1;
                break;

            case EPlayerType.PLAYER2:
                cellImageIndex = ECellImage.PLAYER_2;
                break;

            case EPlayerType.PLAYER3:
                cellImageIndex = ECellImage.PLAYER_3;
                break;

            case EPlayerType.PLAYER4:
                cellImageIndex = ECellImage.PLAYER_4;
                break;
            }

            // 該当なしの場合
            if (!cellImageIndex.HasValue)
            {
                return(null);
            }

            // 結果を返す
            return(_cellImageList[(int)cellImageIndex.Value]);
        }
Example #3
0
    /// <summary>
    /// Each player has number as ID <1,4>
    /// if pPhotonPlayer is null it will be determined in SetType
    /// </summary>
    public void Init(int pPlayerNumber, EPlayerType pPlayerType, PhotonPlayer pPhotonPlayer)
    {
        PreInit();
        gameObject.SetActive(true);

        brainiacs.GameInitInfo.AddPlayer(Info);

        Info.PhotonPlayer = pPhotonPlayer;

        Info.Number = pPlayerNumber;

        AssignColor((EPlayerColor)pPlayerNumber);

        SetName("player " + pPlayerNumber);

        SetType(pPlayerType);

        //if photon player is set then element is being
        //initialized at client
        bool elementCreated = pPhotonPlayer == null;

        //OnElementChanged(elementCreated);

        if (DebugData.TestHero != EHero.None)
        {
            heroSwapper.SetValue((int)DebugData.TestHero);
        }
    }
Example #4
0
 private bool ValidateIfCheck(Piece[,] map, EPlayerType player)
 {
     for (int i = 0; i < 8; i++)
     {
         for (int j = 0; j < 8; j++)
         {
             Piece piece = map[i, j];
             if (piece != null && piece.Player != player)
             {
                 List <Move> moves = piece.PossibleMoves;
                 foreach (Move move in moves)
                 {
                     int   x    = move.X;
                     int   y    = move.Y;
                     Piece king = map[y, x];
                     if (king != null && king.Type == EPieceType.KING && king.Player != piece.Player)
                     {
                         return(true);
                     }
                 }
             }
         }
     }
     return(false);
 }
Example #5
0
    public static PlayerDesc AddPlayer(int id, int force, EPlayerType type, string name)
    {
        if (Pathea.PeGameMgr.IsMultiCoop)
        {
            force = 1;
        }

        int index = Instance.GetPlayerIndex(id);

        if (-1 == index)
        {
            PlayerDesc desc = new PlayerDesc();
            desc.ID    = id;
            desc.Force = force;
            desc.Type  = type;
            desc.Name  = name;
            Instance.AddPlayerDesc(desc);
            return(desc);
        }
        else
        {
            Instance.m_Players[index].Force = force;
            return(Instance.m_Players[index]);
        }
    }
Example #6
0
 public void SendCardsToWinner(EPlayerType winnerType)
 {
     foreach (GameCardController gameCard in m_ActiveGameCards)
     {
         gameCard.SendCardToWinner(m_PlayerType, winnerType);
     }
     m_CardsLeftAmount.text = m_Deck.Count.ToString();
     m_ActiveGameCards.Clear();
 }
Example #7
0
 internal void Update(PlayerInitInfo pNewInfo)
 {
     Number       = pNewInfo.Number;
     Hero         = pNewInfo.Hero;
     Name         = pNewInfo.Name;
     Color        = pNewInfo.Color;
     PlayerType   = pNewInfo.PlayerType;
     PhotonPlayer = pNewInfo.PhotonPlayer;
     IsReady      = pNewInfo.IsReady;
 }
Example #8
0
 public void SetHero(EPlayerType ePlayerType, GameEntity entity)
 {
     if (entity == null)
     {
         heroMap.Remove(ePlayerType);
     }
     else
     {
         heroMap[ePlayerType] = entity;
     }
 }
Example #9
0
 public void ToggleTurn()
 {
     if (Turn == EPlayerType.BLACK)
     {
         Turn = EPlayerType.WHITE;
     }
     else
     {
         Turn = EPlayerType.BLACK;
     }
 }
Example #10
0
 private bool ValidateIfStalemate(Piece[,] map, EPlayerType player)
 {
     Debug.Assert(State != EGameState.CHECK, "Cannot be Stalemate if checked");
     if (CountPossibleMoves(player) == 0)
     {
         return(true);
     }
     else if (SimulateIfAllPossibleMovesMakeCheck(player))
     {
         return(true);
     }
     return(false);
 }
Example #11
0
 private bool ValidateIfCheckmate(Piece[,] map, EPlayerType player)
 {
     Debug.Assert(State == EGameState.CHECK, "Cannot be Checkmate if not checked");
     if (CountPossibleMoves(player) == 0)
     {
         return(true);
     }
     else if (!SimulateIfCheckCanbeSolved(player))
     {
         return(true);
     }
     return(false);
 }
Example #12
0
 //DEBUG INIT
 public PlayerInitInfo(
     int pNumber, EHero pHero, string pName,
     EPlayerColor pColor, EPlayerType pPlayerType,
     EKeyset pKeyset            = EKeyset.None,
     PhotonPlayer pPhotonPlayer = null)
 {
     Number       = pNumber;
     Hero         = pHero;
     Name         = pName;
     Color        = pColor;
     PlayerType   = pPlayerType;
     PhotonPlayer = pPhotonPlayer;
     Keyset       = pKeyset;
 }
Example #13
0
        public bool SimulateIfCheckWhenGoToThere(EPlayerType player, int xFrom, int yFrom, int xTo, int yTo)
        {
            Debug.Assert(xFrom >= 0 || xFrom <= 7, "Wrong x of start position!");
            Debug.Assert(yFrom >= 0 || yFrom <= 7, "Wrong y of start position!");
            Debug.Assert(xTo >= 0 || xTo <= 7, "Wrong x of end position!");
            Debug.Assert(yTo >= 0 || yTo <= 7, "Wrong y of end position!");
            Piece[,] map = CopyMap(mMap);
            Piece piece = map[yFrom, xFrom];

            Debug.Assert(piece != null, "You cannot use this method for the position of no piece!");

            NormalMove(xFrom, yFrom, xTo, yTo, map);
            CalculateMoves(map);
            return(ValidateIfCheck(map, player));
        }
Example #14
0
    //MASTER
    private void AddPlayer(EPlayerType pType)
    {
        btnGroupAddPlayer.transform.parent = null;

        UIGameSetupPlayerEl addedElement = AddPlayerElement();

        addedElement.Init(players.IndexOf(addedElement) + 1, pType, null);


        //todo: check player count (max 4?)
        //keep btnAddPlayer at the end of the list
        btnGroupAddPlayer.transform.parent = playersHolder;

        OnPlayersChanged();
    }
Example #15
0
        public GameEntity CreateHero(EHeroType heroType, EPlayerType playerType = EPlayerType.Player01)
        {
            string code   = EntityUtil.GetHeroCode(heroType);
            var    entity = CreateEntity(code);

            var playerDataCom = entity.GetComponent(GameComponentsLookup.PlayerData) as PlayerDataComponent;

            if (playerDataCom != null)
            {
                playerDataCom.playerType = playerType;
                EntityCache.GetInstance().SetHero(playerType, entity);
            }

            return(entity);
        }
Example #16
0
        private void CastlingMove(EPlayerType player, int xRook, Piece[,] map)
        {
            Debug.Assert(xRook == 0 || xRook == 7, $"Wrong Rook x position. xRook: {xRook}");

            if (player == EPlayerType.BLACK)
            {
                if (xRook == 0)
                {
                    map[0, 2] = map[0, 4];
                    map[0, 4] = null;
                    map[0, 2].SetMoved();
                    map[0, 3] = map[0, 0];
                    map[0, 0] = null;
                    map[0, 3].SetMoved();
                }
                else
                {
                    map[0, 6] = map[0, 4];
                    map[0, 4] = null;
                    map[0, 6].SetMoved();
                    map[0, 5] = map[0, 7];
                    map[0, 7] = null;
                    map[0, 5].SetMoved();
                }
            }
            else
            {
                if (xRook == 0)
                {
                    map[7, 2] = map[7, 4];
                    map[7, 4] = null;
                    map[7, 2].SetMoved();
                    map[7, 3] = map[7, 0];
                    map[7, 0] = null;
                    map[7, 3].SetMoved();
                }
                else
                {
                    map[7, 6] = map[7, 4];
                    map[7, 4] = null;
                    map[7, 6].SetMoved();
                    map[7, 5] = map[7, 7];
                    map[7, 7] = null;
                    map[7, 5].SetMoved();
                }
            }
        }
Example #17
0
        private int CountPossibleMoves(EPlayerType player)
        {
            int cnt = 0;

            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    Piece piece = GetPieceOrNull(j, i);
                    if (piece != null && piece.Player == player)
                    {
                        cnt += piece.PossibleMoves.Count;
                    }
                }
            }

            return(cnt);
        }
Example #18
0
    private void SetType(EPlayerType pPlayerType)
    {
        btnRemove.gameObject.SetActive(true);
        Info.PlayerType = pPlayerType;
        bool isRemote = pPlayerType == EPlayerType.RemotePlayer;

        if (isRemote)
        {
            if (Info.PhotonPlayer == null)
            {
                playerNameText.text = "WAITING...";
            }
        }
        //todo: even AI needs to have assigned photon player?
        else if (pPlayerType == EPlayerType.LocalPlayer ||
                 pPlayerType == EPlayerType.AI)
        {
            //local player = master
            if (PhotonNetwork.InRoom && !PhotonNetwork.IsMasterClient)
            {
                //client doesnt change local player
            }
            else
            {
                Info.PhotonPlayer = PhotonNetwork.LocalPlayer;
            }
        }

        keySetSwapper.gameObject.SetActive(pPlayerType == EPlayerType.LocalPlayer);

        playerTypeText.text = pPlayerType.ToString();

        //start animation if player is remote and not connected yet
        portraitAnimator.enabled = isRemote && Info.PhotonPlayer == null;
        heroSwapper.SetInteractable(!isRemote);

        //master is always considered ready
        //client ready state is set in Init
        if (!isRemote)
        {
            SetReady(true);
        }
    }
Example #19
0
        protected override void OnDestroy(GameEntity entity)
        {
            if (entity.hasPlayerData)
            {
                EPlayerType playerType = entity.playerData.playerType;
                EntityCache.GetInstance().SetHero(playerType, null);

                //僚机也应该去掉
                if (entity.playerData.wingmans != null)
                {
                    foreach (var wingman in entity.playerData.wingmans)
                    {
                        EntityManager.GetInstance().DestroyEntity(wingman);
                    }
                    entity.playerData.wingmans = null;
                }
            }

            base.OnDestroy(entity);
        }
Example #20
0
 public AccountInfo GetAccountByDocument(EPlayerType ePlayerType, PersonalDocumentType documentType, string serial, string number)
 => Account;
Example #21
0
 public void PutPiece(int x, int y, EPieceType piece, EPlayerType player)
 {
     Debug.Assert(x >= 0 && x <= 7, $"Wrong X position: {x}");
     Debug.Assert(y >= 0 && y <= 7, $"Wrong Y position: {y}");
     mMap[y, x] = new Piece(piece, player);
 }
Example #22
0
        /// <summary>
        /// セルイメージを取得する
        /// </summary>
        /// <param name="cellType"></param>
        /// <param name="ownerPlayer"></param>
        /// <returns></returns>
        private Image GetCellImage(ECellType cellType, EPlayerType ownerPlayer)
        {
            // 該当するイメージのインデックス
            ECellImage cellImageIndex = ECellImage.FLOOR_NONE;

            // セルタイプで分岐
            switch (cellType)
            {
            // 通常床
            case ECellType.FLOOR:
                // 所有者で分岐
                switch (ownerPlayer)
                {
                case EPlayerType.NO_PLAYER:
                    cellImageIndex = ECellImage.FLOOR_NONE;
                    break;

                case EPlayerType.PLAYER1:
                    cellImageIndex = ECellImage.FLOOR_1;
                    break;

                case EPlayerType.PLAYER2:
                    cellImageIndex = ECellImage.FLOOR_2;
                    break;

                case EPlayerType.PLAYER3:
                    cellImageIndex = ECellImage.FLOOR_3;
                    break;

                case EPlayerType.PLAYER4:
                    cellImageIndex = ECellImage.FLOOR_4;
                    break;
                }
                break;

            // スタート台
            case ECellType.START:
                // 所有者で分岐
                switch (ownerPlayer)
                {
                case EPlayerType.NO_PLAYER:
                    cellImageIndex = ECellImage.START_NONE;
                    break;

                case EPlayerType.PLAYER1:
                    cellImageIndex = ECellImage.START_1;
                    break;

                case EPlayerType.PLAYER2:
                    cellImageIndex = ECellImage.START_2;
                    break;

                case EPlayerType.PLAYER3:
                    cellImageIndex = ECellImage.START_3;
                    break;

                case EPlayerType.PLAYER4:
                    cellImageIndex = ECellImage.START_4;
                    break;
                }
                break;

            // 壁
            case ECellType.WALL:
                cellImageIndex = ECellImage.WALL;
                break;

            // 網床
            case ECellType.WIRE_MESH:
                cellImageIndex = ECellImage.WIRE_MESH;
                break;
            }

            // 結果を返す
            return(_cellImageList[(int)cellImageIndex]);
        }
Example #23
0
 public void CastlingMove(EPlayerType player, int xRook)
 {
     Debug.Assert(xRook == 0 || xRook == 7, $"Wrong Rook x position. xRook: {xRook}");
     CastlingMove(player, xRook, mMap);
 }
Example #24
0
 public AccountInfo GetAccountByPhone(EPlayerType ePlayerType, string mobilePhone)
 => Account;
 public PlayerEventArgs(PlayerData playerdata)
 {
     this.Name = playerdata.AgentName;
     this.Type = playerdata.PlayerType;
 }
Example #26
0
 public GameEntity GetHero(EPlayerType ePlayerType = EPlayerType.Player01)
 {
     return(heroMap[ePlayerType]);
 }
Example #27
0
 public static void PutPiece(int x, int y, EPieceType piece, EPlayerType player)
 {
     mBoard.PutPiece(x, y, piece, player);
 }
Example #28
0
 public Piece(EPieceType pieceType, EPlayerType player)
 {
     Type   = pieceType;
     Player = player;
 }
Example #29
0
 /// <summary>
 /// 指定位置の所有プレイヤーを設定する
 /// </summary>
 /// <param name="pos">位置</param>
 /// <param name="playerType">プレイヤー区分</param>
 public void SetOwnerPlayerType(Position pos, EPlayerType playerType)
 {
     OwnerPlayerList[ConvertIndex(pos)] = playerType;
 }