aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/converse.cpp2
-rw-r--r--engines/tsage/core.cpp33
-rw-r--r--engines/tsage/core.h4
-rw-r--r--engines/tsage/ringworld_scenes1.cpp14
-rw-r--r--engines/tsage/ringworld_scenes1.h5
-rw-r--r--engines/tsage/scenes.cpp2
6 files changed, 28 insertions, 32 deletions
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp
index a367ce540c..260308a784 100644
--- a/engines/tsage/converse.cpp
+++ b/engines/tsage/converse.cpp
@@ -252,7 +252,7 @@ void SequenceManager::signal() {
break;
case 30:
v1 = getNextValue();
- _globals->_scrollFollower = (v1 == 0xffff) ? NULL : _objectList[v1];
+ _globals->_scrollFollower = (v1 == -1) ? NULL : _objectList[v1];
break;
case 31:
_sceneObject->setObjectWrapper(new SceneObjectWrapper());
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 130238548e..4ce7513e12 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -145,9 +145,8 @@ InvObjectList::InvObjectList():
}
void InvObjectList::synchronise(Serialiser &s) {
+ SavedObject::synchronise(s);
SYNC_POINTER(_selectedItem);
-
-List<InvObject *> _itemList;
}
/*--------------------------------------------------------------------------*/
@@ -280,7 +279,7 @@ void ObjectMover::dispatch() {
if (dontMove())
return;
- _sceneObject->_field6E = NULL;
+ _sceneObject->_regionIndex = 0;
if (_moveDelta.x >= _moveDelta.y) {
int xAmount = _moveSign.x * _sceneObject->_moveDiff.x * _sceneObject->_percent / 100;
if (!xAmount)
@@ -334,8 +333,8 @@ void ObjectMover::dispatch() {
_majorDiff -= ABS(yAmount);
}
-//TODO: _sceneObject->_field6E = _sceneObject->proc1(currPos);
- if (!_sceneObject->_field6E) {
+ _sceneObject->_regionIndex = _sceneObject->checkRegion(currPos);
+ if (!_sceneObject->_regionIndex) {
_sceneObject->setPosition(currPos, yDiff);
_sceneObject->getHorizBounds();
@@ -434,7 +433,7 @@ void ObjectMover2::startMove(SceneObject *sceneObj, va_list va) {
}
void ObjectMover2::endMove() {
- _sceneObject->_field6E = 64;
+ _sceneObject->_regionIndex = 0x40;
}
/*--------------------------------------------------------------------------*/
@@ -499,7 +498,7 @@ void PlayerMover::endMove() {
while (++_routeIndex != 0) {
if ((_routeList[_routeIndex].x == ROUTE_END_VAL) ||
(_routeList[_routeIndex].y == ROUTE_END_VAL) ||
- (_sceneObject->_field6E)) {
+ (_sceneObject->_regionIndex)) {
// Movement route is completely finished
ObjectMover::endMove();
return;
@@ -1025,7 +1024,7 @@ void PlayerMover2::startMove(SceneObject *sceneObj, va_list va) {
}
void PlayerMover2::endMove() {
- _sceneObject->_field6E = 0x40;
+ _sceneObject->_regionIndex = 0x40;
}
/*--------------------------------------------------------------------------*/
@@ -1065,7 +1064,7 @@ void PaletteRotation::signal() {
uint32 frameNumber = _globals->_events.getFrameNumber();
if (frameNumber >= _frameNumber) {
- _delayCtr -= frameNumber - _frameNumber;
+ _delayCtr = frameNumber - _frameNumber;
_frameNumber = frameNumber;
if (_delayCtr < 0)
@@ -1079,7 +1078,8 @@ void PaletteRotation::signal() {
if (_disabled)
return;
- bool flag = true; switch (_rotationMode) {
+ bool flag = true;
+ switch (_rotationMode) {
case -1:
if (--_currIndex < _start) {
flag = decDuration();
@@ -1120,7 +1120,7 @@ void PaletteRotation::signal() {
g_system->getPaletteManager()->setPalette((const byte *)&_palette[_currIndex], _start, count);
if (count2) {
- g_system->getPaletteManager()->setPalette((const byte *)&_palette[_start], _start, count2);
+ g_system->getPaletteManager()->setPalette((const byte *)&_palette[_start], _start + count, count2);
}
}
}
@@ -2028,7 +2028,7 @@ void SceneObject::synchronise(Serialiser &s) {
s.syncAsSint32LE(_field68);
s.syncAsSint32LE(_frameChange);
s.syncAsSint32LE(_numFrames);
- s.syncAsSint32LE(_field6E);
+ s.syncAsSint32LE(_regionIndex);
SYNC_POINTER(_mover);
s.syncAsSint16LE(_moveDiff.x); s.syncAsSint16LE(_moveDiff.y);
s.syncAsSint32LE(_field7A);
@@ -2055,7 +2055,7 @@ void SceneObject::postInit(SceneObjectList *OwnerList) {
_moveDiff.x = 5;
_moveDiff.y = 3;
_field7A = 10;
- _field6E = 64;
+ _regionIndex = 0x40;
_numFrames = 10;
_regionBitList = 0;
@@ -3513,9 +3513,14 @@ void SceneHandler::dispatch() {
while (_globals->_events.getEvent(event))
process(event);
+ // Handle drawing the contents of the scene
+ if (_globals->_sceneManager._scene)
+ _globals->_sceneObjects->draw();
+
+ // Check to see if any scene change is required
_globals->_sceneManager.checkScene();
- _globals->_sceneObjects->draw();
+ // Signal the ScummVM debugger
_vm->_debugger->onFrame();
// Delay between frames
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index 84042f790a..be3dde15fc 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -501,7 +501,7 @@ private:
int getNewFrame();
void animEnded();
int changeFrame();
- bool isNoMover() const { return !_mover || (_field6E > 0); }
+ bool isNoMover() const { return !_mover || (_regionIndex > 0); }
public:
uint32 _updateStartFrame;
uint32 _walkStartFrame;
@@ -521,7 +521,7 @@ public:
int _field68;
int _frameChange;
int _numFrames;
- int _field6E;
+ int _regionIndex;
EventHandler *_mover;
Common::Point _moveDiff;
int _field7A;
diff --git a/engines/tsage/ringworld_scenes1.cpp b/engines/tsage/ringworld_scenes1.cpp
index 3facab40ea..033c684aeb 100644
--- a/engines/tsage/ringworld_scenes1.cpp
+++ b/engines/tsage/ringworld_scenes1.cpp
@@ -2108,11 +2108,6 @@ void Scene60::Object6::doAction(int action) {
}
}
-void Scene60::SceneObjectExt::synchronise(Serialiser &s) {
- s.syncAsUint16LE(_state);
-}
-
-
void Scene60::SlaveObject::doAction(int action) {
Scene60 *scene = (Scene60 *)_globals->_sceneManager._scene;
@@ -2931,8 +2926,8 @@ void Scene6100::Action5::dispatch() {
for (int idx = 0; idx < 4; ++idx) {
FloatSet tempSet = scene->_objList[idx]->_floats;
- tempSet.add(scene->_object5._floats._float1, scene->_object5._floats._float2,
- scene->_object5._floats._float3);
+ tempSet.add(-scene->_object5._floats._float1, -scene->_object5._floats._float2,
+ -scene->_object5._floats._float3);
tempSet.proc1(scene->_angle * MULTIPLY_FACTOR);
@@ -2943,7 +2938,7 @@ void Scene6100::Action5::dispatch() {
}
scene->_objList[idx]->_position.x = static_cast<int>(
- (tempSet._float2 + 330.0) / 330.0 * tempSet._float1 - 160.0);
+ 160.0 - ((tempSet._float2 + 330.0) / 330.0 * tempSet._float1));
if (tempSet._float2 < 0) {
scene->_objList[idx]->_position.y = 300;
@@ -2970,7 +2965,7 @@ void Scene6100::Action5::dispatch() {
}
scene->_objList[idx]->_flags |= OBJFLAG_PANES;
-
+/*
if ((idx != 3) && (scene->_fadePercent == 100) &&
(tempSet.sqrt(floatSet) < 150.0)) {
switch (scene->_field_312++) {
@@ -3002,6 +2997,7 @@ void Scene6100::Action5::dispatch() {
_globals->_scenePalette.clearListeners();
scene->_fadePercent = 0;
}
+ */
}
}
diff --git a/engines/tsage/ringworld_scenes1.h b/engines/tsage/ringworld_scenes1.h
index 95cf603728..cc3d472fab 100644
--- a/engines/tsage/ringworld_scenes1.h
+++ b/engines/tsage/ringworld_scenes1.h
@@ -368,11 +368,6 @@ class Scene60: public Scene {
public:
virtual void doAction(int action);
};
- class SceneObjectExt: public SceneObject {
- public:
- int _state;
- virtual void synchronise(Serialiser &s);
- };
class Object8: public SceneObjectExt {
public:
virtual void doAction(int action);
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index 5cd4fb7f4b..665fa46830 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -135,7 +135,7 @@ void SceneManager::changeScene(int newSceneNumber) {
// Fade out the scene
ScenePalette scenePalette;
uint32 adjustData = 0;
- scenePalette.clearListeners();
+ _globals->_scenePalette.clearListeners();
scenePalette.getPalette();
for (int percent = 100; percent >= 0; percent -= 5) {