diff options
Diffstat (limited to 'engines/teenagent')
-rw-r--r-- | engines/teenagent/scene.cpp | 10 | ||||
-rw-r--r-- | engines/teenagent/scene.h | 1 | ||||
-rw-r--r-- | engines/teenagent/teenagent.cpp | 3 | ||||
-rw-r--r-- | engines/teenagent/teenagent.h | 1 |
4 files changed, 15 insertions, 0 deletions
diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp index 6ed6d72c7a..0e987e36c2 100644 --- a/engines/teenagent/scene.cpp +++ b/engines/teenagent/scene.cpp @@ -452,6 +452,16 @@ Animation * Scene::getAnimation(byte slot) { return custom_animation + slot; } +byte Scene::peekFlagEvent(uint16 addr) const { + for(EventList::const_iterator i = events.reverse_begin(); i != events.end(); --i) { + const SceneEvent &e = *i; + if (e.type == SceneEvent::kSetFlag && e.callback == addr) + return e.color; + } + return Resources::instance()->dseg.get_byte(addr); +} + + void Scene::push(const SceneEvent &event) { //debug(0, "push"); //event.dump(); diff --git a/engines/teenagent/scene.h b/engines/teenagent/scene.h index 0e0a3440bf..bf01e211ef 100644 --- a/engines/teenagent/scene.h +++ b/engines/teenagent/scene.h @@ -140,6 +140,7 @@ public: void displayMessage(const Common::String &str, byte color = 0xd1, const Common::Point &pos = Common::Point()); void setOrientation(uint8 o) { orientation = o; } void push(const SceneEvent &event); + byte peekFlagEvent(uint16 addr) const; SceneEvent::Type last_event_type() const { return !events.empty()? events.back().type: SceneEvent::kNone; } bool processEvent(const Common::Event &event); diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp index 551acd5343..2475f21d42 100644 --- a/engines/teenagent/teenagent.cpp +++ b/engines/teenagent/teenagent.cpp @@ -804,6 +804,9 @@ void TeenAgentEngine::setFlag(uint16 addr, byte value) { scene->push(event); } +byte TeenAgentEngine::getFlag(uint16 addr) { + return scene->peekFlagEvent(addr); +} void TeenAgentEngine::reloadLan() { SceneEvent event(SceneEvent::kSetLan); diff --git a/engines/teenagent/teenagent.h b/engines/teenagent/teenagent.h index 4a932047b5..7176108007 100644 --- a/engines/teenagent/teenagent.h +++ b/engines/teenagent/teenagent.h @@ -96,6 +96,7 @@ public: void setOns(byte id, byte value, byte scene_id = 0); void setLan(byte id, byte value, byte scene_id = 0); void setFlag(uint16 addr, byte value); + byte getFlag(uint16 addr); void reloadLan(); void rejectMessage(); |