public override void Deserialize(Packet rawPacket) { this.rawPacket = rawPacket; var reader = new ArrayPacketReader(rawPacket.Payload); reader.Skip(3); DialogId = reader.ReadUInt(); MenuId = reader.ReadUShort(); var questionLength = reader.ReadByte(); Question = reader.ReadString(questionLength); var responsesCount = reader.ReadByte(); if (responsesCount == byte.MaxValue) { throw new PacketParsingException(rawPacket, $"Responses count is {responsesCount}. Cannot have byte 1 based index for all responses (last index would be 256 which cannot be encoded to a single byte)."); } Responses = new DialogBoxResponse[responsesCount]; for (byte i = 0; i < responsesCount; i++) { var modelId = reader.ReadModelId(); var color = reader.ReadColor(); var responseTextLength = reader.ReadByte(); var responseText = reader.ReadString(responseTextLength); Responses[i] = new DialogBoxResponse((byte)(i + 1), modelId, color, responseText); } }
private void TriggerDialogBox(DialogBoxResponse response) { server.DialogBoxResponse(CurrentDialogBox.DialogId, CurrentDialogBox.MenuId, response.Index, response.Type, response.Color); CurrentDialogBox = null; }