From 54d163c9661d86ab6d4364dde208e28ce42553d3 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Sun, 8 Nov 2009 20:00:31 +0000 Subject: implemented async messages (some animation requires it), added custom positioning. svn-id: r45756 --- engines/teenagent/teenagent.cpp | 46 +++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-) (limited to 'engines/teenagent/teenagent.cpp') 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); } -- cgit v1.2.3