[Scummvm-cvs-logs] SF.net SVN: scummvm:[44047] scummvm/trunk/engines/teenagent

megath at users.sourceforge.net megath at users.sourceforge.net
Sun Sep 13 11:54:53 CEST 2009


Revision: 44047
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44047&view=rev
Author:   megath
Date:     2009-09-13 09:54:53 +0000 (Sun, 13 Sep 2009)

Log Message:
-----------
added simple credits support for the intro.

Modified Paths:
--------------
    scummvm/trunk/engines/teenagent/resources.cpp
    scummvm/trunk/engines/teenagent/resources.h
    scummvm/trunk/engines/teenagent/scene.cpp
    scummvm/trunk/engines/teenagent/scene.h
    scummvm/trunk/engines/teenagent/teenagent.cpp
    scummvm/trunk/engines/teenagent/teenagent.h

Modified: scummvm/trunk/engines/teenagent/resources.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/resources.cpp	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/resources.cpp	2009-09-13 09:54:53 UTC (rev 44047)
@@ -73,6 +73,10 @@
 	sam_sam.open("sam_sam.res");
 
 	font7.load(7);
+	font7.width_pack = 1;
+	font7.height = 10;
+	font8.load(8);
+	font8.height = 31;
 	
 	return true;
 }

Modified: scummvm/trunk/engines/teenagent/resources.h
===================================================================
--- scummvm/trunk/engines/teenagent/resources.h	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/resources.h	2009-09-13 09:54:53 UTC (rev 44047)
@@ -49,7 +49,7 @@
 
 	Pack varia, off, on, ons, lan000, lan500, mmm, sam_mmm, sam_sam;
 	Segment cseg, dseg, eseg;
-	Font font7;
+	Font font7, font8;
 };
 
 } // End of namespace TeenAgent

Modified: scummvm/trunk/engines/teenagent/scene.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/scene.cpp	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/scene.cpp	2009-09-13 09:54:53 UTC (rev 44047)
@@ -276,6 +276,17 @@
 
 bool Scene::render(OSystem * system) {
 	//render background
+	Resources * res = Resources::instance();
+	if (current_event.type == SceneEvent::CreditsMessage) {
+		system->fillScreen(0);
+		Graphics::Surface * surface = system->lockScreen();
+		res->font8.color = current_event.color;
+		res->font8.shadow_color = current_event.orientation;
+		res->font8.render(surface, current_event.dst.x, current_event.dst.y, message);
+		system->unlockScreen();
+		return true;
+	}
+	
 	bool busy = false;
 	
 	system->copyRectToScreen((const byte *)background.pixels, background.pitch, 0, 0, background.w, background.h);
@@ -373,7 +384,7 @@
 	*/
 	
 	if (!message.empty()) {
-		Resources::instance()->font7.render(surface, message_pos.x, message_pos.y, message);
+		res->font7.render(surface, message_pos.x, message_pos.y, message);
 		busy = true;
 	}
 	
@@ -439,11 +450,12 @@
 				moveTo(dst, current_event.orientation);
 		} break;
 		
-		case SceneEvent::Message: {
+		case SceneEvent::CreditsMessage: 
+		case SceneEvent::Message: 
 			//debug(0, "pop(%04x)", current_event.message);
 			message = current_event.message;
 			message_pos = messagePosition(message, position);
-		} break;
+		break;
 		
 		case SceneEvent::PlayAnimation: {
 			debug(0, "playing animation %u", current_event.animation);

Modified: scummvm/trunk/engines/teenagent/scene.h
===================================================================
--- scummvm/trunk/engines/teenagent/scene.h	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/scene.h	2009-09-13 09:54:53 UTC (rev 44047)
@@ -43,7 +43,7 @@
 		None, Message, Walk, PlayAnimation, PlayActorAnimation, 
 		LoadScene, SetOn, SetLan, PlayMusic, 
 		PlaySound, EnableObject, WaitForAnimation,
-		Quit
+		CreditsMessage, Quit
 	} type;
 
 	Common::String message;

Modified: scummvm/trunk/engines/teenagent/teenagent.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.cpp	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/teenagent.cpp	2009-09-13 09:54:53 UTC (rev 44047)
@@ -329,8 +329,9 @@
 }
 
 void TeenAgentEngine::displayMessage(const Common::String &str, byte color) {
-	if (str.empty())
+	if (str.empty()) {
 		return;
+	}
 	SceneEvent event(SceneEvent::Message);
 	event.message = str;
 	event.color = color;
@@ -338,7 +339,7 @@
 }
 
 
-void TeenAgentEngine::displayMessage(uint16 addr, byte color) {
+Common::String TeenAgentEngine::parseMessage(uint16 addr) {
 	Common::String message;
 	for (
 		const char * str = (const char *)Resources::instance()->dseg.ptr(addr);
@@ -348,9 +349,39 @@
 		char c = str[0];
 		message += c != 0 && c != -1? c: '\n';
 	}
-	displayMessage(message, color);
+	if (message.empty()) {
+		warning("empty message parsed for %04x", addr);
+	}
+	return message;
 }
 
+
+void TeenAgentEngine::displayMessage(uint16 addr, byte color) {
+	displayMessage(parseMessage(addr), color);
+}
+
+void TeenAgentEngine::displayCredits(uint16 addr) {
+	SceneEvent event(SceneEvent::CreditsMessage);
+
+	const byte * src = Resources::instance()->dseg.ptr(addr);
+	event.orientation = *src++;
+	event.color = *src++;
+
+	event.dst.y = *src;
+	while(true) {
+		++src; //skip y position
+		Common::String line((const char *)src);
+		event.message += line;
+		src += line.size() + 1;
+		if (*src == 0)
+			break;
+		event.message += "\n";
+	}
+	int w = Resources::instance()->font8.render(NULL, 0, 0, event.message);
+	event.dst.x = (320 - w) / 2;
+	scene->push(event);
+}
+
 void TeenAgentEngine::moveTo(const Common::Point & dst, byte o, bool warp) {
 	moveTo(dst.x, dst.y, o, warp);
 }

Modified: scummvm/trunk/engines/teenagent/teenagent.h
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.h	2009-09-13 09:54:03 UTC (rev 44046)
+++ scummvm/trunk/engines/teenagent/teenagent.h	2009-09-13 09:54:53 UTC (rev 44047)
@@ -64,9 +64,12 @@
 	bool processCallback(uint16 addr);
 	inline Scene * getScene() { return scene; }
 
+	static Common::String parseMessage(uint16 addr);
+
 	//event driven:
 	void displayMessage(uint16 addr, byte color = 0xd1);
 	void displayMessage(const Common::String &str, byte color = 0xd1);
+	void displayCredits(uint16 addr);
 	void moveTo(const Common::Point & dst, byte o, bool warp = false);
 	void moveTo(uint16 x, uint16 y, byte o, bool warp = false);
 	void moveTo(Object * obj);


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