aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/core.cpp10
-rw-r--r--engines/tsage/core.h2
-rw-r--r--engines/tsage/globals.cpp1
-rw-r--r--engines/tsage/ringworld_scenes1.cpp88
-rw-r--r--engines/tsage/ringworld_scenes1.h10
5 files changed, 59 insertions, 52 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 9f31425620..9f20ea398f 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1420,17 +1420,21 @@ void SceneItem::display(int resNum, int lineNum, ...) {
break;
case SET_FONT:
// Set the font number
- _globals->gfxManager()._font.setFontNumber(va_arg(va, int));
+ _globals->_sceneText._fontNumber = va_arg(va, int);
+ _globals->gfxManager()._font.setFontNumber(_globals->_sceneText._fontNumber);
break;
case SET_BG_COLOUR: {
// Set the background colour
int bgColour = va_arg(va, int);
_globals->gfxManager()._font._colours.background = bgColour;
+ if (!bgColour)
+ _globals->gfxManager().setFillFlag(false);
break;
}
case SET_FG_COLOUR:
// Set the foreground colour
- _globals->gfxManager()._font._colours.foreground = va_arg(va, int);
+ _globals->_sceneText._colour1 = va_arg(va, int);
+ _globals->gfxManager()._font._colours.foreground = _globals->_sceneText._colour1;
break;
case SET_KEEP_ONSCREEN:
// Suppresses immediate display
@@ -2054,6 +2058,8 @@ void SceneObject::dispatch() {
} else {
animEnded();
}
+ } else {
+ setFrame(changeFrame());
}
break;
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index ad8339cdab..09f648a811 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -395,7 +395,7 @@ public:
int _yDiff;
int _sceneRegionId;
public:
- SceneItem(): EventHandler() { _msg = "Feature"; _action = NULL; }
+ SceneItem(): EventHandler() { _msg = "Feature"; _action = NULL; _sceneRegionId = 0; }
virtual void synchronise(Serialiser &s);
virtual Common::String getClassName() { return "SceneItem"; }
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 838b363cb2..11e8af1ffc 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -50,6 +50,7 @@ Globals::Globals():
_dialogCentre(160, 140),
_gfxManagerInstance(_screenSurface) {
reset();
+ _stripNum = 0;
_gfxFontNumber = 50;
_gfxColours.background = 53;
_gfxColours.foreground = 18;
diff --git a/engines/tsage/ringworld_scenes1.cpp b/engines/tsage/ringworld_scenes1.cpp
index b205ab20e4..9c81c1a1a4 100644
--- a/engines/tsage/ringworld_scenes1.cpp
+++ b/engines/tsage/ringworld_scenes1.cpp
@@ -1821,7 +1821,7 @@ void Scene50::dispatch() {
}
/*--------------------------------------------------------------------------
- * Scene 60 -
+ * Scene 60 - Flycycle controls
*
*--------------------------------------------------------------------------*/
@@ -1836,7 +1836,7 @@ void Scene60::Action1::signal() {
scene->_object9.postInit();
scene->_object9.setVisage(60);
scene->_object9.setStrip(7);
- scene->_object1.setPosition(Common::Point(136, 65));
+ scene->_object9.setPosition(Common::Point(136, 65));
scene->_object9.animate(ANIM_MODE_5, this);
scene->_soundHandler1.startSound(35);
@@ -1845,7 +1845,7 @@ void Scene60::Action1::signal() {
scene->_object10.postInit();
scene->_object10.setVisage(60);
scene->_object10.setPosition(Common::Point(199, 186));
- scene->_object10.animate(ANIM_MODE_8, NULL);
+ scene->_object10.animate(ANIM_MODE_8, 0, NULL);
scene->_object10._numFrames = 5;
scene->_object6.animate(ANIM_MODE_2, NULL);
@@ -1874,7 +1874,7 @@ void Scene60::Action1::signal() {
scene->_object10.remove();
scene->_object6.remove();
- scene->_object7.remove();
+ scene->_slaveButton.remove();
scene->_object8.remove();
scene->_item1.remove();
scene->_item2.remove();
@@ -2031,10 +2031,10 @@ void Scene60::Object4::doAction(int action) {
scene->_object6.setPosition(Common::Point(233, 143));
scene->_object6.animate(ANIM_MODE_2, NULL);
- scene->_object7.postInit();
- scene->_object7.setVisage(60);
- scene->_object7.setStrip(8);
- scene->_object7.setPosition(Common::Point(143, 125));
+ scene->_slaveButton.postInit();
+ scene->_slaveButton.setVisage(60);
+ scene->_slaveButton.setStrip(8);
+ scene->_slaveButton.setPosition(Common::Point(143, 125));
scene->_object8.postInit();
scene->_object8.setVisage(60);
@@ -2042,23 +2042,23 @@ void Scene60::Object4::doAction(int action) {
scene->_object8.setPosition(Common::Point(143, 105));
_globals->_sceneItems.push_front(&scene->_object8);
- _globals->_sceneItems.push_front(&scene->_object7);
+ _globals->_sceneItems.push_front(&scene->_slaveButton);
scene->_object10.postInit();
scene->_object10.setVisage(60);
scene->_object10.setPosition(Common::Point(199, 186));
- scene->_object10.animate(ANIM_MODE_8, NULL);
+ scene->_object10.animate(ANIM_MODE_8, 0, NULL);
scene->_object10._numFrames = 5;
scene->_object10.setAction(&scene->_sequenceManager, scene, 61, NULL);
- if (scene->_object7._state)
- scene->_object7.setFrame(2);
+ if (scene->_slaveButton._state)
+ scene->_slaveButton.setFrame(2);
if (scene->_object8._state)
scene->_object8.setFrame(2);
_globals->_sceneItems.push_front(&scene->_item1);
_globals->_sceneItems.push_front(&scene->_object6);
- _globals->_sceneItems.push_front(&scene->_object7);
+ _globals->_sceneItems.push_front(&scene->_slaveButton);
_globals->_sceneItems.push_front(&scene->_object8);
_globals->_sceneItems.push_back(&scene->_item2);
@@ -2094,8 +2094,8 @@ void Scene60::Object6::doAction(int action) {
SceneItem::display2(60, 11);
} else if (action == CURSOR_USE) {
if (_animateMode == ANIM_MODE_NONE)
- SceneItem::display2(50, 14);
- else if (!scene->_object7._state) {
+ SceneItem::display2(60, 14);
+ else if (!scene->_slaveButton._state) {
_globals->_soundHandler.startSound(40);
_globals->_soundHandler.proc5(1);
_globals->_sceneManager.changeScene(20);
@@ -2113,13 +2113,13 @@ void Scene60::SceneObject2::synchronise(Serialiser &s) {
}
-void Scene60::Object7::doAction(int action) {
+void Scene60::SlaveObject::doAction(int action) {
Scene60 *scene = (Scene60 *)_globals->_sceneManager._scene;
if (action == CURSOR_LOOK) {
SceneItem::display2(60, 8);
} else if (action == CURSOR_USE) {
- if (!scene->_object8._state)
+ if (scene->_object8._state)
scene->_sceneMode = 19;
else if (_state) {
scene->_soundHandler3.proc3();
@@ -2222,7 +2222,7 @@ void Scene60::Item1::doAction(int action) {
scene->setAction(&scene->_action2);
}
default:
- SceneItem::doAction(action);
+ SceneHotspot::doAction(action);
break;
}
}
@@ -2232,10 +2232,10 @@ void Scene60::Item::doAction(int action) {
switch (action) {
case CURSOR_LOOK:
- SceneItem::display2(60, 12);
+ SceneItem::display2(60, _messageNum);
break;
case CURSOR_USE:
- scene->_sceneMode = 12;
+ scene->_sceneMode = _sceneMode;
setAction(&scene->_sequenceManager, this, 62, NULL);
break;
default:
@@ -2263,11 +2263,11 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
_globals->_player._uiEnabled = true;
_globals->_events.setCursor(CURSOR_USE);
- _object7.postInit();
- _object7.setVisage(60);
- _object7.setStrip(8);
- _object7.setPosition(Common::Point(143, 125));
- _object7._state = 0;
+ _slaveButton.postInit();
+ _slaveButton.setVisage(60);
+ _slaveButton.setStrip(8);
+ _slaveButton.setPosition(Common::Point(143, 125));
+ _slaveButton._state = 0;
_object8.postInit();
_object8.setVisage(60);
@@ -2276,7 +2276,7 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
_object8._state = 0;
_globals->_sceneItems.push_back(&_object8);
- _globals->_sceneItems.push_back(&_object7);
+ _globals->_sceneItems.push_back(&_slaveButton);
_object6.postInit();
_object6.setVisage(60);
@@ -2297,8 +2297,8 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
if (_globals->_stripNum == 0) {
if (_globals->getFlag(117)) {
- _object7._state = 1;
- _object7.setFrame(2);
+ _slaveButton._state = 1;
+ _slaveButton.setFrame(2);
}
if (_globals->getFlag(116)) {
@@ -2312,7 +2312,7 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
_object10.postInit();
_object10.setVisage(60);
_object10.setPosition(Common::Point(199, 186));
- _object10.animate(ANIM_MODE_8, NULL);
+ _object10.animate(ANIM_MODE_8, 0, NULL);
_soundHandler1.startSound(35);
@@ -2331,8 +2331,8 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
}
} else {
if (_globals->getFlag(120)) {
- _object7._state = 1;
- _object7.setFrame(2);
+ _slaveButton._state = 1;
+ _slaveButton.setFrame(2);
}
if (_globals->getFlag(119)) {
@@ -2346,23 +2346,23 @@ void Scene60::postInit(SceneObjectList *OwnerList) {
_object10.postInit();
_object10.setVisage(60);
_object10.setPosition(Common::Point(199, 186));
- _object10.animate(ANIM_MODE_8, NULL);
+ _object10.animate(ANIM_MODE_8, 0, NULL);
_object10._numFrames = 5;
_soundHandler1.startSound(35);
- }
- if (!_globals->getFlag(83)) {
- _object5.postInit();
- _object5.setVisage(60);
- _object5.setStrip2(3);
- _object5.setFrame(2);
- _object5.setPosition(Common::Point(148, 85));
- _object5.animate(ANIM_MODE_2, NULL);
- _object5._numFrames = 5;
- _globals->_sceneItems.push_front(&_object5);
-
- _soundHandler2.startSound(38);
+ if (!_globals->getFlag(83)) {
+ _object5.postInit();
+ _object5.setVisage(60);
+ _object5.setStrip2(3);
+ _object5.setFrame(2);
+ _object5.setPosition(Common::Point(148, 85));
+ _object5.animate(ANIM_MODE_2, NULL);
+ _object5._numFrames = 5;
+ _globals->_sceneItems.push_front(&_object5);
+
+ _soundHandler2.startSound(38);
+ }
}
}
diff --git a/engines/tsage/ringworld_scenes1.h b/engines/tsage/ringworld_scenes1.h
index 973cf272b6..46694efd97 100644
--- a/engines/tsage/ringworld_scenes1.h
+++ b/engines/tsage/ringworld_scenes1.h
@@ -363,7 +363,7 @@ class Scene60: public Scene {
public:
virtual void doAction(int action);
};
- class Object7: public SceneObject2 {
+ class SlaveObject: public SceneObject2 {
public:
virtual void doAction(int action);
};
@@ -380,11 +380,11 @@ class Scene60: public Scene {
public:
virtual void doAction(int action);
};
- class Item1: public SceneItem {
+ class Item1: public SceneHotspot {
public:
virtual void doAction(int action);
};
- class Item: public SceneItem {
+ class Item: public SceneHotspot {
public:
int _messageNum, _sceneMode;
@@ -409,11 +409,11 @@ public:
Object4 _object4;
Object5 _object5;
Object6 _object6;
- Object7 _object7;
+ SlaveObject _slaveButton;
Object8 _object8;
Object9 _object9;
SceneObject _object10;
- SceneItem _item1;
+ Item1 _item1;
Item _item2, _item3, _item4, _item5, _item6;
SoundHandler _soundHandler1;
SoundHandler _soundHandler2;