예제 #1
0
        /// <summary>
        /// Default constructor gets the current gamestate
        /// </summary>
        public GameState()
        {
            Type  = PacketType.GameState;
            State = new Diag.GameState(true);

            GetState();
        }
예제 #2
0
        /// <summary>
        /// Deserialization constructor
        /// </summary>
        /// <param name="data">The GameState packet received from the server</param>
        public GameState(byte[] data)
        {
            if (data.Length < 1)
            {
                Console.WriteLine("ERROR: GameState deserialization: data.Length == " + data.Length);
                return;
            }

            Type = (PacketType)data[0];

            // get the compressed bytes from the packet
            State = new Diag.GameState();
            State.StateBytesCompressed = new byte[data.Length - 1];
            Buffer.BlockCopy(data, 1, State.StateBytesCompressed, 0, State.StateBytesCompressed.Length);

            // decompress
            State.StateBytes = LZ4Codec.Unwrap(State.StateBytesCompressed);

            // persist to object vars
            State = State.LoadState();
        }