diff options
-rw-r--r-- | engines/titanic/pet_control/pet_remote.cpp | 20 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_remote.h | 2 |
2 files changed, 18 insertions, 4 deletions
diff --git a/engines/titanic/pet_control/pet_remote.cpp b/engines/titanic/pet_control/pet_remote.cpp index 6f133259a8..f59f1fb0d7 100644 --- a/engines/titanic/pet_control/pet_remote.cpp +++ b/engines/titanic/pet_control/pet_remote.cpp @@ -178,7 +178,19 @@ void CPetRemote::enter(PetArea oldArea) { } void CPetRemote::enterRoom(CRoomItem *room) { - // TODO + clearGlyphs(); + + if (room) { + CString roomName = room->getName(); + int roomIndex = roomIndexOf(roomName); + if (roomIndex != -1) { + Common::Array<uint> indexes; + if (getRemoteData(roomIndex, indexes)) { + loadGlyphs(indexes); + _items.scrollToStart(); + } + } + } } CPetText *CPetRemote::getText() { @@ -298,17 +310,19 @@ int CPetRemote::roomIndexOf(const CString &name) { return -1; } -void CPetRemote::getRemoteData(int roomIndex, Common::Array<uint> &indexes) { +bool CPetRemote::getRemoteData(int roomIndex, Common::Array<uint> &indexes) { const byte *p = &REMOTE_DATA[0]; for (int idx = 0; idx < TOTAL_ROOMS; ++idx) { if (*p == roomIndex) { for (int ctr = 0; ctr < *p; ++ctr) indexes.push_back(p[ctr + 1]); - return; + return true; } p += *(p + 1) + 2; } + + return false; } bool CPetRemote::loadGlyphs(const Common::Array<uint> &indexes) { diff --git a/engines/titanic/pet_control/pet_remote.h b/engines/titanic/pet_control/pet_remote.h index 58c429f5bf..22ea1e05ad 100644 --- a/engines/titanic/pet_control/pet_remote.h +++ b/engines/titanic/pet_control/pet_remote.h @@ -70,7 +70,7 @@ private: /** * Return a list of remote action glyph indexes for a given room */ - void getRemoteData(int roomIndex, Common::Array<uint> &indexes); + bool getRemoteData(int roomIndex, Common::Array<uint> &indexes); /** * Clear the list of rooms glyphs |