[Scummvm-cvs-logs] SF.net SVN: scummvm:[45719] scummvm/trunk/engines/teenagent
megath at users.sourceforge.net
megath at users.sourceforge.net
Sat Nov 7 10:40:11 CET 2009
Revision: 45719
http://scummvm.svn.sourceforge.net/scummvm/?rev=45719&view=rev
Author: megath
Date: 2009-11-07 09:40:11 +0000 (Sat, 07 Nov 2009)
Log Message:
-----------
added default delays for the messages
Modified Paths:
--------------
scummvm/trunk/engines/teenagent/scene.cpp
scummvm/trunk/engines/teenagent/scene.h
Modified: scummvm/trunk/engines/teenagent/scene.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/scene.cpp 2009-11-07 09:19:49 UTC (rev 45718)
+++ scummvm/trunk/engines/teenagent/scene.cpp 2009-11-07 09:40:11 UTC (rev 45719)
@@ -299,6 +299,7 @@
case Common::EVENT_RBUTTONDOWN:
if (!message.empty()) {
message.clear();
+ message_timer = 0;
nextEvent();
return true;
}
@@ -309,6 +310,7 @@
if (intro) {
intro = false;
message.clear();
+ message_timer = 0;
events.clear();
sounds.clear();
current_event.clear();
@@ -323,6 +325,7 @@
if (!message.empty()) {
message.clear();
+ message_timer = 0;
nextEvent();
return true;
}
@@ -342,6 +345,13 @@
do {
restart = false;
busy = processEventQueue();
+ if (!message.empty() && message_timer != 0) {
+ if (--message_timer == 0) {
+ message.clear();
+ nextEvent();
+ continue;
+ }
+ }
if (current_event.type == SceneEvent::kCreditsMessage) {
system->fillScreen(0);
@@ -549,6 +559,7 @@
case SceneEvent::kCreditsMessage:
case SceneEvent::kMessage: {
message = current_event.message;
+ message_timer = messageDuration(message);
Common::Point p(
(actor_animation_position.left + actor_animation_position.right) / 2,
actor_animation_position.top
@@ -677,16 +688,32 @@
return position;
}
+uint Scene::messageDuration(const Common::String &str) {
+ uint words = 1;
+ for(uint i = 0; i < str.size(); ++i) {
+ if (str[i] == ' ' || str[i] == '\n')
+ ++words;
+ }
+ words *= 7; //add text speed here
+ if (words < 15)
+ words = 15;
+
+ return words;
+}
+
+
void Scene::displayMessage(const Common::String &str, byte color) {
//assert(!str.empty());
//debug(0, "displayMessage: %s", str.c_str());
message = str;
message_pos = messagePosition(str, position);
message_color = color;
+ message_timer = messageDuration(message);
}
void Scene::clear() {
message.clear();
+ message_timer = 0;
events.clear();
current_event.clear();
for(int i = 0; i < 4; ++i) {
Modified: scummvm/trunk/engines/teenagent/scene.h
===================================================================
--- scummvm/trunk/engines/teenagent/scene.h 2009-11-07 09:19:49 UTC (rev 45718)
+++ scummvm/trunk/engines/teenagent/scene.h 2009-11-07 09:40:11 UTC (rev 45719)
@@ -142,6 +142,7 @@
byte palette[768];
void setPalette(OSystem *system, const byte *palette, unsigned mul = 1);
static Common::Point messagePosition(const Common::String &str, Common::Point position);
+ static uint messageDuration(const Common::String &str);
bool processEventQueue();
inline bool nextEvent() {
@@ -170,6 +171,7 @@
Common::String message;
Common::Point message_pos;
byte message_color;
+ uint message_timer;
typedef Common::List<SceneEvent> EventList;
EventList events;
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