Beispiel #1
0
    public static SerializableBoard serializeBoard(Board board)
    {
        int index = 0;

        SerializableBoard serializableBoard = new SerializableBoard(board.tiles.Count);

        foreach (GameObject tile in board.tiles)
        {
            Tile       tileComponent = tile.GetComponent <Tile>();
            GameObject piece         = tileComponent.piece;

            Manager.PieceType pieceType = null;
            if (piece != null)
            {
                Piece pieceComponent = tileComponent.piece.GetComponent <Piece>();
                pieceType = pieceComponent.pieceType;
            }

            serializableBoard.pieces[index++] = serializePieceType(pieceType);
        }

        serializableBoard.score         = board.score;
        serializableBoard.highestTile   = board.highest;
        serializableBoard.spawningScore = board.spawningScore;
        serializableBoard.combo         = board.comboManager.combo;
        serializableBoard.comboTime     = board.comboManager.comboTime;
        serializableBoard.canMakeMove   = board.canMakeMove();

        return(serializableBoard);
    }
Beispiel #2
0
    public static void saveBoard(Board board, string filename)
    {
        Debug.Log("Saving");
        string path = Application.persistentDataPath + "/" + filename;

        SerializableBoard serializedBoard = serializeBoard(board);
        BinaryFormatter   formatter       = new BinaryFormatter();
        FileStream        stream          = new FileStream(path, FileMode.Create);

        formatter.Serialize(stream, serializedBoard);
        stream.Close();
    }
Beispiel #3
0
    public static bool deserializeBoard(SerializableBoard serializableBoard, Board board)
    {
        if (!serializableBoard.canMakeMove)
        {
            return(false);
        }

        int index = 0;

        foreach (SerializablePieceType serializablePieceType in serializableBoard.pieces)
        {
            Manager.PieceType pieceType = deserializePieceType(serializablePieceType);

            GameObject tile          = board.tiles[index++];
            Tile       tileComponent = tile.GetComponent <Tile>();
            GameObject oldPiece      = tileComponent.piece;
            tileComponent.unsetPiece();

            if (oldPiece != null)
            {
                Destroy(oldPiece);
            }

            if (pieceType != null)
            {
                GameObject piece = Manager.instance.createPiece(pieceType);
                piece.transform.localPosition = tile.transform.position;
                tileComponent.setPiece(piece);
                Piece pieceComponent = piece.GetComponent <Piece>();
                pieceComponent.scaleIn.Stop(TweenStopBehavior.Complete);
            }
        }

        board.score                  = serializableBoard.score;
        board.highest                = serializableBoard.highestTile;
        board.spawningScore          = serializableBoard.spawningScore;
        board.comboManager.combo     = serializableBoard.combo;
        board.comboManager.comboTime = serializableBoard.comboTime;

        board.displayScore = board.score;
        Color na = new Color();

        Manager.instance.getPieceColors(board.highest, out board.scoreColor, out na);
        board.comboManager.scale            = board.comboManager.combo > 0 ? 1 : 0;
        board.comboManager.displayComboTime = serializableBoard.comboTime;
        board.comboManager.comboColor       = Manager.instance.getComboColor(Mathf.Max(board.comboManager.combo, 1));

        return(true);
    }
Beispiel #4
0
        public void Serialize_Deserialize_AreTheSame()
        {
            const BoardTile currentPlayer = BoardTile.X;
            var             board         = Board.CreateEmptyBoard(currentPlayer);

            var serializableBoard = SerializableBoard.FromBoard(board);

            // act
            var serializedBoard   = JsonSerializer.Serialize(serializableBoard);
            var deserializedBoard = JsonSerializer.Deserialize <SerializableBoard>(serializedBoard);

            // assert
            Assert.NotNull(deserializedBoard);
            Assert.AreEqual(serializableBoard, deserializedBoard);
            Assert.AreEqual(board, deserializedBoard.ToBoard());
        }
Beispiel #5
0
    public static bool loadBoard(Board board, string filename)
    {
        string path = Application.persistentDataPath + "/" + filename;

        if (!File.Exists(path))
        {
            return(false);
        }

        BinaryFormatter   formatter       = new BinaryFormatter();
        FileStream        stream          = new FileStream(path, FileMode.Open);
        SerializableBoard serializedBoard = (SerializableBoard)formatter.Deserialize(stream);

        stream.Close();

        return(deserializeBoard(serializedBoard, board));
    }