public void SetFromTreeNodes(TreeNode Root) { Cities = new CitiesTableItem[Root.Nodes.Count]; for (int i = 0; i < Cities.Length; i++) { TreeNode ChildNode = Root.Nodes[i]; CitiesTableItem Entry = (CitiesTableItem)ChildNode.Tag; Cities[i] = Entry; } }
public void ReadFromFile(BinaryReader reader) { unk0 = reader.ReadUInt32(); uint count0 = reader.ReadUInt32(); uint count1 = reader.ReadUInt32(); unk1 = reader.ReadUInt32(); cities = new CitiesTableItem[count0]; for (int i = 0; i < count1; i++) { CitiesTableItem item = new CitiesTableItem(); item.RespawnPlaceOffset = reader.ReadUInt32(); item.RespawnPlaceCount = reader.ReadUInt32(); uint RespawnPlacesCount1 = reader.ReadUInt32(); uint CityAreasOffset = reader.ReadUInt32(); // Maybe CityAreas? item.ID = reader.ReadUInt32(); item.Name = XBinCoreUtils.ReadStringPtrWithOffset(reader); item.MissionLine = XBinCoreUtils.ReadStringPtrWithOffset(reader); item.SDSPrefix = XBinCoreUtils.ReadStringPtrWithOffset(reader); item.TextID.ReadFromFile(reader); item.CarGarageType.ReadFromFile(reader); item.BoatGarageType.ReadFromFile(reader); if (gameVersion == GamesEnumerator.MafiaI_DE) { item.Unk01 = XBinCoreUtils.ReadStringPtrWithOffset(reader); } item.Map = XBinCoreUtils.ReadStringPtrWithOffset(reader); // Content doesn't exist in M1DE.. Unused? if (gameVersion == GamesEnumerator.MafiaIII) { reader.ReadUInt32(); } cities[i] = item; } foreach (var Item in Cities) { Item.RespawnPlaces = new CitiesTableItem.CityRespawnPlace[Item.RespawnPlaceCount]; for (int i = 0; i < Item.RespawnPlaces.Length; i++) { CitiesTableItem.CityRespawnPlace RespawnPlace = new CitiesTableItem.CityRespawnPlace(); RespawnPlace.PosPlayer.ReadFromFile(reader); RespawnPlace.DirPlayer.ReadFromFile(reader); RespawnPlace.RespawnType = (ERespawnPlaceType)reader.ReadInt32(); RespawnPlace.StreamMapPart = XBinCoreUtils.ReadStringPtrWithOffset(reader); Item.RespawnPlaces[i] = RespawnPlace; } uint CityPointOffset = reader.ReadUInt32(); uint CityPointCount0 = reader.ReadUInt32(); uint CityPointCount1 = reader.ReadUInt32(); uint CityPolygonOffset = reader.ReadUInt32(); uint CityPolygonCount0 = reader.ReadUInt32(); uint CityPolygonCount1 = reader.ReadUInt32(); Item.Points = new XBinVector2[CityPointCount0]; for (int x = 0; x < CityPointCount0; x++) { Item.Points[x] = new XBinVector2(); Item.Points[x].ReadFromFile(reader); } Item.Polygons = new CitiesTableItem.CityPolygon[CityPolygonCount0]; for (int x = 0; x < CityPolygonCount0; x++) { uint PolygonPointOffset = reader.ReadUInt32(); uint PolygonPointCount0 = reader.ReadUInt32(); uint PolygonPointCount1 = reader.ReadUInt32(); CitiesTableItem.CityPolygon Polygon = new CitiesTableItem.CityPolygon(); Polygon.Name = XBinCoreUtils.ReadStringPtrWithOffset(reader); Polygon.TextID.ReadFromFile(reader); Polygon.Unk0 = reader.ReadUInt64(); Polygon.Indexes = new ushort[PolygonPointCount0]; for (int z = 0; z < PolygonPointCount0; z++) { Polygon.Indexes[z] = reader.ReadUInt16(); } Item.Polygons[x] = Polygon; } } }