diff options
author | Walter van Niftrik | 2016-04-11 21:24:24 +0200 |
---|---|---|
committer | Walter van Niftrik | 2016-06-06 20:35:49 +0200 |
commit | 04604ed6023aa322660f3ab5e93a3a067b22bbf4 (patch) | |
tree | d293af939efbf64e5d588c3376b19d414b2afc00 /engines/adl | |
parent | bb6cd4612dd25d93c6b7d928b8aec5537dac9480 (diff) | |
download | scummvm-rg350-04604ed6023aa322660f3ab5e93a3a067b22bbf4.tar.gz scummvm-rg350-04604ed6023aa322660f3ab5e93a3a067b22bbf4.tar.bz2 scummvm-rg350-04604ed6023aa322660f3ab5e93a3a067b22bbf4.zip |
ADL: Implement hires6 showRoom() var handling
Diffstat (limited to 'engines/adl')
-rw-r--r-- | engines/adl/adl.cpp | 4 | ||||
-rw-r--r-- | engines/adl/adl.h | 1 | ||||
-rw-r--r-- | engines/adl/adl_v2.cpp | 2 | ||||
-rw-r--r-- | engines/adl/adl_v2.h | 2 | ||||
-rw-r--r-- | engines/adl/hires1.cpp | 2 | ||||
-rw-r--r-- | engines/adl/hires6.cpp | 46 | ||||
-rw-r--r-- | engines/adl/hires6.h | 1 |
7 files changed, 48 insertions, 10 deletions
diff --git a/engines/adl/adl.cpp b/engines/adl/adl.cpp index fdbb2aa3b7..edcd804aee 100644 --- a/engines/adl/adl.cpp +++ b/engines/adl/adl.cpp @@ -386,10 +386,6 @@ void AdlEngine::initState() { initGameState(); } -void AdlEngine::printRoomDescription() { - printString(_roomData.description); -} - byte AdlEngine::roomArg(byte room) const { return room; } diff --git a/engines/adl/adl.h b/engines/adl/adl.h index 06d378eac3..0cf9024339 100644 --- a/engines/adl/adl.h +++ b/engines/adl/adl.h @@ -241,7 +241,6 @@ protected: virtual void setupOpcodeTables(); virtual void initState(); - virtual void printRoomDescription(); virtual byte roomArg(byte room) const; virtual void advanceClock() { } diff --git a/engines/adl/adl_v2.cpp b/engines/adl/adl_v2.cpp index 05cfaaca9e..55060be61b 100644 --- a/engines/adl/adl_v2.cpp +++ b/engines/adl/adl_v2.cpp @@ -278,7 +278,7 @@ void AdlEngine_v2::showRoom() { drawItems(); _display->updateHiResScreen(); - printRoomDescription(); + printString(_roomData.description); // FIXME: move to main loop? _linesPrinted = 0; diff --git a/engines/adl/adl_v2.h b/engines/adl/adl_v2.h index fa12a48551..164af7dcb3 100644 --- a/engines/adl/adl_v2.h +++ b/engines/adl/adl_v2.h @@ -51,7 +51,7 @@ protected: void drawItems(); void drawItem(Item &item, const Common::Point &pos); void loadRoom(byte roomNr); - void showRoom(); + virtual void showRoom(); void takeItem(byte noun); virtual void applyDataBlockOffset(byte &track, byte §or) const { } diff --git a/engines/adl/hires1.cpp b/engines/adl/hires1.cpp index 7a85d894e7..c8b9989a02 100644 --- a/engines/adl/hires1.cpp +++ b/engines/adl/hires1.cpp @@ -348,7 +348,7 @@ void HiRes1Engine::showRoom() { _display->updateHiResScreen(); _messageDelay = false; - printRoomDescription(); + printString(_roomData.description); _messageDelay = true; } diff --git a/engines/adl/hires6.cpp b/engines/adl/hires6.cpp index 4ee5663002..7f6de17f65 100644 --- a/engines/adl/hires6.cpp +++ b/engines/adl/hires6.cpp @@ -240,9 +240,51 @@ void HiRes6Engine::initGameState() { _currVerb = _currNoun = 0; } -void HiRes6Engine::printRoomDescription() { +void HiRes6Engine::showRoom() { + bool redrawPic = false; + + if (getVar(26) == 0xfe) + setVar(26, 0); + else if (getVar(26) != 0xff) + setVar(26, _state.room); + + if (_state.room != _roomOnScreen) { + loadRoom(_state.room); + + if (getVar(26) < 0x80 && getCurRoom().isFirstTime) + setVar(26, 0); + + clearScreen(); + + if (!_state.isDark) + redrawPic = true; + } else { + if (getCurRoom().curPicture != _picOnScreen || _itemRemoved) + redrawPic = true; + } + + if (redrawPic) { + _roomOnScreen = _state.room; + _picOnScreen = getCurRoom().curPicture; + + drawPic(getCurRoom().curPicture); + _itemRemoved = false; + _itemsOnScreen = 0; + + Common::List<Item>::iterator item; + for (item = _state.items.begin(); item != _state.items.end(); ++item) + item->isOnScreen = false; + } + + if (!_state.isDark) + drawItems(); + + _display->updateHiResScreen(); setVar(2, 0xff); - AdlEngine_v3::printRoomDescription(); + printString(_roomData.description); + + // FIXME: move to main loop? + _linesPrinted = 0; } void HiRes6Engine::applyDataBlockOffset(byte &track, byte §or) const { diff --git a/engines/adl/hires6.h b/engines/adl/hires6.h index 42211d15a0..9f886aaeb7 100644 --- a/engines/adl/hires6.h +++ b/engines/adl/hires6.h @@ -58,6 +58,7 @@ private: void init(); void initGameState(); void printRoomDescription(); + void showRoom(); // AdlEngine_v2 void printString(const Common::String &str); |