public BlockFactory()
        {
            JArray        datas  = JArray.Parse(Encoding.UTF8.GetString(FileResources.RuntimeIdTable));
            NetworkStream stream = new NetworkStream();

            stream.WriteUVarInt((uint)datas.Count);
            foreach (JToken obj in datas)
            {
                string name = obj.Value <string>("name");
                int    id   = obj.Value <int>("id");
                int    data = obj.Value <int>("data");

                int index = (id << 4) + data;
                _runtimeBlockDatas.TryAdd(_runtimeId, new RuntimeBlockData(name, _runtimeId, id, data, index));
                _runtimeToIndex.TryAdd(_runtimeId, index);
                _indexToRuntime.TryAdd(index, _runtimeId);

                stream.WriteString(name);
                stream.WriteShort((short)data, ByteOrder.Little);

                _runtimeId++;
            }

            _compiledTable = stream.GetBuffer();
        }
Exemple #2
0
        public virtual byte[] Encode()
        {
            _networkStream.Clear();

            _networkStream.WriteByte(PacketId);

            return(_networkStream.GetBuffer());
        }
Exemple #3
0
        public virtual byte[] Encode()
        {
            _networkStream.Clear();

            _networkStream.WriteUInt(PacketId, ByteOrder.Little);

            return(_networkStream.GetBuffer());
        }
        public void CompileRuntimeTable()
        {
            NetworkStream stream = new NetworkStream();

            stream.WriteUVarInt((uint)_runtimeBlockDatas.Count);
            foreach (IRuntimeBlockData runtimeBlockData in _runtimeBlockDatas.Values)
            {
                stream.WriteString(runtimeBlockData.Name);
                stream.WriteShort((short)runtimeBlockData.Data, ByteOrder.Little);
            }

            _compiledTable = stream.GetBuffer();
        }