public override void Load(BinaryReader reader, int size) { scriptGameVersion = 2; var sk = reader.BaseStream.Position; UnkBitfield = reader.ReadUInt32(); /* * for (int i = 0; i < 8; ++i) * { * ScriptSlots[i] = reader.ReadByte(); * } */ var Count_OGI = reader.ReadByte(); var Count_Anim = Count_OGI; var Count_Script = reader.ReadByte(); var Count_GameObject = reader.ReadByte(); var Count_UnkI32 = reader.ReadByte(); //reader.ReadUInt32(); var Count_Sound = reader.ReadUInt32(); //Class1 = reader.ReadUInt32(); //Class2 = reader.ReadUInt32(); //Class3 = reader.ReadUInt32(); var len = reader.ReadInt32(); Name = new string(reader.ReadChars(len)); // Read UInt32 script slots UI32.Clear(); for (int i = 0; i < Count_UnkI32; ++i) { UI32.Add(reader.ReadUInt32()); } // Read OGI script slots OGIs.Clear(); for (int i = 0; i < Count_OGI; ++i) { OGIs.Add(reader.ReadUInt16()); } // Read Animation script slots Anims.Clear(); for (int i = 0; i < Count_Anim; ++i) { Anims.Add(reader.ReadUInt16()); } // Read Script script slots Scripts.Clear(); for (int i = 0; i < Count_Script; ++i) { Scripts.Add(reader.ReadUInt16()); } // Read Object script slots Objects.Clear(); for (int i = 0; i < Count_GameObject; ++i) { Objects.Add(reader.ReadUInt16()); } // Read Sound script slots Sounds.Clear(); for (int i = 0; i < Count_Sound; ++i) { Sounds.Add(reader.ReadUInt16()); } // Read instance properties if ((UnkBitfield & 0x20000000) != 0x0) { //PHeader = reader.ReadUInt32(); //reader.BaseStream.Position -= 4; var Count_Flags = reader.ReadByte(); var Count_Floats = reader.ReadByte(); var Count_Ints = reader.ReadByte(); reader.ReadByte(); PUI32 = reader.ReadUInt32(); instFlagsList.Clear(); for (int i = 0; i < Count_Flags; ++i) { instFlagsList.Add(reader.ReadUInt32()); } instFloatsList.Clear(); for (int i = 0; i < Count_Floats; ++i) { instFloatsList.Add(reader.ReadSingle()); } instIntegerList.Clear(); for (int i = 0; i < Count_Ints; ++i) { instIntegerList.Add(reader.ReadUInt32()); } } else { //PHeader = 0; PUI32 = 0; instFlagsList.Clear(); instFloatsList.Clear(); instIntegerList.Clear(); } // Read IDs needed for instance creation if ((UnkBitfield & 0x40000000) != 0x0) { flag = reader.ReadUInt32(); if ((flag & 0x00000001) != 0) { var cnt = reader.ReadInt32(); cObjects.Clear(); for (int i = 0; i < cnt; ++i) { cObjects.Add(reader.ReadUInt16()); } } if ((flag & 0x00000002) != 0) { var cnt = reader.ReadInt32(); cOGIs.Clear(); for (int i = 0; i < cnt; ++i) { cOGIs.Add(reader.ReadUInt16()); } } if ((flag & 0x00000004) != 0) { var cnt = reader.ReadInt32(); cAnims.Clear(); for (int i = 0; i < cnt; ++i) { cAnims.Add(reader.ReadUInt16()); } } if ((flag & 0x00000008) != 0) { var cnt = reader.ReadInt32(); cCM.Clear(); for (int i = 0; i < cnt; ++i) { cCM.Add(reader.ReadUInt16()); } } if ((flag & 0x00000010) != 0) { var cnt = reader.ReadInt32(); cScripts.Clear(); for (int i = 0; i < cnt; ++i) { cScripts.Add(reader.ReadUInt16()); } } if ((flag & 0x00000020) != 0) { var cnt = reader.ReadInt32(); cUnk.Clear(); for (int i = 0; i < cnt; ++i) { cUnk.Add(reader.ReadUInt16()); } } if ((flag & 0x00000040) != 0) { var cnt = reader.ReadInt32(); cSounds.Clear(); for (int i = 0; i < cnt; ++i) { cSounds.Add(reader.ReadUInt16()); } } } scriptCommandsAmount = (int)reader.ReadUInt32(); if (scriptCommandsAmount != 0) { scriptCommand = new Script.MainScript.ScriptCommand(reader, scriptGameVersion); var command = scriptCommand; do { scriptCommands.Add(command); command = command.nextCommand; } while (command != null); } else { scriptCommand = null; } this.size = size; }
public override void Load(BinaryReader reader, int size) { if (ParentType == SectionType.ScriptX) { scriptGameVersion = 1; } else if (ParentType == SectionType.ScriptDemo) { scriptGameVersion = 2; } else { scriptGameVersion = 0; } var sk = reader.BaseStream.Position; UnkBitfield = reader.ReadUInt32(); for (int i = 0; i < 8; ++i) { ScriptSlots[i] = reader.ReadByte(); } //Class1 = reader.ReadUInt32(); //Class2 = reader.ReadUInt32(); //Class3 = reader.ReadUInt32(); var len = reader.ReadInt32(); Name = new string(reader.ReadChars(len)); // Read UInt32 script slots var cnt = reader.ReadInt32(); UI32.Clear(); for (int i = 0; i < cnt; ++i) { UI32.Add(reader.ReadUInt32()); } // Read OGI script slots cnt = reader.ReadInt32(); OGIs.Clear(); for (int i = 0; i < cnt; ++i) { OGIs.Add(reader.ReadUInt16()); } // Read Animation script slots cnt = reader.ReadInt32(); Anims.Clear(); for (int i = 0; i < cnt; ++i) { Anims.Add(reader.ReadUInt16()); } // Read Script script slots cnt = reader.ReadInt32(); Scripts.Clear(); for (int i = 0; i < cnt; ++i) { Scripts.Add(reader.ReadUInt16()); } // Read Object script slots cnt = reader.ReadInt32(); Objects.Clear(); for (int i = 0; i < cnt; ++i) { Objects.Add(reader.ReadUInt16()); } // Read Sound script slots cnt = reader.ReadInt32(); Sounds.Clear(); for (int i = 0; i < cnt; ++i) { Sounds.Add(reader.ReadUInt16()); } // Read instance properties if ((UnkBitfield & 0x20000000) != 0x0) { PHeader = reader.ReadUInt32(); PUI32 = reader.ReadUInt32(); cnt = reader.ReadInt32(); instFlagsList.Clear(); for (int i = 0; i < cnt; ++i) { instFlagsList.Add(reader.ReadUInt32()); } cnt = reader.ReadInt32(); instFloatsList.Clear(); for (int i = 0; i < cnt; ++i) { instFloatsList.Add(reader.ReadSingle()); } cnt = reader.ReadInt32(); instIntegerList.Clear(); for (int i = 0; i < cnt; ++i) { instIntegerList.Add(reader.ReadUInt32()); } } else { PHeader = 0; PUI32 = 0; instFlagsList.Clear(); instFloatsList.Clear(); instIntegerList.Clear(); } // Read IDs needed for instance creation if ((UnkBitfield & 0x40000000) != 0x0) { flag = reader.ReadUInt32(); if ((flag & 0x00000001) != 0) { cnt = reader.ReadInt32(); cObjects.Clear(); for (int i = 0; i < cnt; ++i) { cObjects.Add(reader.ReadUInt16()); } } if ((flag & 0x00000002) != 0) { cnt = reader.ReadInt32(); cOGIs.Clear(); for (int i = 0; i < cnt; ++i) { cOGIs.Add(reader.ReadUInt16()); } } if ((flag & 0x00000004) != 0) { cnt = reader.ReadInt32(); cAnims.Clear(); for (int i = 0; i < cnt; ++i) { cAnims.Add(reader.ReadUInt16()); } } if ((flag & 0x00000008) != 0) { cnt = reader.ReadInt32(); cCM.Clear(); for (int i = 0; i < cnt; ++i) { cCM.Add(reader.ReadUInt16()); } } if ((flag & 0x00000010) != 0) { cnt = reader.ReadInt32(); cScripts.Clear(); for (int i = 0; i < cnt; ++i) { cScripts.Add(reader.ReadUInt16()); } } if ((flag & 0x00000020) != 0) { cnt = reader.ReadInt32(); cUnk.Clear(); for (int i = 0; i < cnt; ++i) { cUnk.Add(reader.ReadUInt16()); } } if ((flag & 0x00000040) != 0) { cnt = reader.ReadInt32(); cSounds.Clear(); for (int i = 0; i < cnt; ++i) { cSounds.Add(reader.ReadUInt16()); } } } scriptCommandsAmount = (int)reader.ReadUInt32(); if (scriptCommandsAmount != 0) { scriptCommand = new Script.MainScript.ScriptCommand(reader, scriptGameVersion); var command = scriptCommand; do { scriptCommands.Add(command); command = command.nextCommand; } while (command != null); } else { scriptCommand = null; } this.size = size; }