private void Deserialize(IGenericReader reader, int version) { Poster = reader.ReadEntity <Mobile>(); Subject = reader.ReadString(); Time = reader.ReadDateTime(); LastPostTime = reader.ReadDateTime(); reader.ReadBool(); // Has thread Thread = reader.ReadEntity <BulletinMessage>(); PostedName = reader.ReadString(); PostedBody = reader.ReadInt(); PostedHue = reader.ReadInt(); PostedEquip = new BulletinEquip[reader.ReadInt()]; for (var i = 0; i < PostedEquip.Length; ++i) { PostedEquip[i]._itemID = reader.ReadInt(); PostedEquip[i]._hue = reader.ReadInt(); } Lines = new string[reader.ReadInt()]; for (var i = 0; i < Lines.Length; ++i) { Lines[i] = reader.ReadString(); } // Moved validation/cleanup to the BB itself }
public BBMessageContent(BaseBulletinBoard board, BulletinMessage msg) : base(0x71) { string poster = this.SafeString(msg.PostedName); string subject = this.SafeString(msg.Subject); string time = this.SafeString(msg.GetTimeAsString()); this.EnsureCapacity(22 + poster.Length + subject.Length + time.Length); this.m_Stream.Write((byte)0x02); // PacketID this.m_Stream.Write((int)board.Serial); // Bulletin board serial this.m_Stream.Write((int)msg.Serial); // Message serial this.WriteString(poster); this.WriteString(subject); this.WriteString(time); this.m_Stream.Write((short)msg.PostedBody); this.m_Stream.Write((short)msg.PostedHue); int len = msg.PostedEquip.Length; if (len > 255) { len = 255; } this.m_Stream.Write((byte)len); for (int i = 0; i < len; ++i) { BulletinEquip eq = msg.PostedEquip[i]; this.m_Stream.Write((short)eq.itemID); this.m_Stream.Write((short)eq.hue); } len = msg.Lines.Length; if (len > 255) { len = 255; } this.m_Stream.Write((byte)len); for (int i = 0; i < len; ++i) { this.WriteString(msg.Lines[i], true); } }
public override void Deserialize(IGenericReader reader) { base.Deserialize(reader); var version = reader.ReadInt(); switch (version) { case 1: case 0: { Poster = reader.ReadMobile(); Subject = reader.ReadString(); Time = reader.ReadDateTime(); LastPostTime = reader.ReadDateTime(); var hasThread = reader.ReadBool(); Thread = reader.ReadItem() as BulletinMessage; PostedName = reader.ReadString(); PostedBody = reader.ReadInt(); PostedHue = reader.ReadInt(); PostedEquip = new BulletinEquip[reader.ReadInt()]; for (var i = 0; i < PostedEquip.Length; ++i) { PostedEquip[i].itemID = reader.ReadInt(); PostedEquip[i].hue = reader.ReadInt(); } Lines = new string[reader.ReadInt()]; for (var i = 0; i < Lines.Length; ++i) { Lines[i] = reader.ReadString(); } if (hasThread && Thread == null) { Delete(); } if (version == 0) { ValidationQueue <BulletinMessage> .Add(this); } break; } } }