Beispiel #1
0
 public void Initialize(Vector3 position, DataManager.Team team, DataManager.PieceName pieceName, DataManager.PieceDetail pieceDetail)
 {
     Position    = position;
     Team        = team;
     PieceName   = pieceName;
     PieceDetail = pieceDetail;
 }
        public List <GameObject> InstantiateWhite()
        {
            List <GameObject> myPieces = new List <GameObject>();

            try
            {
                int i = 0;
                for (int z = 7; z > 5; z--)
                {
                    for (int x = 0; x < 8; x++)
                    {
                        float                 distance  = DataManager.ChessPieceInfo.distance;
                        Quaternion            rot       = DataManager.ChessPieceInfo.whiteRotation;
                        DataManager.Team      team      = board[x, z].Team;
                        DataManager.PieceName pieceName = board[x, z].PieceName;
                        GameObject            obj       = PhotonNetwork.Instantiate
                                                          (
                            FindObjectNameByEnum(team, pieceName),
                            new Vector3(x * distance, chessBoardStartHeight, z * distance),
                            rot,
                            (byte)0
                                                          );
                        obj.name = board[x, z].PieceName.ToString();
                        obj.AddComponent <InputSender_PC>(); // todo
                        ChessPieceState state = obj.GetComponent <ChessPieceState>();
                        state.Initialize(new Vector3(x * distance, 0, z * distance), (Utility.DataManager.Team)team, (Utility.DataManager.PieceName)pieceName, Utility.DataManager.WhitePiece[i++]);
                        myPieces.Add(obj);
                    }
                }
            }
            catch (ArgumentException) { DoNothing(); }
            return(myPieces);
        }
        private string FindBlackObjectNameByPieceName(DataManager.PieceName pieceName)
        {
            string result = "";

            switch (pieceName)
            {
            case DataManager.PieceName.King:
                result = blackKing;
                break;

            case DataManager.PieceName.Queen:
                result = blackQueen;
                break;

            case DataManager.PieceName.Rook:
                result = blackRook;
                break;

            case DataManager.PieceName.Knight:
                result = blackKnight;
                break;

            case DataManager.PieceName.Bishop:
                result = blackBishop;
                break;

            case DataManager.PieceName.Pawn:
                result = blackPawn;
                break;
            }
            return(result);
        }
        private string FindWhiteObjectNameByPieceName(DataManager.PieceName pieceName)
        {
            string result = "";

            switch (pieceName)
            {
            case DataManager.PieceName.King:
                result = whiteKing;
                break;

            case DataManager.PieceName.Queen:
                result = whiteQueen;
                break;

            case DataManager.PieceName.Rook:
                result = whiteRook;
                break;

            case DataManager.PieceName.Knight:
                result = whiteKnight;
                break;

            case DataManager.PieceName.Bishop:
                result = whiteBishop;
                break;

            case DataManager.PieceName.Pawn:
                result = whitePawn;
                break;
            }
            return(result);
        }
        private string FindObjectNameByEnum(DataManager.Team team, DataManager.PieceName pieceName)
        {
            string result = "";

            switch (team)
            {
            case DataManager.Team.White:
                result = FindWhiteObjectNameByPieceName(pieceName);
                break;

            case DataManager.Team.Black:
                result = FindBlackObjectNameByPieceName(pieceName);
                break;

            case DataManager.Team.None:
                throw new Exception("Can't return gameobject witch has NONE tag");
            }
            return(result);
        }
        public List <Vector2> GetList(ChessPieceState state, DataManager.Team team)
        {
            this.currentTeam = team;
            this.pieceState  = state;
            DataManager.PieceName name = pieceState.PieceName;
            Vector3 position           = pieceState.Position;
            int     x = (int)(position.x / distance);
            int     z = (int)(position.z / distance);

            if (position.x % distance >= 0.03f)
            {
                x++;
            }
            if (position.z % distance >= 0.03f)
            {
                z++;
            }

            List <Vector2> result = new List <Vector2>();

            switch (name)
            {
            case DataManager.PieceName.King:
                result = King(x, z);
                break;

            case DataManager.PieceName.Queen:
                result = Queen(x, z);
                break;

            case DataManager.PieceName.Rook:
                result = Rook(x, z);
                break;

            case DataManager.PieceName.Bishop:
                result = Bishop(x, z);
                break;

            case DataManager.PieceName.Knight:
                result = Knight(x, z);
                break;

            case DataManager.PieceName.Pawn:
                result = Pawn(x, z);
                break;
            }
            #region debugging codes

            /*
             * if (result.Count != 0)
             *  Debug.Log("Exist");
             * else
             *  Debug.Log("GetList : No Place available");
             * int i = 0;
             * foreach (Vector2 elem in result)
             * {
             *  Debug.Log($"{++i} : x = {elem.x}, z = {elem.y}");
             * }
             */
            #endregion
            return(result);
        }
        public void ChangeState(Vector3 firstPosition, Vector3 lastPositon)
        {
            float distance = DataManager.ChessPieceInfo.distance;

            // 첫번째
            int first_xOffset = (int)(firstPosition.x / distance);
            int first_zOffset = (int)(firstPosition.z / distance);

            #region catch bugs
            float remain_x = firstPosition.x % distance;
            float remain_z = firstPosition.z % distance;
            if (remain_x >= 0.03f)
            {
                first_xOffset++;
            }
            if (remain_z >= 0.03f)
            {
                first_zOffset++;
            }
            #endregion

            ChessPieceInformation firstState = board[first_xOffset, first_zOffset];

            DataManager.Team      first_team      = firstState.Team;
            DataManager.PieceName first_pieceName = firstState.PieceName;

            // 두번째
            int last_xOffset = (int)(lastPositon.x / distance);
            int last_zOffset = (int)(lastPositon.z / distance);

            #region catch bugs 2
            float re_x = lastPositon.x % distance;
            float re_z = lastPositon.z % distance;
            if (re_x >= 0.03f)
            {
                last_xOffset++;
            }
            if (re_z >= 0.03f)
            {
                last_zOffset++;
            }
            #endregion

            ChessPieceInformation lastState = board[last_xOffset, last_zOffset];

            DataManager.Team      last_team      = lastState.Team;
            DataManager.PieceName last_pieceName = lastState.PieceName;

            if (firstState.Team != lastState.Team && lastState.Team != DataManager.Team.None)
            {
                // kill piece
                // GameObject.FindGameObjectWithTag("GameManager").GetComponent<NetworkManager>().SetActiveFalseObject(last_team, last_pieceName, last_xOffset, last_zOffset);
                // GetOrCreateManager<NetworkManager>().
                board[first_xOffset, first_zOffset] = new ChessPieceInformation(DataManager.Team.None, DataManager.PieceName.None);
                board[last_xOffset, last_zOffset]   = firstState;
            }
            else
            {
                // switching
                board[first_xOffset, first_zOffset] = lastState;
                board[last_xOffset, last_zOffset]   = firstState;
            }
        }
Beispiel #8
0
 public ChessPieceInformation(DataManager.Team team, DataManager.PieceName pieceName)
 {
     Team      = team;
     PieceName = pieceName;
 }