mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-19 16:18:45 +00:00
ACCESS: Fix loading of inventory screen background
This commit is contained in:
parent
6774dd4246
commit
e53417f91a
@ -111,7 +111,19 @@ void FileManager::loadScreen(Graphics::Surface *dest, int fileNum, int subfile)
|
|||||||
|
|
||||||
// Get the data for the screen, and copy it over
|
// Get the data for the screen, and copy it over
|
||||||
byte *pSrc = handleFile();
|
byte *pSrc = handleFile();
|
||||||
Common::copy(pSrc, pSrc + _filesize, (byte *)dest->getPixels());
|
|
||||||
|
if (dest != _vm->_screen)
|
||||||
|
dest->w = _vm->_screen->w;
|
||||||
|
|
||||||
|
if (dest->w == dest->pitch) {
|
||||||
|
Common::copy(pSrc, pSrc + _filesize, (byte *)dest->getPixels());
|
||||||
|
} else {
|
||||||
|
byte *pCurr = pSrc;
|
||||||
|
for (int y = 0; y < dest->h; ++y, pCurr += dest->w) {
|
||||||
|
byte *pDest = (byte *)dest->getBasePtr(0, y);
|
||||||
|
Common::copy(pCurr, pCurr + dest->w, pDest);
|
||||||
|
}
|
||||||
|
}
|
||||||
delete[] pSrc;
|
delete[] pSrc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,8 +90,7 @@ int InventoryManager::newDisplayInv() {
|
|||||||
_vm->_timers.saveTimers();
|
_vm->_timers.saveTimers();
|
||||||
|
|
||||||
if (room._tile && !_invRefreshFlag) {
|
if (room._tile && !_invRefreshFlag) {
|
||||||
_vm->_buffer1.copyTo(&_savedBuffer1);
|
saveScreens();
|
||||||
screen.copyTo(&_savedScreen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
savedFields();
|
savedFields();
|
||||||
@ -144,8 +143,7 @@ int InventoryManager::newDisplayInv() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!room._tile && !_invRefreshFlag) {
|
if (!room._tile && !_invRefreshFlag) {
|
||||||
_savedBuffer1.copyTo(&_vm->_buffer1);
|
restoreScreens();
|
||||||
_savedScreen.copyTo(_vm->_screen);
|
|
||||||
} else {
|
} else {
|
||||||
screen.setBufferScan();
|
screen.setBufferScan();
|
||||||
room.buildScreen();
|
room.buildScreen();
|
||||||
@ -310,5 +308,15 @@ int InventoryManager::coordIndexOf() {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InventoryManager::saveScreens() {
|
||||||
|
_vm->_buffer1.copyTo(&_savedBuffer1);
|
||||||
|
_vm->_screen->copyTo(&_savedScreen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InventoryManager::restoreScreens() {
|
||||||
|
_vm->_buffer1.w = _vm->_buffer1.pitch;
|
||||||
|
_savedBuffer1.copyTo(&_vm->_buffer1);
|
||||||
|
_savedScreen.copyTo(_vm->_screen);
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Access
|
} // End of namespace Access
|
||||||
|
@ -76,6 +76,10 @@ private:
|
|||||||
void freeInvCells();
|
void freeInvCells();
|
||||||
|
|
||||||
int coordIndexOf();
|
int coordIndexOf();
|
||||||
|
|
||||||
|
void saveScreens();
|
||||||
|
|
||||||
|
void restoreScreens();
|
||||||
public:
|
public:
|
||||||
Common::Array<int> _inv;
|
Common::Array<int> _inv;
|
||||||
Common::StringArray _names;
|
Common::StringArray _names;
|
||||||
|
Loading…
Reference in New Issue
Block a user