mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-06 10:17:14 +00:00
ULTIMA8: Fix loading savegames
This commit is contained in:
parent
687d39a28e
commit
bae44fcb51
@ -33,7 +33,7 @@ namespace Ultima8 {
|
||||
#define SAVEGAME_IDENT MKTAG('V', 'M', 'U', '8')
|
||||
#define SAVEGAME_VERSION 5
|
||||
|
||||
SavegameReader::SavegameReader(IDataSource *ds, bool metadataOnly) : _version(0) {
|
||||
SavegameReader::SavegameReader(IDataSource *ds, bool metadataOnly) : _file(ds), _version(0) {
|
||||
if (!MetaEngine::readSavegameHeader(ds->GetRawStream(), &_header, false))
|
||||
return;
|
||||
|
||||
@ -61,11 +61,10 @@ SavegameReader::SavegameReader(IDataSource *ds, bool metadataOnly) : _version(0)
|
||||
_index[Common::String(name)] = fe;
|
||||
ds->skip(fe._size);
|
||||
}
|
||||
|
||||
delete ds;
|
||||
}
|
||||
|
||||
SavegameReader::~SavegameReader() {
|
||||
delete _file;
|
||||
}
|
||||
|
||||
SavegameReader::State SavegameReader::isValid() const {
|
||||
@ -84,6 +83,9 @@ IDataSource *SavegameReader::getDataSource(const std::string &name) {
|
||||
|
||||
const FileEntry &fe = _index[name];
|
||||
uint8 *data = (uint8 *)malloc(fe._size);
|
||||
_file->seek(fe._offset);
|
||||
_file->read(data, fe._size);
|
||||
|
||||
return new IBufferDataSource(data, fe._size, false, true);
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@ class SavegameReader {
|
||||
private:
|
||||
ExtendedSavegameHeader _header;
|
||||
Common::HashMap<Common::String, FileEntry> _index;
|
||||
IDataSource *_file;
|
||||
uint32 _version;
|
||||
public:
|
||||
explicit SavegameReader(IDataSource *ds, bool metadataOnly = false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user