public WeaponUsageSaveSlotInfo(
     SaveSlotInfoBase baseSaveSlotInfo,
     WeaponUsage lowRank, WeaponUsage highRank, WeaponUsage investigations)
     : base(baseSaveSlotInfo)
 {
     LowRank        = lowRank;
     HighRank       = highRank;
     Investigations = investigations;
 }
 public WeaponUsageSaveSlotInfo(
     SaveSlotInfoBase baseSaveSlotInfo,
     WeaponUsage lowRank, WeaponUsage highRank, WeaponUsage masterRank, WeaponUsage investigations, WeaponUsage guidingLands)
     : base(baseSaveSlotInfo)
 {
     LowRank        = lowRank;
     HighRank       = highRank;
     MasterRank     = masterRank;
     Investigations = investigations;
     GuidingLands   = guidingLands;
 }
        private WeaponUsageSaveSlotInfo ReadSaveSlot(int slotNumber)
        {
            Skip(4); // unknown

            SaveSlotInfoBase baseSaveSlotInfo = ReadUntilPlaytimeIncluded(slotNumber);

            Skip(
                Constants.HunterAppearanceStructureSize + // H_APPEARANCE
                382 +                                     // unknown
                Constants.PalicoAppearanceStructureSize   // P_APPEARANCE
                );

            // Here is struct GUILDCARD

            Skip(
                171 +                                     // begining of GUILDCARD struct
                Constants.HunterAppearanceStructureSize + // hunterAppearance (H_APPEARANCE)
                212 +                                     // unknown
                64 +                                      // Palico name
                4 +                                       // Palico rank
                194                                       // unknown
                );

            var lowRankWeaponUsage        = WeaponUsage.Read(reader);
            var highRankWeaponUsage       = WeaponUsage.Read(reader);
            var investigationsWeaponUsage = WeaponUsage.Read(reader);
            var masterRankWeaponUsage     = WeaponUsage.Read(reader);
            var guidingLandsWeaponUsage   = WeaponUsage.Read(reader);

            Skip(
                4 +         // unknown
                2_134_609 + // 2_136_256 (total size of a save slot) - 1647 (bytes read and skipped so far)
                512         // Hash things
                );

            if (baseSaveSlotInfo.Playtime == 0)
            {
                return(null);
            }

            return(new WeaponUsageSaveSlotInfo(
                       baseSaveSlotInfo,
                       lowRankWeaponUsage,
                       highRankWeaponUsage,
                       masterRankWeaponUsage,
                       investigationsWeaponUsage,
                       guidingLandsWeaponUsage
                       ));
        }
        // Slot 0 Active @ 0x3F3D64
        // Slot 1 Active @ 0x4E9E74
        // Slot 2 Active @ 0x5DFF84

        private WeaponUsageSaveSlotInfo ReadSaveSlot(int slotNumber)
        {
            SaveSlotInfoBase baseSaveSlotInfo = ReadUntilPlaytimeIncluded(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
                       ));
        }