aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/user_interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/user_interface.cpp')
-rw-r--r--engines/tsage/user_interface.cpp44
1 files changed, 30 insertions, 14 deletions
diff --git a/engines/tsage/user_interface.cpp b/engines/tsage/user_interface.cpp
index f6eae80d9c..ef4eb29028 100644
--- a/engines/tsage/user_interface.cpp
+++ b/engines/tsage/user_interface.cpp
@@ -71,12 +71,27 @@ void UIQuestion::process(Event &event) {
}
void UIQuestion::showDescription(CursorType cursor) {
- if (cursor == INV_FOREST_RAP) {
- // Forest rap item has a graphical display
- showItem(5, 1, 1);
- } else {
- // Display object description
- SceneItem::display2(9001, (int)cursor);
+ switch (g_vm->getGameID()) {
+ case GType_BlueForce:
+ if (cursor == INV_FOREST_RAP) {
+ // Forest rap item has a graphical display
+ showItem(5, 1, 1);
+ } else {
+ // Display object description
+ SceneItem::display2(9001, (int)cursor);
+ }
+ break;
+ case GType_Ringworld2:
+ if ((cursor == R2_9) || (cursor == R2_39)) {
+ // Show communicator
+ warning("TODO: Communicator");
+ } else {
+ // Show object description
+ SceneItem::display2(3, (int)cursor);
+ }
+ break;
+ default:
+ break;
}
}
@@ -266,9 +281,11 @@ void UICollection::draw() {
/*--------------------------------------------------------------------------*/
UIElements::UIElements(): UICollection() {
- _cursorVisage.setVisage(1, 5);
+ if (g_vm->getGameID() == GType_Ringworld2)
+ _cursorVisage.setVisage(5, 1);
+ else
+ _cursorVisage.setVisage(1, 5);
g_saver->addLoadNotifier(&UIElements::loadNotifierProc);
- _characterIndex = 0;
}
void UIElements::synchronize(Serializer &s) {
@@ -296,13 +313,11 @@ void UIElements::synchronize(Serializer &s) {
s.syncAsSint16LE(itemId);
}
}
-
- if (g_vm->getGameID() == GType_Ringworld2)
- s.syncAsSint16LE(_characterIndex);
}
void UIElements::process(Event &event) {
- if (_clearScreen && GLOBALS._player._enabled && (GLOBALS._sceneManager._sceneNumber != 50)) {
+ if (_clearScreen && GLOBALS._player._enabled &&
+ ((g_vm->getGameID() != GType_BlueForce) || (GLOBALS._sceneManager._sceneNumber != 50))) {
if (_bounds.contains(event.mousePos)) {
// Cursor inside UI area
if (!_cursorChanged) {
@@ -310,7 +325,8 @@ void UIElements::process(Event &event) {
// Inventory icon being displayed, so leave alone
} else {
// Change to the inventory use cursor
- GfxSurface surface = _cursorVisage.getFrame(6);
+ int cursorId = (g_vm->getGameID() == GType_Ringworld2) ? 11 : 6;
+ GfxSurface surface = _cursorVisage.getFrame(cursorId);
GLOBALS._events.setCursor(surface);
}
_cursorChanged = true;
@@ -407,7 +423,7 @@ void UIElements::setup(const Common::Point &pt) {
break;
case GType_Ringworld2:
// Set up the character display
- _character.setup(1, 5, _characterIndex, 285, 11, 255);
+ _character.setup(1, 5, R2_GLOBALS._player._characterIndex, 285, 11, 255);
add(&_character);
break;
default: