aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-06-23 22:44:17 -0400
committerPaul Gilbert2016-07-15 19:24:33 -0400
commit934787b19be3aa86e02d77eea0a1a5ffa1771075 (patch)
treeaa39eb85818c0d99ea1c03059355296e53e96281 /engines
parenta4b746d24eaeba4cfd05603be2591dc3ec2d10e9 (diff)
downloadscummvm-rg350-934787b19be3aa86e02d77eea0a1a5ffa1771075.tar.gz
scummvm-rg350-934787b19be3aa86e02d77eea0a1a5ffa1771075.tar.bz2
scummvm-rg350-934787b19be3aa86e02d77eea0a1a5ffa1771075.zip
TITANIC: Finsihed remaining PET Remote methods
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/pet_control/pet_remote.cpp20
-rw-r--r--engines/titanic/pet_control/pet_remote.h2
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