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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jun 20 17:01:32 CEST 2010


Revision: 50081
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50081&view=rev
Author:   m_kiewitz
Date:     2010-06-20 15:01:31 +0000 (Sun, 20 Jun 2010)

Log Message:
-----------
SCI: kPalVary - cleanup and some more code

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/graphics/animate.cpp
    scummvm/trunk/engines/sci/graphics/palette.cpp
    scummvm/trunk/engines/sci/graphics/palette.h

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-20 14:46:00 UTC (rev 50080)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-06-20 15:01:31 UTC (rev 50081)
@@ -652,7 +652,7 @@
 			ticks = argv[2].toUint16();
 			paletteStop = argc >= 4 ? argv[3].toUint16() : 64;
 			paletteDirection = argc >= 5 ? argv[4].toUint16() : 1;
-			g_sci->_gfxPalette->startPalVary(paletteId, ticks);
+			g_sci->_gfxPalette->kernelPalVaryInit(paletteId, ticks);
 			warning("kPalVary(init) called with paletteId = %d, ticks = %d, stop = %d, direction = %d", paletteId, ticks, paletteStop, paletteDirection);
 		} else {
 			warning("kPalVary(init) called with unsupported argc %d", argc);
@@ -670,7 +670,7 @@
 	}
 	case 3: { // DeInit
 		if (argc == 1) {
-			g_sci->_gfxPalette->stopPalVary();
+			g_sci->_gfxPalette->kernelPalVaryDeinit();
 			warning("kPalVary(deinit)");
 		} else {
 			warning("kPalVary(deinit) called with unsupported argc %d", argc);
@@ -690,7 +690,7 @@
 		bool pauseState;
 		if (argc == 2) {
 			pauseState = argv[1].isNull() ? false : true;
-			g_sci->_gfxPalette->togglePalVary(pauseState);
+			g_sci->_gfxPalette->kernelPalVaryToggle(pauseState);
 			warning("kPalVary(pause) called with state = %d", pauseState);
 		} else {
 			warning("kPalVary(pause) called with unsupported argc %d", argc);

Modified: scummvm/trunk/engines/sci/graphics/animate.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/animate.cpp	2010-06-20 14:46:00 UTC (rev 50080)
+++ scummvm/trunk/engines/sci/graphics/animate.cpp	2010-06-20 15:01:31 UTC (rev 50081)
@@ -35,6 +35,7 @@
 #include "sci/graphics/cursor.h"
 #include "sci/graphics/ports.h"
 #include "sci/graphics/paint16.h"
+#include "sci/graphics/palette.h"
 #include "sci/graphics/view.h"
 #include "sci/graphics/screen.h"
 #include "sci/graphics/transitions.h"
@@ -592,6 +593,9 @@
 void GfxAnimate::kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t *argv) {
 	byte old_picNotValid = _screen->_picNotValid;
 
+	if (getSciVersion() >= SCI_VERSION_1_1)
+		_palette->palVaryUpdate();
+
 	if (listReference.isNull()) {
 		disposeLastCast();
 		if (_screen->_picNotValid)

Modified: scummvm/trunk/engines/sci/graphics/palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 14:46:00 UTC (rev 50080)
+++ scummvm/trunk/engines/sci/graphics/palette.cpp	2010-06-20 15:01:31 UTC (rev 50081)
@@ -72,6 +72,8 @@
 		_alwaysForceRealMerge = true;
 	else if (g_sci->getGameId() == "pq1sci")
 		_alwaysForceRealMerge = true;
+
+	palVaryInit();
 }
 
 GfxPalette::~GfxPalette() {
@@ -473,7 +475,7 @@
 // Saving/restoring
 //         need to save start and target-palette, when palVaryOn = true
 
-void GfxPalette::startPalVary(GuiResourceId resourceId, uint16 ticks) {
+void GfxPalette::kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks) {
 	kernelSetFromResource(resourceId, true);
 	return;
 
@@ -481,19 +483,23 @@
 		return;
 
 	_palVaryResourceId = resourceId;
-	_palVaryStart = g_system->getMillis();
-	_palVaryEnd = _palVaryStart + ticks * 1000 / 60;
-	g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60, this);
+	_palVarySignal = 0;
+	// Call signal increase every [ticks]
+	g_sci->getTimerManager()->installTimerProc(&palVaryCallback, 1000000 / 60 * ticks, this);
 }
 
-void GfxPalette::togglePalVary(bool pause) {
+void GfxPalette::kernelPalVaryToggle(bool pause) {
 	// this call is actually counting states, so calling this 3 times with true will require calling it later
 	// 3 times with false to actually remove pause
-
-	// TODO
+	if (pause) {
+		_palVaryPaused++;
+	} else {
+		if (_palVaryPaused)
+			_palVaryPaused--;
+	}
 }
 
-void GfxPalette::stopPalVary() {
+void GfxPalette::kernelPalVaryDeinit() {
 	g_sci->getTimerManager()->removeTimerProc(&palVaryCallback);
 
 	// HACK: just set the target palette
@@ -502,12 +508,24 @@
 	_palVaryResourceId = -1;	// invalidate the target palette
 }
 
+void GfxPalette::palVaryInit() {
+	_palVaryResourceId = -1;
+	_palVaryPaused = 0;
+	_palVarySignal = 0;
+}
+
 void GfxPalette::palVaryCallback(void *refCon) {
-	((GfxPalette *)refCon)->doPalVary();
+	((GfxPalette *)refCon)->palVaryIncreaseSignal();
 }
 
-void GfxPalette::doPalVary() {
-	// TODO: do palette transition here...
+void GfxPalette::palVaryIncreaseSignal() {
+	if (!_palVaryPaused)
+		_palVarySignal++;
 }
 
+// Actually do the pal vary processing
+void GfxPalette::palVaryUpdate() {
+
+}
+
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/graphics/palette.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 14:46:00 UTC (rev 50080)
+++ scummvm/trunk/engines/sci/graphics/palette.h	2010-06-20 15:01:31 UTC (rev 50081)
@@ -62,21 +62,26 @@
 	void kernelAnimateSet();
 	void kernelAssertPalette(GuiResourceId resourceId);
 
-	void startPalVary(GuiResourceId resourceId, uint16 ticks);
-	void togglePalVary(bool pause);
-	void stopPalVary();
+	void kernelPalVaryInit(GuiResourceId resourceId, uint16 ticks);
+	void kernelPalVaryToggle(bool pause);
+	void kernelPalVaryDeinit();
+	void palVaryUpdate();
 
 	Palette _sysPalette;
 
 private:
+	void palVaryInit();
 	static void palVaryCallback(void *refCon);
-	void doPalVary();
+	void palVaryIncreaseSignal();
 
 	GfxScreen *_screen;
 	ResourceManager *_resMan;
+
 	GuiResourceId _palVaryResourceId;
 	uint32 _palVaryStart;
 	uint32 _palVaryEnd;
+	int _palVaryPaused;
+	int _palVarySignal;
 
 	bool _sysPaletteChanged;
 	bool _alwaysForceRealMerge;


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