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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jan 31 16:07:38 CET 2010


Revision: 47751
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47751&view=rev
Author:   m_kiewitz
Date:     2010-01-31 15:07:36 +0000 (Sun, 31 Jan 2010)

Log Message:
-----------
SCI: renamed SciGuiAnimate to GfxAnimate, moved code from SciGui into this class, now getting called directly

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

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/console.cpp	2010-01-31 15:07:36 UTC (rev 47751)
@@ -45,6 +45,7 @@
 #include "sci/graphics/gui.h"
 #include "sci/graphics/gui32.h"
 #include "sci/graphics/cursor.h"
+#include "sci/graphics/screen.h"
 
 #include "sci/parser/vocabulary.h"
 
@@ -1073,7 +1074,7 @@
 	uint16 resourceId = atoi(argv[1]);
 
 	_vm->_gamestate->_gui->drawPicture(resourceId, 100, false, false, false, 0);
-	_vm->_gamestate->_gui->animateShowPic();
+	_vm->_gamestate->_screen->copyToScreen();
 	return true;
 }
 

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-31 15:07:36 UTC (rev 47751)
@@ -973,7 +973,7 @@
 	case 1:
 		if (argv[0].isNull())
 			return s->r_acc;
-		s->_gui->addToPicList(argv[0], argc, argv);
+		s->_gfxAnimate->kernelAddToPicList(argv[0], argc, argv);
 		break;
 	case 7:
 		viewId = argv[0].toUint16();
@@ -983,7 +983,7 @@
 		topPos = argv[4].toSint16();
 		priority = argv[5].toSint16();
 		control = argv[6].toSint16();
-		s->_gui->addToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
+		s->_gfxAnimate->kernelAddToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
 		break;
 	default:
 		error("kAddToPic with unsupported parameter count %d", argc);
@@ -1102,7 +1102,7 @@
 	// Take care of incoming events (kAnimate is called semi-regularly)
 	process_sound_events(s);
 #endif
-	s->_gui->animate(castListReference, cycle, argc, argv);
+	s->_gfxAnimate->kernelAnimate(castListReference, cycle, argc, argv);
 
 	return s->r_acc;
 }

Modified: scummvm/trunk/engines/sci/engine/state.h
===================================================================
--- scummvm/trunk/engines/sci/engine/state.h	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/engine/state.h	2010-01-31 15:07:36 UTC (rev 47751)
@@ -51,7 +51,9 @@
 
 class SciEvent;
 class Menubar;
+class GfxAnimate;
 class GfxPorts;
+class Screen;
 class SciGui;
 class Cursor;
 class MessageState;
@@ -148,7 +150,9 @@
 
 	/* Non-VM information */
 
-	GfxPorts *_gfxPorts; // Port managment for 16-bit gui
+	GfxAnimate *_gfxAnimate; // Animate for 16-bit gfx
+	GfxPorts *_gfxPorts; // Port managment for 16-bit gfx
+	Screen *_screen; // gfx screen
 	SciGui *_gui; /* Currently active Gui */
 
 #ifdef ENABLE_SCI32

Modified: scummvm/trunk/engines/sci/graphics/animate.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/animate.cpp	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/graphics/animate.cpp	2010-01-31 15:07:36 UTC (rev 47751)
@@ -32,6 +32,7 @@
 #include "sci/engine/selector.h"
 #include "sci/engine/vm.h"
 #include "sci/graphics/cache.h"
+#include "sci/graphics/cursor.h"
 #include "sci/graphics/ports.h"
 #include "sci/graphics/paint16.h"
 #include "sci/graphics/view.h"
@@ -41,17 +42,17 @@
 
 namespace Sci {
 
-SciGuiAnimate::SciGuiAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette)
-	: _s(state), _cache(cache), _ports(ports), _paint16(paint16), _screen(screen), _palette(palette) {
+GfxAnimate::GfxAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette, Cursor *cursor, Transitions *transitions)
+	: _s(state), _cache(cache), _ports(ports), _paint16(paint16), _screen(screen), _palette(palette), _cursor(cursor), _transitions(transitions) {
 	init();
 }
 
