aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/adl/adl.cpp4
-rw-r--r--engines/adl/adl.h1
-rw-r--r--engines/adl/adl_v2.cpp2
-rw-r--r--engines/adl/adl_v2.h2
-rw-r--r--engines/adl/hires1.cpp2
-rw-r--r--engines/adl/hires6.cpp46
-rw-r--r--engines/adl/hires6.h1
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 &sector) 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 &sector) 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);