diff options
author | Filippos Karapetis | 2009-10-25 22:33:08 +0000 |
---|---|---|
committer | Filippos Karapetis | 2009-10-25 22:33:08 +0000 |
commit | b5feeb60b64a62434ace4f316b51aa7849b2702e (patch) | |
tree | 42864894b6604939fb6fa42bfed3a7f49884bfc5 | |
parent | 1a4b61739832a1f1d597b9c56e67dd8b80b32f76 (diff) | |
download | scummvm-rg350-b5feeb60b64a62434ace4f316b51aa7849b2702e.tar.gz scummvm-rg350-b5feeb60b64a62434ace4f316b51aa7849b2702e.tar.bz2 scummvm-rg350-b5feeb60b64a62434ace4f316b51aa7849b2702e.zip |
Moved the cel count calculation to the new graphics code
svn-id: r45379
-rw-r--r-- | engines/sci/console.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 21 | ||||
-rw-r--r-- | engines/sci/gfx/operations.cpp | 16 | ||||
-rw-r--r-- | engines/sci/gfx/operations.h | 12 | ||||
-rw-r--r-- | engines/sci/gui/gui.cpp | 11 | ||||
-rw-r--r-- | engines/sci/gui/gui.h | 1 |
6 files changed, 21 insertions, 44 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index d63a8709dd..3cff8ca840 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -1077,9 +1077,9 @@ bool Console::cmdViewInfo(int argc, const char **argv) { DebugPrintf("has %d loops:\n", loops); for (i = 0; i < loops; i++) { - int j, cels; + int j, cels = _vm->_gamestate->_gui->getCelCount(view, i); - DebugPrintf("Loop %d: %d cels.\n", i, cels = gfxop_lookup_view_get_cels(_vm->_gamestate->gfx_state, view, i)); + DebugPrintf("Loop %d: %d cels.\n", i, cels); for (j = 0; j < cels; j++) { int width; int height; diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 9a2257722b..e1f5dd8469 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -413,30 +413,23 @@ reg_t kNumLoops(EngineState *s, int argc, reg_t *argv) { SegManager *segMan = s->_segMan; reg_t obj = argv[0]; int view = GET_SEL32V(segMan, obj, view); - int loops_nr = s->_gui->getLoopCount(view); + int loopCount = s->_gui->getLoopCount(view); - if (loops_nr < 0) { - error("view.%d (0x%x) not found", view, view); - return NULL_REG; - } - - debugC(2, kDebugLevelGraphics, "NumLoops(view.%d) = %d\n", view, loops_nr); + debugC(2, kDebugLevelGraphics, "NumLoops(view.%d) = %d\n", view, loopCount); - return make_reg(0, loops_nr); + return make_reg(0, loopCount); } reg_t kNumCels(EngineState *s, int argc, reg_t *argv) { SegManager *segMan = s->_segMan; reg_t obj = argv[0]; - int loop = GET_SEL32V(segMan, obj, loop); int view = GET_SEL32V(segMan, obj, view); - int cel = 0xffff; - - s->gfx_state->gfxResMan->getView(view, &loop, &cel, 0); + int loop = GET_SEL32V(segMan, obj, loop); + int celCount = s->_gui->getCelCount(view, loop); - debugC(2, kDebugLevelGraphics, "NumCels(view.%d, %d) = %d\n", view, loop, cel + 1); + debugC(2, kDebugLevelGraphics, "NumCels(view.%d, %d) = %d\n", view, loop, celCount); - return make_reg(0, cel + 1); + return make_reg(0, celCount); } reg_t kOnControl(EngineState *s, int argc, reg_t *argv) { diff --git a/engines/sci/gfx/operations.cpp b/engines/sci/gfx/operations.cpp index 9edba13ae8..305252d672 100644 --- a/engines/sci/gfx/operations.cpp +++ b/engines/sci/gfx/operations.cpp @@ -1284,22 +1284,6 @@ sci_event_t gfxop_get_event(GfxState *state, unsigned int mask) { // View operations -int gfxop_lookup_view_get_cels(GfxState *state, int nr, int loop) { - int real_loop = loop, cel = 0; - gfxr_view_t *view = NULL; - - view = state->gfxResMan->getView(nr, &real_loop, &cel, 0); - - if (!view) { - warning("[GFX] Attempt to retrieve number of cels from invalid/broken view %d", nr); - return 0; - } else if (real_loop != loop) { - warning("[GFX] Loop number was corrected from %d to %d in view %d", loop, real_loop, nr); - } - - return view->loops[real_loop].cels_nr; -} - void gfxop_get_cel_parameters(GfxState *state, int nr, int loop, int cel, int *width, int *height, Common::Point *offset) { gfxr_view_t *view = NULL; gfx_pixmap_t *pxm = NULL; diff --git a/engines/sci/gfx/operations.h b/engines/sci/gfx/operations.h index 6e6ff938e5..1e3dd41b52 100644 --- a/engines/sci/gfx/operations.h +++ b/engines/sci/gfx/operations.h @@ -334,18 +334,6 @@ sci_event_t gfxop_get_event(GfxState *state, unsigned int mask); /** @{ */ /** - * Determines the number of cels associated stored in a loop. - * - * @param[in] state The state to look up in - * @param[in] nr Number of the view to look up in - * @param[in] loop Number of the loop the number of cels of are to be - * investigated - * @return The number of cels in that loop, or GFX_ERROR if either the - * view or the loop didn't exist - */ -int gfxop_lookup_view_get_cels(GfxState *state, int nr, int loop); - -/** * Retrieves the width and height of a cel. * * @param[in] state The state to use diff --git a/engines/sci/gui/gui.cpp b/engines/sci/gui/gui.cpp index a9f5915801..40434de5ff 100644 --- a/engines/sci/gui/gui.cpp +++ b/engines/sci/gui/gui.cpp @@ -690,6 +690,17 @@ int16 SciGui::getLoopCount(int view) { return loopCount; } +int16 SciGui::getCelCount(int view, int loop) { + SciGuiView *tmpView = new SciGuiView(_s->resMan, _screen, _palette, view); + if (!tmpView) + return -1; + + uint16 celCount = tmpView->getLoopInfo(loop)->celCount; + delete tmpView; + + return celCount; +} + bool SciGui::debugUndither(bool flag) { _screen->unditherSetState(flag); return false; diff --git a/engines/sci/gui/gui.h b/engines/sci/gui/gui.h index d7df04fb84..08ac12686a 100644 --- a/engines/sci/gui/gui.h +++ b/engines/sci/gui/gui.h @@ -127,6 +127,7 @@ public: int16 getCelHeight(int view, int loop, int cel); int16 getLoopCount(int view); + int16 getCelCount(int view, int loop); virtual bool debugUndither(bool flag); virtual bool debugShowMap(int mapNo); |