public static ChannelBroadcast read(BinaryReader binaryReader) { var newObj = new ChannelBroadcast(); // Check for game action (0xF7B1) opcode which indicates a sent broadast. Received messages use a game event (0xF7B0) message instead. binaryReader.BaseStream.Position = (binaryReader.BaseStream.Position - 12); newObj.Opcode = binaryReader.ReadUInt32(); if (newObj.Opcode == 0x0000F7B1) // Sent broadcasts use 0xF7B1. { newObj.SendingBroadcast = true; } binaryReader.BaseStream.Position = (binaryReader.BaseStream.Position + 8); newObj.GroupChatType = binaryReader.ReadUInt32(); newObj.SenderNameSize = binaryReader.ReadUInt16(); if (newObj.SenderNameSize == 0) // Received a message with no sender name { binaryReader.ReadBytes(2); // so we skip 2 bytes of padding. newObj.MessageText = PStringChar.read(binaryReader); } else // Need to seek back 2 bytes and process normally. { binaryReader.BaseStream.Position = (binaryReader.BaseStream.Position - 2); if (newObj.SendingBroadcast == true) { newObj.MessageText = PStringChar.read(binaryReader); } else // Received message with sender and message. { newObj.SenderName = PStringChar.read(binaryReader); newObj.MessageText = PStringChar.read(binaryReader); } } return(newObj); }
public static ChannelBroadcast read(BinaryReader binaryReader) { var newObj = new ChannelBroadcast(); newObj.GroupChatType = binaryReader.ReadUInt32(); newObj.Unknown = binaryReader.ReadUInt32(); newObj.MessageText = PStringChar.read(binaryReader); return(newObj); }
public override bool acceptMessageData(BinaryReader messageDataReader, TreeView outputTreeView) { bool handled = true; PacketOpcode opcode = Util.readOpcode(messageDataReader); switch (opcode) { case PacketOpcode.Evt_Communication__Talk_ID: // 0x0015 { var message = Talk.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__PopUpString_ID: // 0x0004 { var message = PopUpString.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__TalkDirect_ID: // 0x0032 { var message = TalkDirect.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__TalkDirectByName_ID: // 0x005D { var message = TalkDirectByName.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__ChannelBroadcast_ID: // 0x0147 { var message = ChannelBroadcast.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } /*case PacketOpcode.Evt_Communication__SetSquelchDB_ID: // 0x01F4 * { * var message = SetSquelchDB.read(messageDataReader); * message.contributeToTreeView(outputTreeView); * break; * }*/ case PacketOpcode.Evt_Communication__Emote_ID: // 0x01DF { var message = Emote.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__HearEmote_ID: // 0x01E0 { var message = HearEmote.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__SoulEmote_ID: // 0x01E1 { var message = SoulEmote.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__HearSoulEmote_ID: // 0x01E2 { var message = HearSoulEmote.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__Recv_ChatRoomTracker_ID: // 0x0295 { var message = Recv_ChatRoomTracker.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__WeenieError_ID: // 0x028A { WeenieError message = WeenieError.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__WeenieErrorWithString_ID: // 0x028B { WeenieErrorWithString message = WeenieErrorWithString.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__HearSpeech_ID: // 0x02BB { var message = HearSpeech.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__HearRangedSpeech_ID: // 0x02BC { var message = HearRangedSpeech.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__HearDirectSpeech_ID: // 0x2BD { var message = HearDirectSpeech.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__TransientString_ID: // 0x2EB { var message = TransientString.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } case PacketOpcode.Evt_Communication__TextboxString_ID: // 0xF7E0 { var message = TextBoxString.read(messageDataReader); message.contributeToTreeView(outputTreeView); break; } default: { handled = false; break; } } return(handled); }