aboutsummaryrefslogtreecommitdiff
path: root/engines/access/files.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access/files.cpp')
-rw-r--r--engines/access/files.cpp39
1 files changed, 11 insertions, 28 deletions
diff --git a/engines/access/files.cpp b/engines/access/files.cpp
index 4d734a67a9..48276ee477 100644
--- a/engines/access/files.cpp
+++ b/engines/access/files.cpp
@@ -84,20 +84,6 @@ byte *Resource::data() {
/*------------------------------------------------------------------------*/
FileManager::FileManager(AccessEngine *vm) : _vm(vm) {
- switch (vm->getGameID()) {
- case GType_Amazon:
- if (_vm->isDemo())
- _filenames = &Amazon::FILENAMES_DEMO[0];
- else
- _filenames = &Amazon::FILENAMES[0];
- break;
- case GType_MartianMemorandum:
- _filenames = &Martian::FILENAMES[0];
- break;
- default:
- error("Unknown game");
- }
-
_fileNumber = -1;
_setPaletteFlag = true;
}
@@ -144,13 +130,13 @@ void FileManager::openFile(Resource *res, const Common::String &filename) {
error("Could not open file - %s", filename.c_str());
}
-void FileManager::loadScreen(Graphics::Surface *dest, int fileNum, int subfile) {
+void FileManager::loadScreen(Graphics::ManagedSurface *dest, int fileNum, int subfile) {
Resource *res = loadFile(fileNum, subfile);
handleScreen(dest, res);
delete res;
}
-void FileManager::handleScreen(Graphics::Surface *dest, Resource *res) {
+void FileManager::handleScreen(Graphics::ManagedSurface *dest, Resource *res) {
_vm->_screen->loadRawPalette(res->_stream);
if (_setPaletteFlag)
_vm->_screen->setPalette();
@@ -161,20 +147,17 @@ void FileManager::handleScreen(Graphics::Surface *dest, Resource *res) {
res->_size -= res->_stream->pos();
handleFile(res);
- if (dest != _vm->_screen)
- dest->w = _vm->_screen->w;
+ Graphics::Surface destSurface = dest->getSubArea(Common::Rect(0, 0,
+ _vm->_screen->w, _vm->_screen->h));
- if (dest->w == dest->pitch) {
- res->_stream->read((byte *)dest->getPixels(), dest->w * dest->h);
+ if (destSurface.w == destSurface.pitch) {
+ res->_stream->read((byte *)destSurface.getPixels(), destSurface.w * destSurface.h);
} else {
- for (int y = 0; y < dest->h; ++y) {
- byte *pDest = (byte *)dest->getBasePtr(0, y);
- res->_stream->read(pDest, dest->w);
+ for (int y = 0; y < destSurface.h; ++y) {
+ byte *pDest = (byte *)destSurface.getBasePtr(0, y);
+ res->_stream->read(pDest, destSurface.w);
}
}
-
- if (dest == _vm->_screen)
- _vm->_screen->addDirtyRect(Common::Rect(0, 0, dest->w, dest->h));
}
void FileManager::loadScreen(int fileNum, int subfile) {
@@ -215,8 +198,8 @@ void FileManager::handleFile(Resource *res) {
void FileManager::setAppended(Resource *res, int fileNum) {
// Open the file for access
- if (!res->_file.open(_filenames[fileNum]))
- error("Could not open file %s", _filenames[fileNum]);
+ if (!res->_file.open(_vm->_res->FILENAMES[fileNum]))
+ error("Could not open file %s", _vm->_res->FILENAMES[fileNum].c_str());
// If a different file has been opened then previously, load its index
if (_fileNumber != fileNum) {