public void Load(BinaryReader reader)
 {
     PlantType      = reader.ReadInt32();
     GardenLocation = reader.ReadInt32();
     Column         = reader.ReadInt32();
     Row            = reader.ReadInt32();
     IOUtils.ReadUInt32Array(reader, unknown1);
     LastWateringTime             = IOUtils.ReadUnixTimestamp(reader);
     unknown2                     = reader.ReadUInt32();
     Color                        = reader.ReadInt32();
     NumTimesFertilized           = reader.ReadInt32();
     NumTimesWatered              = reader.ReadInt32();
     unknown3                     = reader.ReadUInt32();
     NeedsPhonographOrBugSpray    = (ZenGardenPlantNeeds)reader.ReadInt32();
     unknown4                     = reader.ReadUInt32();
     LastPhonographOrBugSprayTime = IOUtils.ReadUnixTimestamp(reader);
     unknown5                     = reader.ReadUInt32();
     LastFertilizerTime           = IOUtils.ReadUnixTimestamp(reader);
     IOUtils.ReadUInt32Array(reader, unknown6);
 }
Пример #2
0
        public void Load(bool forceReadIncompatibleVersion)
        {
            using (var reader = new BinaryReader(new FileStream(UserFilePath, FileMode.Open, FileAccess.Read)))
            {
                var version = reader.ReadUInt32();
                if (version != 0x0C && !forceReadIncompatibleVersion)
                {
                    throw new IncompatibleVersionException();
                }
                Level.Read(reader);
                moneyOver10 = reader.ReadInt32();
                NumTimesAdventureModeCompleted = reader.ReadInt32();

                IOUtils.ReadInt32Array(reader, SurvivalModeFlags);
                IOUtils.ReadUInt32Array(reader, unknown1);
                StreakLengthEndlessSurvival = reader.ReadInt32();

                IOUtils.ReadUInt32Array(reader, unknown2);

                IOUtils.ReadBoolPreserveNonzeroArray(reader, HasMinigameTrophy, 4);
                IOUtils.ReadUInt32Array(reader, unknown3);
                TreeOfWisdomHeight = reader.ReadInt32();
                IOUtils.ReadBoolPreserveNonzeroArray(reader, HasVaseBreakerTrophy, 4);
                StreakLengthVaseBreakerEndless = reader.ReadInt32();
                IOUtils.ReadBoolPreserveNonzeroArray(reader, HasIZombieTrophy, 4);
                StreakLengthIZombieEndless = reader.ReadInt32();

                IOUtils.ReadUInt32Array(reader, unknown4);

                IOUtils.ReadBoolPreserveNonzeroArray(reader, HasShopPlant, 4);
                unknown5 = reader.ReadUInt32();
                for (int i = 0; i < MarigoldLastPurchased.Length; i++)
                {
                    MarigoldLastPurchased[i] = IOUtils.ReadDaysSince2000(reader);
                }
                HasGoldenWateringCan  = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                FertilizerAmount      = IOUtils.ReadInt32Offset(reader, 1000);
                BugSprayAmount        = IOUtils.ReadInt32Offset(reader, 1000);
                HasPhonograph         = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                HasGardeningGlove     = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                HasMushroomGarden     = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                HasWheelbarrow        = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                StinkyLastAwokenTime  = IOUtils.ReadUnixTimestamp(reader);
                NumberSlots           = reader.ReadInt32() + 6;
                HasPoolCleaners       = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                HasRoofCleaners       = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                RakeUses              = reader.ReadUInt32();
                HasAquariumGarden     = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                ChocolateAmount       = IOUtils.ReadInt32Offset(reader, 1000);
                TreeOfWisdomAvailable = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                TreeFoodAmount        = IOUtils.ReadInt32Offset(reader, 1000);
                HasWallNutFirstAid    = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                IOUtils.ReadUInt32Array(reader, unknown6);
                unknown7 = reader.ReadUInt32();
                StinkyLastChocolateTime  = IOUtils.ReadUnixTimestamp(reader);
                StinkyXPosition          = reader.ReadInt32();
                StinkyYPosition          = reader.ReadInt32();
                MiniGamesUnlocked        = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                PuzzleModeUnlocked       = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                AnimateUnlockMiniGame    = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                AnimateUnlockVasebreaker = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                AnimateUnlockIZombie     = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                AnimateUnlockSurvival    = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                unknown8 = reader.ReadUInt32();
                ShowAdventureCompleteDialog = IOUtils.ReadBoolPreserveNonzero(reader, 4);
                HasTaco = IOUtils.ReadBoolPreserveNonzero(reader, 4);

                IOUtils.ReadUInt32Array(reader, unknown9);

                var numZenGardenPlants = reader.ReadUInt32();
                ZenGardenPlants = new ZenGardenPlant[numZenGardenPlants];
                for (int i = 0; i < ZenGardenPlants.Length; i++)
                {
                    ZenGardenPlants[i] = new ZenGardenPlant();
                    ZenGardenPlants[i].Load(reader);
                }

                IOUtils.ReadBoolPreserveNonzeroArray(reader, HasAchievement, 2);

                AcceptedZombatarLicenseAgreement = IOUtils.ReadBoolPreserveNonzero(reader, 1);
                var numZombatars = reader.ReadUInt32();
                Zombatars = new Zombatar[numZombatars];
                for (int i = 0; i < Zombatars.Length; i++)
                {
                    Zombatars[i] = new Zombatar();
                    Zombatars[i].Load(reader);
                }

                IOUtils.ReadUInt32Array(reader, unknown10);

                HaveCreatedZombatar = IOUtils.ReadBoolPreserveNonzero(reader, 1);

                // Read all trailing data into a buffer - if we're dealing with an incompatible version this might let us succeed
                // Warning: this might allocate a lot of memory if the file is huge for some reason
                trailingData = reader.ReadBytes((int)new FileInfo(UserFilePath).Length);
            }
        }