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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sat Jan 23 22:33:24 CET 2010


Revision: 47485
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47485&view=rev
Author:   thebluegr
Date:     2010-01-23 21:33:24 +0000 (Sat, 23 Jan 2010)

Log Message:
-----------
Added some skeleton code for kPalVary()

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

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-23 20:27:14 UTC (rev 47484)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-23 21:33:24 UTC (rev 47485)
@@ -604,7 +604,7 @@
 		if (argc == 3) {
 			paletteId = argv[1].toUint16();
 			time = argv[2].toUint16();
-			// forward call to SciGui
+			s->_gui->startPalVary(paletteId, time);
 		} else {
 			warning("kPalVary(init) called with unsupported argc %d", argc);
 		}
@@ -612,7 +612,7 @@
 	}
 	case 3: { // DeInit
 		if (argc == 1) {
-			// forward call to SciGui
+			s->_gui->stopPalVary();
 		} else {
 			warning("kPalVary(deinit) called with unsupported argc %d", argc);
 		}
@@ -622,9 +622,7 @@
 		bool pauseState;
 		if (argc == 2) {
 			pauseState = argv[1].isNull() ? false : true;
-			// 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
-			// forward call to SciGui
+			s->_gui->togglePalVary(pauseState);
 		} else {
 			warning("kPalVary(pause) called with unsupported argc %d", argc);
 		}

Modified: scummvm/trunk/engines/sci/graphics/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui.cpp	2010-01-23 20:27:14 UTC (rev 47484)
+++ scummvm/trunk/engines/sci/graphics/gui.cpp	2010-01-23 21:33:24 UTC (rev 47485)
@@ -863,6 +863,39 @@
 void SciGui::portraitUnload(uint16 portraitId) {
 }
 
+void SciGui::startPalVary(uint16 paletteId, uint16 ticks) {
+	if (_palVaryId >= 0)	// another palvary is taking place, return
+		return;
+
+	_palVaryId = paletteId;
+	_palVaryStart = g_system->getMillis();
+	_palVaryEnd = _palVaryStart + ticks * 1000 / 60;
+	((SciEngine*)g_engine)->getTimerManager()->installTimerProc(&palVaryCallback, 1000 / 60, this);
+}
+
+void SciGui::togglePalVary(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
+}
+
+void SciGui::stopPalVary() {
+	((SciEngine*)g_engine)->getTimerManager()->removeTimerProc(&palVaryCallback);
+	_palVaryId = -1;	// invalidate the target palette
+
+	// HACK: just set the target palette
+	_palette->setFromResource(_palVaryId, 2);
+}
+
+void SciGui::palVaryCallback(void *refCon) {
+	((SciGui *)refCon)->doPalVary();
+}
+
+void SciGui::doPalVary() {
+	// TODO: do palette transition here...
+}
+
 #ifdef ENABLE_SCI32
 void SciGui::addScreenItem(reg_t object) {
 	_screenItems.push_back(object);

Modified: scummvm/trunk/engines/sci/graphics/gui.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui.h	2010-01-23 20:27:14 UTC (rev 47484)
+++ scummvm/trunk/engines/sci/graphics/gui.h	2010-01-23 21:33:24 UTC (rev 47485)
@@ -151,6 +151,10 @@
 	virtual void portraitShow(Common::String resourceName, Common::Point position, uint16 resourceNum, uint16 noun, uint16 verb, uint16 cond, uint16 seq);
 	virtual void portraitUnload(uint16 portraitId);
 
+	void startPalVary(uint16 paletteId, uint16 ticks);
+	void togglePalVary(bool pause);
+	void stopPalVary();
+
 #ifdef ENABLE_SCI32
 	// SCI32
 	virtual void addScreenItem(reg_t object);
@@ -183,6 +187,8 @@
 	virtual void initPriorityBands();
 	virtual void addToPicSetPicNotValid();
 	virtual int getControlPicNotValid();
+	static void palVaryCallback(void *refCon);
+	void doPalVary();
 
 	WindowMgr *_windowMgr;
 	AudioPlayer *_audio;
@@ -191,6 +197,9 @@
 	Menu *_menu;
 	Text *_text;
 	Transitions *_transitions;
+	int16 _palVaryId;
+	uint32 _palVaryStart;
+	uint32 _palVaryEnd;
 
 	bool _usesOldGfxFunctions;
 


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