Example #1
0
    public override void OnDeserialize(NetworkReader reader, bool initialState)
    {
        Debug.Log("Deserializing...");
        game = new Game();
        if (initialState)
        {
            game.players      = ListPlayerReaderWriter.ReadListPlayer(reader);
            game.boardHandler = BoardHandlerReaderWriter.ReadBoard(reader);
            recentRoll        = reader.ReadInt32();
            return;
        }

        ulong dirtyBits = reader.ReadPackedUInt64();

        if ((dirtyBits & 1u) != 0u)
        {
            game.players = ListPlayerReaderWriter.ReadListPlayer(reader); // Player list
        }
        if ((dirtyBits & 2u) != 0u)
        {
            game.boardHandler = BoardHandlerReaderWriter.ReadBoard(reader); // Game board
        }
        if ((dirtyBits & 4u) != 0u)
        {
            recentRoll = reader.ReadInt32(); // Recent dice roll
        }
        if ((dirtyBits & 8u) != 0u)
        {
            turnIndex = reader.ReadInt32(); // Turn index
        }
        if ((dirtyBits & 16u) != 0u)
        {
            turnCount = reader.ReadInt32(); // Turn count
        }
    }
Example #2
0
    public override bool OnSerialize(NetworkWriter writer, bool initialState)
    {
        Debug.Log("Serializing...");
        if (initialState)
        {
            ListPlayerReaderWriter.WriteListPlayer(writer, game.players);
            BoardHandlerReaderWriter.WriteBoard(writer, game.boardHandler);
            writer.WriteInt32(recentRoll);
            return(true);
        }

        bool wroteSyncVar = false;

        if ((base.syncVarDirtyBits & 1u) != 0u)
        {
            if (!wroteSyncVar)
            {
                writer.WritePackedUInt64(base.syncVarDirtyBits);
                wroteSyncVar = true;
            }
            ListPlayerReaderWriter.WriteListPlayer(writer, game.players); // Player list
        }

        if ((base.syncVarDirtyBits & 2u) != 0u)
        {
            if (!wroteSyncVar)
            {
                writer.WritePackedUInt64(base.syncVarDirtyBits);
                wroteSyncVar = true;
            }
            BoardHandlerReaderWriter.WriteBoard(writer, game.boardHandler); // Game board
        }

        if ((base.syncVarDirtyBits & 4u) != 0u)
        {
            if (!wroteSyncVar)
            {
                writer.WritePackedUInt64(base.syncVarDirtyBits);
                wroteSyncVar = true;
            }
            writer.WriteInt32(recentRoll); // Recent roll
        }

        if ((base.syncVarDirtyBits & 8u) != 0u)
        {
            if (!wroteSyncVar)
            {
                writer.WritePackedUInt64(base.syncVarDirtyBits);
                wroteSyncVar = true;
            }
            writer.WriteInt32(turnIndex); // Turn index
        }

        if ((base.syncVarDirtyBits & 16u) != 0u)
        {
            if (!wroteSyncVar)
            {
                writer.WritePackedUInt64(base.syncVarDirtyBits);
                wroteSyncVar = true;
            }
            writer.WriteInt32(turnCount); // Turn count
        }

        if (!wroteSyncVar)
        {
            // write zero dirty bits if nothing changed
            writer.WritePackedUInt64(0u);
        }
        return(wroteSyncVar);
    }