/// <summary> /// Reads SceneSpecification from given MPQFileStream. /// </summary> /// <param name="stream">The MPQFileStream to read from.</param> public SceneSpecification(MpqFileStream stream) { CellZ = stream.ReadValueS32(); Cell = new Vector2D(stream); SNOLevelAreas = new int[4]; for (int i = 0; i < SNOLevelAreas.Length; i++) { SNOLevelAreas[i] = stream.ReadValueS32(); } SNOPrevWorld = stream.ReadValueS32(); Unknown1 = stream.ReadValueS32(); SNOPrevLevelArea = stream.ReadValueS32(); SNONextWorld = stream.ReadValueS32(); Unknown2 = stream.ReadValueS32(); SNONextLevelArea = stream.ReadValueS32(); SNOMusic = stream.ReadValueS32(); SNOCombatMusic = stream.ReadValueS32(); SNOAmbient = stream.ReadValueS32(); SNOReverb = stream.ReadValueS32(); SNOWeather = stream.ReadValueS32(); SNOPresetWorld = stream.ReadValueS32(); Unknown3 = stream.ReadValueS32(); Unknown4 = stream.ReadValueS32(); Unknown5 = stream.ReadValueS32(); stream.Position += (9 * 4); ClusterID = stream.ReadValueS32(); SceneCachedValues = new SceneCachedValues(stream); }
public Vector2D InventoryLocation; // Row, column public void Parse(GameBitBuffer buffer) { OwnerID = buffer.ReadUInt(32); EquipmentSlot = buffer.ReadInt(5) + (-1); InventoryLocation = new Vector2D(); InventoryLocation.Parse(buffer); }
public Tutorial(MpqFile file) { var stream = file.Open(); this.Header = new Header(stream); this.I0 = stream.ReadValueS32(); this.I1 = stream.ReadValueS32(); this.Time = stream.ReadValueS32(); this.I2 = stream.ReadValueS32(); this.V0 = new Vector2D(stream); stream.Close(); }
public CustomTileInfo(MpqFileStream stream) { Int0 = stream.ReadValueS32(); Int1 = stream.ReadValueS32(); Int2 = stream.ReadValueS32(); V0 = new Vector2D(stream); CustomTileCells = stream.ReadSerializedData<CustomTileCell>(); stream.Position += (3 * 4); }
private static void LoadToons() { var query = "SELECT * from toons"; var cmd = new SQLiteCommand(query, DBManager.Connection); var reader = cmd.ExecuteReader(); if (!reader.HasRows) return; while (reader.Read()) { var itemCreate = new Dictionary<uint, Item>(); var databaseId = (ulong)reader.GetInt64(0); //TODO: Move this to toon class only create a toon with id and call load from DB var toon = new Toon(databaseId, reader.GetString(1), (int)reader.GetInt32(6), reader.GetByte(2), reader.GetByte(3), reader.GetByte(4), reader.GetInt64(5), (uint)reader.GetInt32(7), (int)reader.GetInt32(8),null); //add visual equipment //TODO: Load all visualEquipment at once D3.Hero.VisualItem[] visualItems = new D3.Hero.VisualItem[8]; var vItemQuery = string.Format("SELECT * from inventory WHERE toon_id = {0} and inventory_slot <> -1", databaseId); var itemCmd = new SQLiteCommand(vItemQuery, DBManager.Connection); var itemReader = itemCmd.ExecuteReader(); if (itemReader.HasRows) { while (itemReader.Read()) { var slot = (int)itemReader.GetInt64(3); var gbid = (int)itemReader.GetInt64(4); visualItems[slot] = D3.Hero.VisualItem.CreateBuilder() .SetGbid(gbid) .SetEffectLevel(0) .Build(); } toon.HeroVisualEquipmentField.Value = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); } //add inventory items var itemQuery = string.Format("SELECT * from inventory WHERE toon_id = {0} and inventory_slot = -1", databaseId); itemCmd = new SQLiteCommand(itemQuery, DBManager.Connection); itemReader = itemCmd.ExecuteReader(); if (itemReader.HasRows) { uint count = 0; toon.ItemsTable = new Dictionary<uint, KeyValuePair<ItemTable, Vector2D>>(); while (itemReader.Read()) { var x = (int)itemReader.GetInt64(1); var y = (int)itemReader.GetInt64(2); var slot = (int)itemReader.GetInt64(3); var gbid = (int)itemReader.GetInt64(4); ItemTable it = ItemGenerator.GetItemDefinition(gbid); Vector2D v2d = new Vector2D(x,y); toon.ItemsTable.Add((uint)gbid,new KeyValuePair<ItemTable, Vector2D>(it,v2d)); count++; } toon.Items = itemCreate; } Toons.Add(databaseId, toon); } }
public CustomTileInfo(MpqFileStream stream) { Int0 = stream.ReadValueS32(); Int1 = stream.ReadValueS32(); Int2 = stream.ReadValueS32(); V0 = new Vector2D(stream); stream.Position += (5 * 4); }
/// <summary> /// Parses SceneSpecification from given GameBitBuffer. /// </summary> /// <param name="buffer">The GameBitBuffer to parse from.</param> public void Parse(GameBitBuffer buffer) { CellZ = buffer.ReadInt(32); Cell = new Vector2D(); Cell.Parse(buffer); SNOLevelAreas = new int /* sno */[4]; for (int i = 0; i < SNOLevelAreas.Length; i++) SNOLevelAreas[i] = buffer.ReadInt(32); SNOPrevWorld = buffer.ReadInt(32); Unknown1 = buffer.ReadInt(32); SNOPrevLevelArea = buffer.ReadInt(32); SNONextWorld = buffer.ReadInt(32); Unknown2 = buffer.ReadInt(32); SNONextLevelArea = buffer.ReadInt(32); SNOMusic = buffer.ReadInt(32); SNOCombatMusic = buffer.ReadInt(32); SNOAmbient = buffer.ReadInt(32); SNOReverb = buffer.ReadInt(32); SNOWeather = buffer.ReadInt(32); SNOPresetWorld = buffer.ReadInt(32); Unknown3 = buffer.ReadInt(32); Unknown4 = buffer.ReadInt(32); Unknown5 = buffer.ReadInt(32); ClusterID = buffer.ReadInt(32); SceneCachedValues = new SceneCachedValues(); SceneCachedValues.Parse(buffer); }
private void UpdateItemsValue() { ItemsTable = new Dictionary<uint, KeyValuePair<ItemTable, Vector2D>>(); foreach (Item i in Items.Values) { var x = i.InventoryLocation.X; var y = i.InventoryLocation.Y; var gbid = i.GBHandle.GBID; ItemTable it = ItemGenerator.GetItemDefinition(gbid); Vector2D v2d = new Vector2D(x, y); if (!ItemsTable.ContainsKey((uint)gbid)) ItemsTable.Add((uint)gbid, new KeyValuePair<ItemTable, Vector2D>(it, v2d)); } this.ItemsTable = ItemsTable; }