private void SendTile(Tile tile) { message.Reset(); message.WriteByte(0x01); message.WriteLocation(tile.Location); message.WriteByte((byte)tile.ThingCount); for (int i = 0; i < tile.ThingCount; i++) { var thing = tile.GetThing(i); if (thing is Creature) { var cr = thing as Creature; message.WriteByte(0x01); message.WriteUInt(cr.Id); message.WriteString(cr.Name); message.WriteByte((byte)cr.Type); } else { var item = thing as Item; message.WriteByte(0x02); message.WriteUShort((ushort)item.Id); message.WriteByte(item.SubType); } } message.WriteInternalHead(); Adler.Generate(message, true); message.WriteHead(); connection.Send(message); }
private void ParseMessage() { message.ReadPosition = 2; message.Encrypted = false; if (Adler.Generate(message) != message.ReadUInt()) { return; //discart the message } message.ReadUShort(); //internal head var cmd = message.ReadByte(); switch (cmd) { case 0x01: ParseTile(); break; default: Console.WriteLine("[Error] Unknown packet type " + cmd.ToString("X2")); break; } }