private DecorationsSaveSlotInfo ReadSaveSlot(int slotNumber) { BaseSaveSlotInfo baseSaveSlotInfo = ReaderUntilPlaytimeIncluded(slotNumber); // Skip until beginning of struct itemBox Skip( 4 + // unknown Constants.HunterAppearanceStructureSize + // H_APPEARANCE Constants.PalicoAppearanceStructureSize + // P_APPEARANCE Constants.GuildCardStructureSize + // hunterGC Constants.GuildCardStructureSize * 100 + // sharedGC 0x019e36 + // unknown Constants.ItemLoadoutsStructureSize + // itemLoadouts 8 + // unknown Constants.ItemPouchStructureSize // itemPouch ); Skip( 8 * 200 + // struct items 8 * 200 + // struct ammo 8 * 800 // struct matrials ); var decorations = new Dictionary <uint, uint>(); for (int i = 0; i < 200; i++) { uint itemId = reader.ReadUInt32(); uint itemQuantity = reader.ReadUInt32(); if (itemId > 0) { decorations.Add(itemId, itemQuantity); } } // Read 1000 equipment slots for (int i = 0; i < 1000; i++) { ReadEquipmentSlot(decorations); } // Skip until the end of the struct saveSlot Skip( 0x2449C + // unknown 0x2a * 250 + // investigations 0x0FB9 + // unknown Constants.EquipLoadoutsStructureSize + // equipLoadout 0x6521 + // unknown Constants.DlcTypeSize * 256 + // DLCClaimed 0x2A5D // unknown ); if (baseSaveSlotInfo.Playtime == 0) { return(null); } return(new DecorationsSaveSlotInfo(baseSaveSlotInfo, decorations)); }
public DecorationsSaveSlotInfo( BaseSaveSlotInfo baseSaveSlotInfo, IDictionary <uint, uint> decorations ) : base(baseSaveSlotInfo) { Decorations = new ReadOnlyDictionary <uint, uint>(decorations); }
public WeaponUsageSaveSlotInfo( BaseSaveSlotInfo baseSaveSlotInfo, WeaponUsage lowRank, WeaponUsage highRank, WeaponUsage investigations) : base(baseSaveSlotInfo) { LowRank = lowRank; HighRank = highRank; Investigations = investigations; }
public BaseSaveSlotInfo(BaseSaveSlotInfo copy) { SaveDataInfo = copy.SaveDataInfo; SlotNumber = copy.SlotNumber; Name = copy.Name; Zeni = copy.Zeni; ResearchPoints = copy.ResearchPoints; ExperiencePoints = copy.ExperiencePoints; Rank = copy.Rank; Playtime = copy.Playtime; }
private EquipmentsSaveSlotInfo ReadSaveSlot(int slotNumber) { BaseSaveSlotInfo baseSaveSlotInfo = ReaderUntilPlaytimeIncluded(slotNumber); // Skip until beginning of struct equipmentSlot Skip( 4 + // unknown Constants.HunterAppearanceStructureSize + // H_APPEARANCE Constants.PalicoAppearanceStructureSize + // P_APPEARANCE Constants.GuildCardStructureSize + // hunterGC Constants.GuildCardStructureSize * 100 + // sharedGC 0x019e36 + // unknown Constants.ItemLoadoutsStructureSize + // itemLoadouts 8 + // unknown Constants.ItemPouchStructureSize + // itemPouch 8 * 200 + // struct items 8 * 200 + // struct ammo 8 * 800 + // struct matrials 8 * 200 // struct decorations ); var equipments = new List <Equipment>(); // Read 1000 equipment slots for (int i = 0; i < 1000; i++) { var eqp = Equipment.Read(reader); if (eqp != null) { equipments.Add(eqp); } } // Skip until the end of the struct saveSlot Skip( 0x2449C + // unknown 0x2a * 250 + // investigations 0x0FB9 + // unknown Constants.EquipLoadoutsStructureSize + // equipLoadout 0x6521 + // unknown Constants.DlcTypeSize * 256 + // DLCClaimed 0x2A5D // unknown ); if (baseSaveSlotInfo.Playtime == 0) { return(null); } return(new EquipmentsSaveSlotInfo(equipments.ToArray(), baseSaveSlotInfo)); }
public EquipmentsSaveSlotInfo(Equipment[] equipments, BaseSaveSlotInfo baseSaveSlotInfo) : base(baseSaveSlotInfo) { Equipments = equipments; }
// Slot 0 Active @ 0x3F3D64 // Slot 1 Active @ 0x4E9E74 // Slot 2 Active @ 0x5DFF84 private WeaponUsageSaveSlotInfo ReadSaveSlot(int slotNumber) { BaseSaveSlotInfo baseSaveSlotInfo = ReaderUntilPlaytimeIncluded(slotNumber); Skip( 4 + // unknown Constants.HunterAppearanceStructureSize + // H_APPEARANCE Constants.PalicoAppearanceStructureSize // P_APPEARANCE ); // Here is struct GUILDCARD Skip( 167 + // begining of GUILDCARD struct Constants.HunterAppearanceStructureSize + // hunterAppearance (H_APPEARANCE) Constants.PalicoAppearanceStructureSize + // palicoAppearance (P_APPEARANCE) Constants.HunterEquipmentStructureSize + // hunterEquipment 92 + // unknown Constants.PalicoStructureSize + // struct palico 63 // remaining of the struct GUILDCARD until weapon usage ); var lowRankWeaponUsage = WeaponUsage.Read(reader); var highRankWeaponUsage = WeaponUsage.Read(reader); var investigationsWeaponUsage = WeaponUsage.Read(reader); // Skip the remaining of the GUILDCARD structure Skip( 1 + // poseID 1 + // expressionID 1 + // backgroundID 1 + // stickerID 256 + // greeting 256 + // title 2 + // titleFirst 2 + // titleMiddle 2 + // titleLast 4 + // positionX 4 + // positionY 4 + // zoom 10 * Constants.ArenaStatsStructSize + // arenaRecords 4 * Constants.Creatures16StructSize + // creatureStats Constants.Creatures8StructSize // researchLevel ); // Skip the remaining of the saveSlot structure Skip( Constants.GuildCardStructureSize * 100 + // sharedGC 0x019e36 + // unknown Constants.ItemLoadoutsStructureSize + // itemLoadouts 8 + // unknown Constants.ItemPouchStructureSize + // itemPouch Constants.ItemBoxStructureSize + // itemBox 0x034E3C + // unknown 42 * 250 + // investigations 0x0FB9 + // unknown Constants.EquipLoadoutsStructureSize + // equipLoadout 0x6521 + // unknown Constants.DlcTypeSize * 256 + // DLCClaimed 0x2A5D // unknown ); if (baseSaveSlotInfo.Playtime == 0) { return(null); } return(new WeaponUsageSaveSlotInfo( baseSaveSlotInfo, lowRankWeaponUsage, highRankWeaponUsage, investigationsWeaponUsage )); }