public Player(ISaveFile saveFile, int idx, PersonalSaveFile personalSave) { SaveFile = saveFile; _personalFile = personalSave; var offsets = PersonalOffsets.GetOffsets(SaveFile.GetRevision()); Index = idx; PersonalId = new PersonalID(personalSave, offsets.PersonalId); Wallet = new EncryptedInt32(personalSave, offsets.Wallet); Bank = new EncryptedInt32(personalSave, offsets.Bank); NookMiles = new EncryptedInt32(personalSave, offsets.NookMiles); // TODO: This should be refactored to detect the "expanded pockets" state var pockets = new Item[40]; for (var i = 0; i < 20; i++) { pockets[i] = new Item(personalSave, offsets.Pockets + 0xB8 + i * 8); pockets[i + 20] = new Item(personalSave, offsets.Pockets + i * 8); } Pockets = new ItemCollection(pockets); var storage = new Item[5000]; for (var i = 0; i < 5000; i++) { storage[i] = new Item(personalSave, offsets.Storage + i * 8); } Storage = new ItemCollection(storage); }
public void Save() { var offsets = PersonalOffsets.GetOffsets(SaveFile.GetRevision()); _personalFile.WriteStruct(offsets.PersonalId, PersonalId); Wallet.Write(_personalFile, offsets.Wallet); Bank.Write(_personalFile, offsets.Bank); NookMiles.Write(_personalFile, offsets.NookMiles); for (var i = 0; i < 20; i++) { Pockets[i].Save(_personalFile, offsets.Pockets + 0xB8 + i * 8); Pockets[i + 20].Save(_personalFile, offsets.Pockets + i * 8); } for (var i = 0; i < 5000; i++) { Storage[i].Save(_personalFile, offsets.Storage + i * 8); } }