public Game2048ChessData Clone() { Game2048ChessData data = new Game2048ChessData(); data.value = value; data.isMerge = false; return(data); }
private void OnBuild() { List <Vector2Int> buildChess = BuildChess; foreach (var item in buildChess) { chessboardDic[item] = new Game2048ChessData(); } SwitchState(Game2048GameState.IsGameOver); }
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); }
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; }
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); }
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; } } }