-SciGuiAnimate::~SciGuiAnimate() {
+GfxAnimate::~GfxAnimate() {
 	free(_listData);
 	free(_lastCastData);
 }
 
-void SciGuiAnimate::init() {
+void GfxAnimate::init() {
 	_listData = NULL;
 	_listCount = 0;
 	_lastCastData = NULL;
@@ -67,11 +68,11 @@
 		_ignoreFastCast = true;
 }
 
-void SciGuiAnimate::disposeLastCast() {
+void GfxAnimate::disposeLastCast() {
 	_lastCastCount = 0;
 }
 
-bool SciGuiAnimate::invoke(List *list, int argc, reg_t *argv) {
+bool GfxAnimate::invoke(List *list, int argc, reg_t *argv) {
 	reg_t curAddress = list->first;
 	Node *curNode = _s->_segMan->lookupNode(curAddress);
 	reg_t curObject;
@@ -108,7 +109,7 @@
 	return (entry1->y == entry2->y) ? (entry1->z < entry2->z) : (entry1->y < entry2->y);
 }
 
-void SciGuiAnimate::makeSortedList(List *list) {
+void GfxAnimate::makeSortedList(List *list) {
 	reg_t curAddress = list->first;
 	Node *curNode = _s->_segMan->lookupNode(curAddress);
 	reg_t curObject;
@@ -199,7 +200,7 @@
 	Common::sort(_list.begin(), _list.end(), sortHelper);
 }
 
-void SciGuiAnimate::fill(byte &old_picNotValid) {
+void GfxAnimate::fill(byte &old_picNotValid) {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	uint16 signal;
@@ -262,7 +263,7 @@
 	}
 }
 
-void SciGuiAnimate::update() {
+void GfxAnimate::update() {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	uint16 signal;
@@ -367,7 +368,7 @@
 	}
 }
 
-void SciGuiAnimate::drawCels() {
+void GfxAnimate::drawCels() {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	AnimateEntry *lastCastEntry = _lastCastData;
@@ -405,7 +406,7 @@
 	}
 }
 
-void SciGuiAnimate::updateScreen(byte oldPicNotValid) {
+void GfxAnimate::updateScreen(byte oldPicNotValid) {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	uint16 signal;
@@ -454,7 +455,7 @@
 	// _screen->copyToScreen();
 }
 
-void SciGuiAnimate::restoreAndDelete(int argc, reg_t *argv) {
+void GfxAnimate::restoreAndDelete(int argc, reg_t *argv) {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	uint16 signal;
@@ -495,7 +496,7 @@
 	}
 }
 
-void SciGuiAnimate::reAnimate(Common::Rect rect) {
+void GfxAnimate::reAnimate(Common::Rect rect) {
 	AnimateEntry *lastCastEntry;
 	uint16 lastCastCount;
 
@@ -542,7 +543,7 @@
 	*/
 }
 
-void SciGuiAnimate::addToPicDrawCels() {
+void GfxAnimate::addToPicDrawCels() {
 	reg_t curObject;
 	AnimateEntry *listEntry;
 	View *view = NULL;
@@ -574,7 +575,7 @@
 	}
 }
 
-void SciGuiAnimate::addToPicDrawView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
+void GfxAnimate::addToPicDrawView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
 	View *view = _cache->getView(viewId);
 	Common::Rect celRect;
 
@@ -583,4 +584,95 @@
 	_paint16->drawCel(view, loopNo, celNo, celRect, priority, 0);
 }
 
+
+void GfxAnimate::animateShowPic() {
+	Port *picPort = _ports->_picWind;
+	Common::Rect picRect = picPort->rect;
+	bool previousCursorState = _cursor->isVisible();
+
+	if (previousCursorState)
+		_cursor->hide();
+	// Adjust picRect to become relative to screen
+	picRect.translate(picPort->left, picPort->top);
+	_transitions->doit(picRect);
+	if (previousCursorState)
+		_cursor->show();
+
+	// We set SCI1.1 priority band information here
+	_ports->priorityBandsRecall();
+}
+
+void GfxAnimate::kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t *argv) {
+	byte old_picNotValid = _screen->_picNotValid;
+
+	if (listReference.isNull()) {
+		disposeLastCast();
+		if (_screen->_picNotValid)
+			animateShowPic();
+		return;
+	}
+
+	List *list = _s->_segMan->lookupList(listReference);
+	if (!list)
+		error("kAnimate called with non-list as parameter");
+
+	if (cycle) {
+		if (!invoke(list, argc, argv))
+			return;
+	}
+
+	Port *oldPort = _ports->setPort((Port *)_ports->_picWind);
+	disposeLastCast();
+
+	makeSortedList(list);
+	fill(old_picNotValid);
+
+	if (old_picNotValid) {
+		_ports->beginUpdate(_ports->_picWind);
+		update();
+		_ports->endUpdate(_ports->_picWind);
+	}
+
+	drawCels();
+
+	if (_screen->_picNotValid)
+		animateShowPic();
+
+	updateScreen(old_picNotValid);
+	restoreAndDelete(argc, argv);
+
+	if (getLastCastCount() > 1)
+		_s->_throttleTrigger = true;
+
+	_ports->setPort(oldPort);
+}
+
+void GfxAnimate::addToPicSetPicNotValid() {
+	if (getSciVersion() <= SCI_VERSION_1_EARLY)
+		_screen->_picNotValid = 1;
+	else
+		_screen->_picNotValid = 2;
+}
+
+void GfxAnimate::kernelAddToPicList(reg_t listReference, int argc, reg_t *argv) {
+	List *list;
+
+	_ports->setPort((Port *)_ports->_picWind);
+
+	list = _s->_segMan->lookupList(listReference);
+	if (!list)
+		error("kAddToPic called with non-list as parameter");
+
+	makeSortedList(list);
+	addToPicDrawCels();
+
+	addToPicSetPicNotValid();
+}
+
+void GfxAnimate::kernelAddToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
+	_ports->setPort((Port *)_ports->_picWind);
+	addToPicDrawView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
+	addToPicSetPicNotValid();
+}
+
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/graphics/animate.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/animate.h	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/graphics/animate.h	2010-01-31 15:07:36 UTC (rev 47751)
@@ -62,10 +62,10 @@
 class Screen;
 class SciPalette;
 class Transitions;
-class SciGuiAnimate {
+class GfxAnimate {
 public:
-	SciGuiAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette);
-	~SciGuiAnimate();
+	GfxAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette, Cursor *cursor, Transitions *transitions);
+	~GfxAnimate();
 
 	// FIXME: Don't store EngineState
 	void resetEngineState(EngineState *newState) { _s = newState; }
@@ -84,15 +84,24 @@
 
 	uint16 getLastCastCount() { return _lastCastCount; };
 
+	virtual void kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t *argv);
+	virtual void kernelAddToPicList(reg_t listReference, int argc, reg_t *argv);
+	virtual void kernelAddToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control);
+
 private:
 	void init();
 
+	void addToPicSetPicNotValid();
+	void animateShowPic();
+
 	EngineState *_s;
 	GfxCache *_cache;
 	GfxPorts *_ports;
 	GfxPaint16 *_paint16;
 	Screen *_screen;
 	SciPalette *_palette;
+	Cursor *_cursor;
+	Transitions *_transitions;
 
 	uint16 _listCount;
 	AnimateEntry *_listData;

Modified: scummvm/trunk/engines/sci/graphics/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui.cpp	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/graphics/gui.cpp	2010-01-31 15:07:36 UTC (rev 47751)
@@ -57,7 +57,8 @@
 	_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
 	_paint16 = new GfxPaint16(_s->resMan, _s->_segMan, _s->_kernel, _cache, _ports, _screen, _palette);
 	_transitions = new Transitions(this, _screen, _palette, _s->resMan->isVGA());
-	_animate = new SciGuiAnimate(_s, _cache, _ports, _paint16, _screen, _palette);
+	_animate = new GfxAnimate(_s, _cache, _ports, _paint16, _screen, _palette, _cursor, _transitions);
+	_s->_gfxAnimate = _animate;
 	_text = new Text(_s->resMan, _ports, _paint16, _screen);
 	_controls = new Controls(_s->_segMan, _ports, _paint16, _text);
 	_menu = new Menu(_s->_event, _s->_segMan, this, _ports, _paint16, _text, _screen, _cursor);
@@ -572,96 +573,6 @@
 	return result;
 }
 
-void SciGui::animateShowPic() {
-	Port *picPort = _ports->_picWind;
-	Common::Rect picRect = picPort->rect;
-	bool previousCursorState = _cursor->isVisible();
-
-	if (previousCursorState)
-		_cursor->hide();
-	// Adjust picRect to become relative to screen
-	picRect.translate(picPort->left, picPort->top);
-	_transitions->doit(picRect);
-	if (previousCursorState)
-		_cursor->show();
-
-	// We set SCI1.1 priority band information here
-	_ports->priorityBandsRecall();
-}
-
-void SciGui::animate(reg_t listReference, bool cycle, int argc, reg_t *argv) {
-	byte old_picNotValid = _screen->_picNotValid;
-
-	if (listReference.isNull()) {
-		_animate->disposeLastCast();
-		if (_screen->_picNotValid)
-			animateShowPic();
-		return;
-	}
-
-	List *list = _s->_segMan->lookupList(listReference);
-	if (!list)
-		error("kAnimate called with non-list as parameter");
-
-	if (cycle) {
-		if (!_animate->invoke(list, argc, argv))
-			return;
-	}
-
-	Port *oldPort = _ports->setPort((Port *)_ports->_picWind);
-	_animate->disposeLastCast();
-
-	_animate->makeSortedList(list);
-	_animate->fill(old_picNotValid);
-
-	if (old_picNotValid) {
-		_ports->beginUpdate(_ports->_picWind);
-		_animate->update();
-		_ports->endUpdate(_ports->_picWind);
-	}
-
-	_animate->drawCels();
-
-	if (_screen->_picNotValid)
-		animateShowPic();
-
-	_animate->updateScreen(old_picNotValid);
-	_animate->restoreAndDelete(argc, argv);
-
-	if (_animate->getLastCastCount() > 1)
-		_s->_throttleTrigger = true;
-
-	_ports->setPort(oldPort);
-}
-
-void SciGui::addToPicSetPicNotValid() {
-	if (getSciVersion() <= SCI_VERSION_1_EARLY)
-		_screen->_picNotValid = 1;
-	else
-		_screen->_picNotValid = 2;
-}
-
-void SciGui::addToPicList(reg_t listReference, int argc, reg_t *argv) {
-	List *list;
-
-	_ports->setPort((Port *)_ports->_picWind);
-
-	list = _s->_segMan->lookupList(listReference);
-	if (!list)
-		error("kAddToPic called with non-list as parameter");
-
-	_animate->makeSortedList(list);
-	_animate->addToPicDrawCels();
-
-	addToPicSetPicNotValid();
-}
-
-void SciGui::addToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
-	_ports->setPort((Port *)_ports->_picWind);
-	_animate->addToPicDrawView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
-	addToPicSetPicNotValid();
-}
-
 void SciGui::setNowSeen(reg_t objectReference) {
 	_compare->SetNowSeen(objectReference);
 }

