aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/teenagent.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2009-09-13 09:54:53 +0000
committerVladimir Menshakov2009-09-13 09:54:53 +0000
commite53de46b4fd1357cce5bb53c02de2c88f85169cc (patch)
treeb79bbc6c12ca03bc803ef2c9406676f1a6e14446 /engines/teenagent/teenagent.cpp
parent94d7dad3affff49d014c1985955466ec4931f15b (diff)
downloadscummvm-rg350-e53de46b4fd1357cce5bb53c02de2c88f85169cc.tar.gz
scummvm-rg350-e53de46b4fd1357cce5bb53c02de2c88f85169cc.tar.bz2
scummvm-rg350-e53de46b4fd1357cce5bb53c02de2c88f85169cc.zip
added simple credits support for the intro.
svn-id: r44047
Diffstat (limited to 'engines/teenagent/teenagent.cpp')
-rw-r--r--engines/teenagent/teenagent.cpp37
1 files changed, 34 insertions, 3 deletions
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index 3aaf33eed4..055f7ad646 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -329,8 +329,9 @@ Object * TeenAgentEngine::findObject(int id, const Common::Point &point) {
}
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(const Common::String &str, byte color) {
}
-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,7 +349,37 @@ void TeenAgentEngine::displayMessage(uint16 addr, byte color) {
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) {