Пример #1
0
    public Game2048ChessData Clone()
    {
        Game2048ChessData data = new Game2048ChessData();

        data.value   = value;
        data.isMerge = false;
        return(data);
    }
Пример #2
0
    private void OnBuild()
    {
        List <Vector2Int> buildChess = BuildChess;

        foreach (var item in buildChess)
        {
            chessboardDic[item] = new Game2048ChessData();
        }
        SwitchState(Game2048GameState.IsGameOver);
    }
Пример #3
0
    public override bool Equals(object obj)
    {
        if (obj == null)
        {
            return(false);
        }
        Game2048ChessData chessData = obj as Game2048ChessData;

        if (chessData == null)
        {
            return(false);
        }

        return(value == chessData.value);
    }
Пример #4
0
 public Game2048ChessboardData(int[,] chessboard, Game2048GameState gameState)
 {
     chessboardDic = new Dictionary <Vector2Int, Game2048ChessData>();
     for (int i = 0; i < chessboard.GetLength(0); i++)
     {
         for (int j = 0; j < chessboard.GetLength(1); j++)
         {
             Game2048ChessData chessData = null;
             if (chessboard[j, i] != 0)
             {
                 chessData = new Game2048ChessData(chessboard[j, i]);
             }
             chessboardDic.Add(new Vector2Int(i, j), chessData);
         }
     }
     this.gameState = gameState;
 }
Пример #5
0
 public Game2048Chessboard.MovieState GetMovieState(Game2048ChessData chessData)
 {
     if (chessData == null)
     {
         return(Game2048Chessboard.MovieState.Movie);
     }
     if (chessData.isMerge)
     {
         return(Game2048Chessboard.MovieState.Stop);
     }
     if (chessData.value == value)
     {
         return(Game2048Chessboard.MovieState.Merge);
     }
     if (chessData.value != value)
     {
         return(Game2048Chessboard.MovieState.Stop);
     }
     return(Game2048Chessboard.MovieState.Empty);
 }
Пример #6
0
    private void Movie(Dictionary <Vector2Int, Game2048ChessData> chessboard, Vector2Int current, List <Vector2Int> path)
    {
        Game2048ChessData chessData = chessboard[current];

        if (chessData == null)
        {
            return;
        }

        for (int i = 0; i < path.Count; i++)
        {
            Vector2Int target = path[i];

            Game2048Chessboard.MovieState movieState = chessData.GetMovieState(chessboard[path[i]]);
            switch (movieState)
            {
            case Game2048Chessboard.MovieState.Empty:
                Debug.LogError("有问题");
                return;

            case Game2048Chessboard.MovieState.Movie:
                chessboard[current] = null;
                chessboard[target]  = chessData;
                current             = target;
                break;

            case Game2048Chessboard.MovieState.Stop:
                return;

            case Game2048Chessboard.MovieState.Merge:
                chessData.Merge();

                chessboard[current] = null;
                chessboard[target]  = chessData;
                return;
            }
        }
    }