[Scummvm-cvs-logs] SF.net SVN: scummvm:[45379] scummvm/trunk/engines/sci

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sun Oct 25 23:33:08 CET 2009


Revision: 45379
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45379&view=rev
Author:   thebluegr
Date:     2009-10-25 22:33:08 +0000 (Sun, 25 Oct 2009)

Log Message:
-----------
Moved the cel count calculation to the new graphics code

Modified Paths:
--------------
    scummvm/trunk/engines/sci/console.cpp
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/gfx/operations.cpp
    scummvm/trunk/engines/sci/gfx/operations.h
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui.h

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/console.cpp	2009-10-25 22:33:08 UTC (rev 45379)
@@ -1077,9 +1077,9 @@
 		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;

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-10-25 22:33:08 UTC (rev 45379)
@@ -413,30 +413,23 @@
 	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, loopCount);
 
-	debugC(2, kDebugLevelGraphics, "NumLoops(view.%d) = %d\n", view, loops_nr);
-
-	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;
+	int loop = GET_SEL32V(segMan, obj, loop);
+	int celCount = s->_gui->getCelCount(view, loop);
 
-	s->gfx_state->gfxResMan->getView(view, &loop, &cel, 0);
+	debugC(2, kDebugLevelGraphics, "NumCels(view.%d, %d) = %d\n", view, loop, celCount);
 
-	debugC(2, kDebugLevelGraphics, "NumCels(view.%d, %d) = %d\n", view, loop, cel + 1);
-
-	return make_reg(0, cel + 1);
+	return make_reg(0, celCount);
 }
 
 reg_t kOnControl(EngineState *s, int argc, reg_t *argv) {

Modified: scummvm/trunk/engines/sci/gfx/operations.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/operations.cpp	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/gfx/operations.cpp	2009-10-25 22:33:08 UTC (rev 45379)
@@ -1284,22 +1284,6 @@
 
 // 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;

Modified: scummvm/trunk/engines/sci/gfx/operations.h
===================================================================
--- scummvm/trunk/engines/sci/gfx/operations.h	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/gfx/operations.h	2009-10-25 22:33:08 UTC (rev 45379)
@@ -334,18 +334,6 @@
 /** @{ */
 
 /**
- * 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

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-10-25 22:33:08 UTC (rev 45379)
@@ -690,6 +690,17 @@
 	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;

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2009-10-25 20:53:07 UTC (rev 45378)
+++ scummvm/trunk/engines/sci/gui/gui.h	2009-10-25 22:33:08 UTC (rev 45379)
@@ -127,6 +127,7 @@
 	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);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list