aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/teenagent.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2009-11-08 20:00:31 +0000
committerVladimir Menshakov2009-11-08 20:00:31 +0000
commit54d163c9661d86ab6d4364dde208e28ce42553d3 (patch)
tree01193e0c3f137309573c43a01818fffa6b2cb220 /engines/teenagent/teenagent.cpp
parentc1b1d42b8740f31cc0dbb1a11e934d6db9de08b5 (diff)
downloadscummvm-rg350-54d163c9661d86ab6d4364dde208e28ce42553d3.tar.gz
scummvm-rg350-54d163c9661d86ab6d4364dde208e28ce42553d3.tar.bz2
scummvm-rg350-54d163c9661d86ab6d4364dde208e28ce42553d3.zip
implemented async messages (some animation requires it), added custom positioning.
svn-id: r45756
Diffstat (limited to 'engines/teenagent/teenagent.cpp')
-rw-r--r--engines/teenagent/teenagent.cpp46
1 files changed, 30 insertions, 16 deletions
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index 9acb318314..29f942f25d 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -355,18 +355,6 @@ Common::Error TeenAgentEngine::run() {
return Common::kNoError;
}
-void TeenAgentEngine::displayMessage(const Common::String &str, byte color) {
- if (str.empty()) {
- return;
- }
- SceneEvent event(SceneEvent::kMessage);
- event.message = str;
- event.color = color;
- event.lan = 4;
- scene->push(event);
-}
-
-
Common::String TeenAgentEngine::parseMessage(uint16 addr) {
Common::String message;
for (
@@ -382,9 +370,35 @@ Common::String TeenAgentEngine::parseMessage(uint16 addr) {
return message;
}
+void TeenAgentEngine::displayMessage(const Common::String &str, byte color, uint16 position) {
+ if (str.empty()) {
+ return;
+ }
+ SceneEvent event(SceneEvent::kMessage);
+ event.message = str;
+ event.color = color;
+ event.slot = 4;
+ event.dst.x = position % 320;
+ event.dst.y = position / 320;
+
+ scene->push(event);
+}
+
+void TeenAgentEngine::displayMessage(uint16 addr, byte color, uint16 position) {
+ displayMessage(parseMessage(addr), color, position);
+}
-void TeenAgentEngine::displayMessage(uint16 addr, byte color) {
- displayMessage(parseMessage(addr), color);
+void TeenAgentEngine::displayAsyncMessage(uint16 addr, uint16 position, uint16 first_frame, uint16 last_frame, byte color) {
+ SceneEvent event(SceneEvent::kMessage);
+ event.message = parseMessage(addr);
+ event.slot = 4;
+ event.color = color;
+ event.dst.x = position % 320;
+ event.dst.y = position / 320;
+ event.first_frame = first_frame;
+ event.last_frame = last_frame;
+
+ scene->push(event);
}
void TeenAgentEngine::displayCredits(uint16 addr) {
@@ -455,7 +469,7 @@ void TeenAgentEngine::moveRel(int16 x, int16 y, byte o, bool warp) {
void TeenAgentEngine::playAnimation(uint16 id, byte slot, bool async) {
SceneEvent event(SceneEvent::kPlayAnimation);
event.animation = id;
- event.lan = slot;
+ event.slot = slot;
scene->push(event);
if (!async)
waitAnimation();
@@ -561,7 +575,7 @@ void TeenAgentEngine::waitLanAnimationFrame(byte slot, uint16 frame) {
if (frame > 0)
--frame;
- event.color = slot - 1;
+ event.slot = slot - 1;
event.animation = frame;
scene->push(event);
}