Modified: scummvm/trunk/engines/sci/graphics/gui.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui.h	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/graphics/gui.h	2010-01-31 15:07:36 UTC (rev 47751)
@@ -123,10 +123,6 @@
 	virtual void shakeScreen(uint16 shakeCount, uint16 directions);
 
 	virtual uint16 onControl(byte screenMask, Common::Rect rect);
-	virtual void animateShowPic();
-	virtual void animate(reg_t listReference, bool cycle, int argc, reg_t *argv);
-	virtual void addToPicList(reg_t listReference, int argc, reg_t *argv);
-	virtual void addToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control);
 	virtual void setNowSeen(reg_t objectReference);
 	virtual bool canBeHere(reg_t curObject, reg_t listReference);
 	virtual bool isItSkip(GuiResourceId viewId, int16 loopNo, int16 celNo, Common::Point position);
@@ -177,13 +173,12 @@
 
 private:
 	virtual void initPriorityBands();
-	virtual void addToPicSetPicNotValid();
 	virtual int getControlPicNotValid();
 	static void palVaryCallback(void *refCon);
 	void doPalVary();
 
 	AudioPlayer *_audio;
-	SciGuiAnimate *_animate;
+	GfxAnimate *_animate;
 	Controls *_controls;
 	Menu *_menu;
 	Text *_text;

Modified: scummvm/trunk/engines/sci/sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sci.cpp	2010-01-31 13:18:32 UTC (rev 47750)
+++ scummvm/trunk/engines/sci/sci.cpp	2010-01-31 15:07:36 UTC (rev 47751)
@@ -172,6 +172,7 @@
 #ifdef ENABLE_SCI32
 	if (getSciVersion() >= SCI_VERSION_2) {
 		_gamestate->_gfxPorts = 0;
+		_gamestate->_gfxAnimate = 0;
 		_gamestate->_gui = 0;
 		_gamestate->_gui32 = new SciGui32(_gamestate, screen, palette, cursor);
 	} else {
@@ -183,6 +184,7 @@
 	_gamestate->_ports = new GfxPorts(_segMan, _screen);
 	_gamestate->_gui = new SciGui(_gamestate, screen, palette, cursor, _audio);
 #endif
+	_gamestate->_screen = screen;
 
 	if (game_init(_gamestate)) { /* Initialize */
 		warning("Game initialization failed: Aborting...");


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