Ejemplo n.º 1
0
        public void Read(Savegame savegame, SavegameInputFiles files, IFileContainer partyTextsContainer,
                         IFileContainer fallbackPartyMemberContainer = null)
        {
            var partyMemberReader = new Characters.PartyMemberReader();
            var chestReader       = new ChestReader();
            var merchantReader    = new MerchantReader();
            var automapReader     = new AutomapReader();

            savegame.PartyMembers.Clear();
            savegame.Chests.Clear();
            savegame.Merchants.Clear();
            savegame.Automaps.Clear();

            foreach (var partyMemberDataReader in files.PartyMemberDataReaders.Files)
            {
                var partyTextFile = partyTextsContainer.Files.ContainsKey(partyMemberDataReader.Key)
                    ? partyTextsContainer.Files[partyMemberDataReader.Key] : null;
                partyMemberDataReader.Value.Position = 0;
                savegame.PartyMembers.Add((uint)partyMemberDataReader.Key,
                                          PartyMember.Load((uint)partyMemberDataReader.Key, partyMemberReader,
                                                           partyMemberDataReader.Value, partyTextFile,
                                                           fallbackPartyMemberContainer?.Files[partyMemberDataReader.Key]));
            }
            foreach (var chestDataReader in files.ChestDataReaders.Files)
            {
                chestDataReader.Value.Position = 0;
                savegame.Chests.Add((uint)chestDataReader.Key, Chest.Load(chestReader, chestDataReader.Value));
            }
            foreach (var merchantDataReader in files.MerchantDataReaders.Files)
            {
                merchantDataReader.Value.Position = 0;
                savegame.Merchants.Add((uint)merchantDataReader.Key, Merchant.Load(merchantReader, merchantDataReader.Value));
            }
            foreach (var automapDataReader in files.AutomapDataReaders.Files)
            {
                automapDataReader.Value.Position = 0;
                savegame.Automaps.Add((uint)automapDataReader.Key, Automap.Load(automapReader, automapDataReader.Value));
            }

            files.SaveDataReader.Position = 0;
            ReadSaveData(savegame, files.SaveDataReader);
        }