[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