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(); }
public virtual byte[] Encode() { _networkStream.Clear(); _networkStream.WriteByte(PacketId); return(_networkStream.GetBuffer()); }
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(); }