aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorMartin Kiewitz2010-02-05 20:44:03 +0000
committerMartin Kiewitz2010-02-05 20:44:03 +0000
commit248bc560f32ee78a25e606b8ff54a449be6bf6e2 (patch)
treeefe49c14d8329942ea2f6e66e671d8ab55b8b2c6 /engines/sci/engine
parent779fc7dc193d5ad360d02ccd33a86ea021f2e138 (diff)
downloadscummvm-rg350-248bc560f32ee78a25e606b8ff54a449be6bf6e2.tar.gz
scummvm-rg350-248bc560f32ee78a25e606b8ff54a449be6bf6e2.tar.bz2
scummvm-rg350-248bc560f32ee78a25e606b8ff54a449be6bf6e2.zip
SCI: moved onControl etc. into GfxCompare, now getting called directly. also fixed loading saved games due Gfx* changes
svn-id: r47912
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics.cpp39
-rw-r--r--engines/sci/engine/savegame.cpp5
-rw-r--r--engines/sci/engine/state.h2
3 files changed, 15 insertions, 31 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 0b6cd7e6fc..a41a536d63 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -38,6 +38,7 @@
#include "sci/graphics/gui32.h"
#include "sci/graphics/animate.h"
#include "sci/graphics/cache.h"
+#include "sci/graphics/compare.h"
#include "sci/graphics/controls.h"
#include "sci/graphics/cursor.h"
#include "sci/graphics/palette.h"
@@ -403,15 +404,8 @@ reg_t kDirLoop(EngineState *s, int argc, reg_t *argv) {
reg_t kCanBeHere(EngineState *s, int argc, reg_t *argv) {
reg_t curObject = argv[0];
reg_t listReference = (argc > 1) ? argv[1] : NULL_REG;
- bool canBeHere;
-
-#ifdef ENABLE_SCI32
- if (s->_gui32)
- canBeHere = s->_gui32->canBeHere(curObject, listReference);
- else
-#endif
- canBeHere = s->_gui->canBeHere(curObject, listReference);
-
+
+ bool canBeHere = s->_gfxCompare->kernelCanBeHere(curObject, listReference);
return make_reg(0, canBeHere);
}
@@ -419,15 +413,8 @@ reg_t kCanBeHere(EngineState *s, int argc, reg_t *argv) {
reg_t kCantBeHere(EngineState *s, int argc, reg_t *argv) {
reg_t curObject = argv[0];
reg_t listReference = (argc > 1) ? argv[1] : NULL_REG;
- bool canBeHere;
-#ifdef ENABLE_SCI32
- if (s->_gui32)
- canBeHere = s->_gui32->canBeHere(curObject, listReference);
- else
-#endif
- canBeHere = s->_gui->canBeHere(curObject, listReference);
-
+ bool canBeHere = s->_gfxCompare->kernelCanBeHere(curObject, listReference);
return make_reg(0, !canBeHere);
}
@@ -437,7 +424,7 @@ reg_t kIsItSkip(EngineState *s, int argc, reg_t *argv) {
int16 celNo = argv[2].toSint16();
Common::Point position(argv[4].toUint16(), argv[3].toUint16());
- bool result = s->_gui->isItSkip(viewId, loopNo, celNo, position);
+ bool result = s->_gfxCompare->kernelIsItSkip(viewId, loopNo, celNo, position);
return make_reg(0, result);
}
@@ -512,7 +499,7 @@ reg_t kOnControl(EngineState *s, int argc, reg_t *argv) {
rect.right = rect.left + 1;
rect.bottom = rect.top + 1;
}
- uint16 result = s->_gui->onControl(screenMask, rect);
+ uint16 result = s->_gfxCompare->kernelOnControl(screenMask, rect);
return make_reg(0, result);
}
@@ -553,12 +540,7 @@ reg_t kDrawPic(EngineState *s, int argc, reg_t *argv) {
reg_t kBaseSetter(EngineState *s, int argc, reg_t *argv) {
reg_t object = argv[0];
-#ifdef ENABLE_SCI32
- if (s->_gui32)
- s->_gui32->baseSetter(object);
- else
-#endif
- s->_gui->baseSetter(object);
+ s->_gfxCompare->kernelBaseSetter(object);
// WORKAROUND for a problem in LSL1VGA. This allows the casino door to be opened,
// till the actual problem is found
@@ -571,12 +553,7 @@ reg_t kBaseSetter(EngineState *s, int argc, reg_t *argv) {
}
reg_t kSetNowSeen(EngineState *s, int argc, reg_t *argv) {
-#ifdef ENABLE_SCI32
- if (s->_gui32)
- s->_gui32->setNowSeen(argv[0]);
- else
-#endif
- s->_gui->setNowSeen(argv[0]);
+ s->_gfxCompare->kernelSetNowSeen(argv[0]);
return s->r_acc;
}
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 377c676392..445bab573c 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -945,8 +945,12 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
retval->_gfxAnimate = s->_gfxAnimate;
retval->_gfxCache = s->_gfxCache;
+ retval->_gfxCompare = s->_gfxCompare;
retval->_gfxControls = s->_gfxControls;
+ retval->_gfxCoordAdjuster = s->_gfxCoordAdjuster;
+ retval->_gfxCursor = s->_gfxCursor;
retval->_gfxMenu = s->_gfxMenu;
+ retval->_gfxPaint16 = s->_gfxPaint16;
retval->_gfxPalette = s->_gfxPalette;
retval->_gfxPorts = s->_gfxPorts;
retval->_gfxScreen = s->_gfxScreen;
@@ -954,6 +958,7 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
#ifdef ENABLE_SCI32
// Copy the Gui32 pointer over to the new EngineState, if it exists
retval->_gui32 = s->_gui32;
+ retval->_gfxFrameout = s->_gfxFrameout;
#endif
// Copy some old data
diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h
index d2981b4a89..cb5dc023c9 100644
--- a/engines/sci/engine/state.h
+++ b/engines/sci/engine/state.h
@@ -53,6 +53,7 @@ namespace Sci {
class SciEvent;
class GfxAnimate;
class GfxCache;
+class GfxCompare;
class GfxControls;
class GfxCoordAdjuster;
class GfxCursor;
@@ -147,6 +148,7 @@ public:
GfxAnimate *_gfxAnimate; // Animate for 16-bit gfx
GfxCache *_gfxCache;
+ GfxCompare *_gfxCompare;
GfxControls *_gfxControls; // Controls for 16-bit gfx
GfxCoordAdjuster *_gfxCoordAdjuster;
GfxCursor *_gfxCursor;