public eListConversation(byte[] Bytes) { using (BinaryReader br = new BinaryReader(new MemoryStream(Bytes))) { DialogCount = br.ReadInt32(); Dialogs = new eDialog[DialogCount]; for (int d = 0; d < DialogCount; d++) { Dialogs[d] = new eDialog(); Dialogs[d].DialogID = br.ReadInt32(); Dialogs[d].DialogName = br.ReadBytes(128); Dialogs[d].QuestionCount = br.ReadInt32(); Dialogs[d].Questions = new eQuestion[Dialogs[d].QuestionCount]; for (int q = 0; q < Dialogs[d].QuestionCount; q++) { Dialogs[d].Questions[q] = new eQuestion(); Dialogs[d].Questions[q].QuestionID = br.ReadInt32(); Dialogs[d].Questions[q].Control = br.ReadInt32(); Dialogs[d].Questions[q].QuestionTextLength = br.ReadInt32(); Dialogs[d].Questions[q].QuestionText = br.ReadBytes(2 * Dialogs[d].Questions[q].QuestionTextLength); Dialogs[d].Questions[q].ChoiceQount = br.ReadInt32(); Dialogs[d].Questions[q].Choices = new eChoice[Dialogs[d].Questions[q].ChoiceQount]; for (int c = 0; c < Dialogs[d].Questions[q].ChoiceQount; c++) { Dialogs[d].Questions[q].Choices[c] = new eChoice(); Dialogs[d].Questions[q].Choices[c].Control = br.ReadInt32(); Dialogs[d].Questions[q].Choices[c].ChoiceText = br.ReadBytes(128); Dialogs[d].Questions[q].Choices[c].PARAM_OPTION = br.ReadInt32(); } } } } }
public eListConversationSW(byte[] Bytes) { MemoryStream ms = new MemoryStream(Bytes); BinaryReader br = new BinaryReader(ms); DialogCount = br.ReadInt32(); // Количество диалогов Dialogs = new eDialog[DialogCount]; for (int d = 0; d < DialogCount; d++) // Структура диалогов { Dialogs[d] = new eDialog(); Dialogs[d].DialogID = br.ReadInt32(); // ID Dialogs[d].DialogName = br.ReadBytes(128); // Name Dialogs[d].QuestionCount = br.ReadInt32(); // NUM_WINDOWS Dialogs[d].Questions = new eQuestion[Dialogs[d].QuestionCount]; for (int q = 0; q < Dialogs[d].QuestionCount; q++) { Dialogs[d].Questions[q] = new eQuestion(); Dialogs[d].Questions[q].QuestionID = br.ReadInt32(); // ID_WINDOW Dialogs[d].Questions[q].Control = br.ReadInt32(); // ID_WINDOW_PARENT Dialogs[d].Questions[q].QuestionTextLength = br.ReadInt32(); // TALK_TEXT_LEN Dialogs[d].Questions[q].QuestionText = br.ReadBytes(2 * Dialogs[d].Questions[q].QuestionTextLength); // TALK_TEXT (TALK_TEXT_LEN * 2) Dialogs[d].Questions[q].ChoiceQount = br.ReadInt32(); // NUM_OPTION Dialogs[d].Questions[q].Choices = new eChoice[Dialogs[d].Questions[q].ChoiceQount]; for (int c = 0; c < Dialogs[d].Questions[q].ChoiceQount; c++) { Dialogs[d].Questions[q].Choices[c] = new eChoice(); Dialogs[d].Questions[q].Choices[c].Control = br.ReadInt32(); // ID_OPTION Dialogs[d].Questions[q].Choices[c].ChoiceText = br.ReadBytes(128); // TEXT_OPTION Dialogs[d].Questions[q].Choices[c].PARAM_OPTION = br.ReadInt32(); // PARAM_OPTION } } Dialogs[d].TALK_PROC_TYPE = br.ReadInt32(); // TALK_PROC_TYPE Dialogs[d].ID_PATH = br.ReadInt32(); // ID_PATH } AfterTalkLen = br.ReadInt32(); AfterTalk = br.ReadBytes(AfterTalkLen); br.Close(); ms.Close(); }