[Scummvm-cvs-logs] SF.net SVN: scummvm:[44377] scummvm/trunk/engines/teenagent
megath at users.sourceforge.net
megath at users.sourceforge.net
Sat Sep 26 17:04:13 CEST 2009
Revision: 44377
http://scummvm.svn.sourceforge.net/scummvm/?rev=44377&view=rev
Author: megath
Date: 2009-09-26 15:04:09 +0000 (Sat, 26 Sep 2009)
Log Message:
-----------
removed packed structs/direct read/writes, so the game should work on big-endian archs.
Modified Paths:
--------------
scummvm/trunk/engines/teenagent/callbacks.cpp
scummvm/trunk/engines/teenagent/inventory.cpp
scummvm/trunk/engines/teenagent/inventory.h
scummvm/trunk/engines/teenagent/objects.cpp
scummvm/trunk/engines/teenagent/objects.h
scummvm/trunk/engines/teenagent/scene.cpp
scummvm/trunk/engines/teenagent/scene.h
scummvm/trunk/engines/teenagent/teenagent.cpp
scummvm/trunk/engines/teenagent/teenagent.h
Modified: scummvm/trunk/engines/teenagent/callbacks.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/callbacks.cpp 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/callbacks.cpp 2009-09-26 15:04:09 UTC (rev 44377)
@@ -344,7 +344,7 @@
setOns(3, 0x5b);
displayMessage(0x55db);
SET_FLAG(0xdbdd, 3);
- strcpy(scene->getObject(4)->name, "body");
+ scene->getObject(4)->setName("body");
} else {
if (Dialog::pop(scene, 0xdb5c) != 0x636b) //not 'im getting hungry'
return true;
@@ -1363,7 +1363,7 @@
case 0x58a2:
Dialog::pop(scene, 0xdaba);
- strcpy(scene->getObject(13)->name, (const char *)res->dseg.ptr(0x92e5));
+ scene->getObject(13)->setName((const char *)res->dseg.ptr(0x92e5));
return true;
case 0x58b7://Get comb from car
@@ -1532,7 +1532,7 @@
playSound(55, 5);
playActorAnimation(527);
Dialog::show(scene, 0x2219);
- strcpy(scene->getObject(2)->name, (const char *)res->dseg.ptr(0x9820));
+ scene->getObject(2)->setName((const char *)res->dseg.ptr(0x9820));
}
return true;
@@ -2415,6 +2415,7 @@
setOns(3, 0);
setOns(4, 0);
scene->getWalkbox(0)->rect.clear();
+ scene->getWalkbox(0)->save();
playSound(62);
//patch lan, 1
displayMessage(0x3d3a);
@@ -2985,7 +2986,7 @@
case 0x6c83:
Dialog::pop(scene, 0xdb2e);
- strcpy(scene->getObject(1)->name, (const char *)res->dseg.ptr(0xaa94));
+ scene->getObject(1)->setName((const char *)res->dseg.ptr(0xaa94));
SET_FLAG(0xDBD1, 1);
return true;
Modified: scummvm/trunk/engines/teenagent/inventory.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.cpp 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/inventory.cpp 2009-09-26 15:04:09 UTC (rev 44377)
@@ -49,7 +49,15 @@
for (byte i = 0; i < offsets; ++i) {
offset[i] = items->readUint16LE();
}
- objects = res->dseg.ptr(0xc4a4);
+
+ for(byte i = 0; i < 92; ++i) {
+ InventoryObject io;
+ uint16 obj_addr = res->dseg.get_word(0xc4a4 + i * 2);
+ if (obj_addr != 0)
+ io.load(res->dseg.ptr(obj_addr));
+ objects.push_back(io);
+ }
+
inventory = res->dseg.ptr(0xc48d);
for (int y = 0; y < 4; ++y)
@@ -138,7 +146,7 @@
graphics[i].hovered = graphics[i].rect.in(mouse);
if (graphics[i].hovered)
- hovered_obj = (InventoryObject *)res->dseg.ptr(READ_LE_UINT16(objects + item * 2));
+ hovered_obj = &objects[item];
}
return true;
@@ -149,7 +157,7 @@
if (selected_obj == NULL) {
activate(false);
- _engine->displayMessage(hovered_obj->description());
+ _engine->displayMessage(hovered_obj->description);
return true;
}
@@ -202,7 +210,7 @@
selected_obj = hovered_obj;
if (selected_obj)
- debug(0, "selected object %s", selected_obj->name);
+ debug(0, "selected object %s", selected_obj->name.c_str());
return true;
case Common::EVENT_KEYDOWN:
@@ -275,7 +283,6 @@
return;
background.render(surface);
- Resources *res = Resources::instance();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 6; x++) {
@@ -286,7 +293,7 @@
//debug(0, "%d,%d -> %u", x0, y0, item);
- InventoryObject *obj = (InventoryObject *)res->dseg.ptr(READ_LE_UINT16(objects + item * 2));
+ InventoryObject *obj = &objects[item];
graphics[idx].render(this, obj, surface);
}
}
Modified: scummvm/trunk/engines/teenagent/inventory.h
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.h 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/inventory.h 2009-09-26 15:04:09 UTC (rev 44377)
@@ -28,6 +28,7 @@
#include "teenagent/surface.h"
#include "teenagent/animation.h"
#include "common/events.h"
+#include "common/array.h"
#include "teenagent/objects.h"
namespace TeenAgent {
@@ -59,7 +60,7 @@
Common::SeekableReadStream *items;
uint16 offset[92];
- byte *objects;
+ Common::Array<InventoryObject> objects;
byte *inventory;
struct Item {
Animation animation;
Modified: scummvm/trunk/engines/teenagent/objects.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/objects.cpp 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/objects.cpp 2009-09-26 15:04:09 UTC (rev 44377)
@@ -22,11 +22,31 @@
* $Id$
*/
+#include "common/debug.h"
+#include "common/stream.h"
#include "teenagent/objects.h"
-#include "common/debug.h"
+#include "teenagent/resources.h"
namespace TeenAgent {
+void Rect::load(byte * src) {
+ _base = src;
+ Common::MemoryReadStreamEndian ins(src, 8);
+ left = ins.readUint16();
+ top = ins.readUint16();
+ right = ins.readUint16();
+ bottom = ins.readUint16();
+}
+
+void Rect::save() {
+ assert(_base != NULL);
+ //Common::MemoryWriteStreamEndian out(_base, 8); //FIXME: maybe add this class to common?
+ WRITE_LE_UINT16(_base + 0, left);
+ WRITE_LE_UINT16(_base + 2, top);
+ WRITE_LE_UINT16(_base + 4, right);
+ WRITE_LE_UINT16(_base + 6, bottom);
+}
+
void Rect::render(Graphics::Surface *surface, uint8 color) const {
surface->hLine(left, bottom, right, color);
surface->vLine(left, bottom, top, color);
@@ -34,22 +54,38 @@
surface->vLine(right, bottom, top, color);
}
-void Walkbox::dump() {
- debug(0, "walkbox %02x %02x [%d, %d, %d, %d] %02x %02x %02x %02x ",
- unk00, orientation,
- rect.left, rect.right, rect.top, rect.bottom,
- unk0a, unk0b, unk0c, unk0d);
+
+void Object::load(byte * src) {
+ _base = src;
+
+ id = *src++;
+
+ rect.load(src);
+ src += 8;
+ actor_rect.load(src);
+ src += 8;
+
+ actor_orientation = *src++;
+ enabled = *src++;
+ name = (const char *)src;
+ description = parse_description((const char *)src);
}
+void Object::setName(const Common::String &new_name) {
+ assert(_base != 0);
+ strcpy((char *)(_base + 19), new_name.c_str());
+ name = new_name;
+}
+
void Object::dump() {
debug(0, "object: %u %u [%u,%u,%u,%u], actor: [%u,%u,%u,%u], orientation: %u, name: %s", id, enabled,
rect.left, rect.top, rect.right, rect.bottom,
actor_rect.left, actor_rect.top, actor_rect.right, actor_rect.bottom,
- actor_orientation, name
+ actor_orientation, name.c_str()
);
}
-Common::String Object::description(const char *name) {
+Common::String Object::parse_description(const char *name) {
const char *desc = name + strlen(name) + 1;
if (*desc == 0)
return Common::String();
@@ -77,13 +113,49 @@
return result;
}
+void InventoryObject::load(byte *src) {
+ _base = src;
+ id = *src++;
+ animated = *src++;
+ name = (const char *)src;
+ description = Object::parse_description((const char *)src);
+}
-Common::String Object::description() const {
- return description(name);
+void UseHotspot::load(byte *src) {
+ Common::MemoryReadStreamEndian in(src, 9);
+ inventory_id = in.readByte();
+ object_id = in.readByte();
+ unk02 = in.readByte();
+ x = in.readUint16();
+ y = in.readUint16();
+ callback = in.readUint16();
}
-Common::String InventoryObject::description() const {
- return Object::description(name);
+void Walkbox::dump() {
+ debug(0, "walkbox %02x %02x [%d, %d, %d, %d] %02x %02x %02x %02x ",
+ unk00, orientation,
+ rect.left, rect.right, rect.top, rect.bottom,
+ unk0a, unk0b, unk0c, unk0d);
}
+void Walkbox::load(byte *src) {
+ _base = src;
+
+ unk00 = *src++;
+ orientation = *src++;
+ rect.load(src);
+ src += 8;
+ unk0a = *src++;
+ unk0b = *src++;
+ unk0c = *src++;
+ unk0d = *src++;
+}
+
+void Walkbox::save() {
+ assert(_base != NULL);
+ _base[1] = orientation;
+ rect.save();
+}
+
+
} // End of namespace TeenAgent
Modified: scummvm/trunk/engines/teenagent/objects.h
===================================================================
--- scummvm/trunk/engines/teenagent/objects.h 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/objects.h 2009-09-26 15:04:09 UTC (rev 44377)
@@ -27,68 +27,88 @@
#define TEENAGENT_OBJECTS_H
#include "common/rect.h"
+#include "common/stream.h"
#include "graphics/surface.h"
namespace TeenAgent {
-//move into separate header:
-
-#include "common/pack-start.h" // START STRUCT PACKING
-
struct Rect {
uint16 left, top, right, bottom;
- inline Rect() : left(0), top(0), right(0), bottom(0) {}
- inline Rect(uint16 l, uint16 t, uint16 r, uint16 b) : left(l), top(t), right(r), bottom(b) {}
+ inline Rect() : left(0), top(0), right(0), bottom(0), _base(NULL) {}
+ inline Rect(uint16 l, uint16 t, uint16 r, uint16 b) : left(l), top(t), right(r), bottom(b), _base(NULL) {}
+
inline bool in(const Common::Point &point) const {
return point.x >= left && point.x <= right && point.y >= top && point.y <= bottom;
}
+
inline Common::Point center() const {
return Common::Point((right + left) / 2, (bottom + top) / 2);
}
+
inline bool valid() const {
return left < 320 && right < 320 && top < 200 && bottom < 200;
}
+
void render(Graphics::Surface *surface, uint8 color) const;
- void dump() {
+
+ void dump() const {
debug(0, "rect[%u, %u, %u, %u]", left, top, right, bottom);
}
- void clear() {
+ inline void clear() {
left = top = right = bottom = 0;
}
-} PACKED_STRUCT;
+
+ void load(byte *src); //8 bytes
+ void save();
+protected:
+ byte * _base;
+};
+
struct Object {
+ enum {kActorUp = 1, kActorRight = 2, kActorDown = 3, kActorLeft = 4 };
+
byte id;
Rect rect;
Rect actor_rect;
byte actor_orientation;
- byte enabled;
- char name[1];
+ byte enabled; //19 bytes
+ Common::String name, description;
- enum {kActorUp = 1, kActorRight = 2, kActorDown = 3, kActorLeft = 4 };
-
+ Object(): _base(NULL) {}
void dump();
- static Common::String description(const char *name);
- Common::String description() const;
-} PACKED_STRUCT;
+ void setName(const Common::String &name);
+ void load(byte *addr);
+
+ static Common::String parse_description(const char *name);
+protected:
+ byte * _base;
+};
+
struct InventoryObject {
byte id;
byte animated;
- char name[1];
- Common::String description() const;
-} PACKED_STRUCT;
+ Common::String name, description;
+
+ InventoryObject(): id(0), animated(0), _base(0) {}
+ void load(byte *addr);
-struct UseObject {
+protected:
+ byte * _base;
+};
+
+struct UseHotspot {
byte inventory_id;
byte object_id;
byte unk02;
uint16 x, y;
uint16 callback;
-} PACKED_STRUCT;
+ void load(byte *src);
+};
struct Walkbox {
byte unk00;
@@ -98,10 +118,15 @@
byte unk0b;
byte unk0c;
byte unk0d;
+
+ Walkbox() : _base(NULL) {}
void dump();
-} PACKED_STRUCT;
+ void load(byte *src);
+ void save();
-#include "common/pack-end.h" // END STRUCT PACKING
+protected:
+ byte * _base;
+};
} // End of namespace TeenAgent
Modified: scummvm/trunk/engines/teenagent/scene.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/scene.cpp 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/scene.cpp 2009-09-26 15:04:09 UTC (rev 44377)
@@ -35,7 +35,7 @@
Scene::Scene() : intro(false), _engine(NULL),
_system(NULL),
- _id(0), ons(0), walkboxes(0),
+ _id(0), ons(0),
orientation(Object::kActorRight),
current_event(SceneEvent::kNone), hide_actor(false) {}
@@ -52,23 +52,24 @@
Common::Point point(_point);
debug(0, "moveTo(%d, %d, %u)", point.x, point.y, orient);
if (validate) {
- for (byte i = 0; i < walkboxes; ++i) {
- Walkbox *w = walkbox[i];
- if (w->rect.in(point)) {
+ const Common::Array<Walkbox> &scene_walkboxes = walkboxes[_id - 1];
+ for (byte i = 0; i < scene_walkboxes.size(); ++i) {
+ const Walkbox &w = scene_walkboxes[i];
+ if (w.rect.in(point)) {
debug(0, "bumped into walkbox %u", i);
- byte o = w->orientation;
+ byte o = w.orientation;
switch (o) {
case 1:
- point.y = w->rect.top - 1;
+ point.y = w.rect.top - 1;
break;
case 2:
- point.x = w->rect.right + 1;
+ point.x = w.rect.right + 1;
break;
case 3:
- point.y = w->rect.bottom + 1;
+ point.y = w.rect.bottom + 1;
break;
case 4:
- point.x = w->rect.left - 1;
+ point.x = w.rect.left - 1;
break;
default:
return;
@@ -110,8 +111,56 @@
teenagent_idle.load(s, Animation::kTypeVaria);
if (teenagent_idle.empty())
error("invalid mark animation");
+
+ //loading objects & walkboxes
+ objects.resize(42);
+ walkboxes.resize(42);
+
+ for(byte i = 0; i < 42; ++i) {
+ Common::Array<Object> &scene_objects = objects[i];
+ scene_objects.clear();
+
+ uint16 scene_table = res->dseg.get_word(0x7254 + i * 2);
+ uint16 object_addr;
+ while ((object_addr = res->dseg.get_word(scene_table)) != 0) {
+ Object obj;
+ obj.load(res->dseg.ptr(object_addr));
+ //obj.dump();
+ scene_objects.push_back(obj);
+ scene_table += 2;
+ }
+ debug(0, "scene[%u] has %u object(s)", i + 1, scene_objects.size());
+
+ byte *walkboxes_base = res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(0x6746 + i * 2)));
+ byte walkboxes_n = *walkboxes_base++;
+ debug(0, "scene[%u] has %u walkboxes", i + 1, walkboxes_n);
+
+ Common::Array<Walkbox> &scene_walkboxes = walkboxes[i];
+ for (byte j = 0; j < walkboxes_n; ++j) {
+ Walkbox w;
+ w.load(walkboxes_base + 14 * j);
+ //walkbox[i]->dump();
+ scene_walkboxes.push_back(w);
+ }
+ }
}
+Object *Scene::findObject(const Common::Point &point) {
+ if (_id == 0)
+ return NULL;
+
+ Common::Array<Object> &scene_objects = objects[_id - 1];
+
+ for(uint i = 0; i < scene_objects.size(); ++i) {
+ Object &obj = scene_objects[i];
+ if (obj.enabled != 0 && obj.rect.in(point))
+ return &obj;
+ }
+ return NULL;
+}
+
+
+
byte *Scene::getOns(int id) {
Resources *res = Resources::instance();
return res->dseg.ptr(res->dseg.get_word(0xb4f5 + (id - 1) * 2));
@@ -215,15 +264,6 @@
loadOns();
loadLans();
- byte *walkboxes_base = res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(0x6746 + (id - 1) * 2)));
- walkboxes = *walkboxes_base++;
-
- debug(0, "found %d walkboxes", walkboxes);
- for (byte i = 0; i < walkboxes; ++i) {
- walkbox[i] = (Walkbox *)(walkboxes_base + 14 * i);
- walkbox[i]->dump();
- }
-
//check music
int now_playing = _engine->music->getId();
@@ -407,12 +447,13 @@
//if (!current_event.empty())
// current_event.dump();
- /*
- for (byte i = 0; i < walkboxes; ++i) {
- Walkbox *w = walkbox[i];
- w->rect.render(surface, 0xd0 + i);
+ {
+ const Common::Array<Walkbox> & scene_walkboxes = walkboxes[_id - 1];
+ for (uint i = 0; i < scene_walkboxes.size(); ++i) {
+ scene_walkboxes[i].rect.render(surface, 0xd0 + i);
+ }
}
- */
+
} while (restart);
@@ -585,16 +626,15 @@
}
Object *Scene::getObject(int id, int scene_id) {
+ assert(id > 0);
+
if (scene_id == 0)
scene_id = _id;
- Resources *res = Resources::instance();
- uint16 addr = res->dseg.get_word(0x7254 + (scene_id - 1) * 2);
- //debug(0, "object base: %04x, x: %d, %d", addr, point.x, point.y);
- uint16 object = res->dseg.get_word(addr + 2 * id - 2);
+ if (scene_id == 0)
+ return NULL;
- Object *obj = (Object *)res->dseg.ptr(object);
- return obj;
+ return &objects[scene_id - 1][id - 1];
}
Common::Point Scene::messagePosition(const Common::String &str, Common::Point position) {
Modified: scummvm/trunk/engines/teenagent/scene.h
===================================================================
--- scummvm/trunk/engines/teenagent/scene.h 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/scene.h 2009-09-26 15:04:09 UTC (rev 44377)
@@ -29,12 +29,10 @@
#include "teenagent/actor.h"
#include "common/system.h"
#include "common/list.h"
+#include "teenagent/objects.h"
namespace TeenAgent {
-struct Walkbox;
-struct Object;
-
class TeenAgentEngine;
class Dialog;
@@ -130,8 +128,9 @@
bool eventRunning() const { return !current_event.empty(); }
- Walkbox *getWalkbox(byte id) { return walkbox[id]; }
+ Walkbox *getWalkbox(byte id) { return &walkboxes[_id - 1][id]; }
Object *getObject(int id, int scene_id = 0);
+ Object *findObject(const Common::Point &point);
private:
void loadOns();
@@ -166,8 +165,8 @@
int progress, progress_total;
uint8 orientation;
- byte walkboxes;
- Walkbox *walkbox[255];
+ Common::Array<Common::Array<Object> > objects;
+ Common::Array<Common::Array<Walkbox> > walkboxes;
Common::String message;
Common::Point message_pos;
Modified: scummvm/trunk/engines/teenagent/teenagent.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.cpp 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/teenagent.cpp 2009-09-26 15:04:09 UTC (rev 44377)
@@ -52,7 +52,7 @@
dcall += 2 * dst_object->id - 2;
uint16 callback = READ_LE_UINT16(dcall);
if (callback == 0 || !processCallback(callback)) {
- Common::String desc = dst_object->description();
+ Common::String desc = dst_object->description;
scene->displayMessage(desc);
//debug(0, "%s[%u]: description: %s", current_object->name, current_object->id, desc.c_str());
}
@@ -61,14 +61,14 @@
case kActionUse: {
InventoryObject *inv = inventory->selectedObject();
if (inv != NULL) {
- byte *dcall = res->dseg.ptr(0xbb87);
- dcall = res->dseg.ptr(READ_LE_UINT16(dcall + scene->getId() * 2 - 2));
- for (UseObject *obj = (UseObject *)dcall; obj->inventory_id != 0; ++obj) {
- if (obj->inventory_id == inv->id && dst_object->id == obj->object_id) {
- debug(0, "combine! %u,%u", obj->x, obj->y);
+ const Common::Array<UseHotspot> &hotspots = use_hotspots[scene->getId() - 1];
+ for (uint i = 0; i < hotspots.size(); ++i) {
+ const UseHotspot &spot = hotspots[i];
+ if (spot.inventory_id == inv->id && dst_object->id == spot.object_id) {
+ debug(0, "combine! pos?: %u,%u", spot.x, spot.y);
//moveTo(Common::Point(obj->x, obj->y), NULL, Examine);
inventory->resetSelectedObject();
- if (!processCallback(TO_LE_16(obj->callback)))
+ if (!processCallback(TO_LE_16(spot.callback)))
debug(0, "fixme! display proper description");
return;
}
@@ -85,7 +85,7 @@
dcall += 2 * dst_object->id - 2;
uint16 callback = READ_LE_UINT16(dcall);
if (!processCallback(callback))
- scene->displayMessage(dst_object->description());
+ scene->displayMessage(dst_object->description);
}
}
break;
@@ -130,6 +130,24 @@
}
}
+void TeenAgentEngine::init() {
+ Resources * res = Resources::instance();
+ use_hotspots.resize(42);
+ byte *scene_hotspots = res->dseg.ptr(0xbb87);
+ for(byte i = 0; i < 42; ++i) {
+ Common::Array<UseHotspot> & hotspots = use_hotspots[i];
+ byte * hotspots_ptr = res->dseg.ptr(READ_LE_UINT16(scene_hotspots + i * 2));
+ while(*hotspots_ptr) {
+ UseHotspot h;
+ h.load(hotspots_ptr);
+ hotspots_ptr += 9;
+ hotspots.push_back(h);
+ }
+ }
+}
+
+
+
void TeenAgentEngine::deinit() {
_mixer->stopAll();
delete scene;
@@ -138,6 +156,7 @@
inventory = NULL;
//delete music;
//music = NULL;
+ use_hotspots.clear();
Resources::instance()->deinit();
}
@@ -207,6 +226,8 @@
scene->init(this, _system);
inventory->init(this);
+
+ init();
_system->setMouseCursor(res->dseg.ptr(0x00da), 8, 12, 0, 0, 1);
@@ -236,7 +257,7 @@
do {
_system->showMouse(true);
uint32 t0 = _system->getMillis();
- Object *current_object = findObject(scene->getId(), mouse);
+ Object *current_object = scene->findObject(mouse);
while (_event->pollEvent(event)) {
if (event.type == Common::EVENT_RTL) {
@@ -314,23 +335,6 @@
return Common::kNoError;
}
-Object *TeenAgentEngine::findObject(int id, const Common::Point &point) {
- Resources *res = Resources::instance();
- uint16 addr = res->dseg.get_word(0x7254 + (id - 1) * 2);
- //debug(0, "object base: %04x, x: %d, %d", addr, point.x, point.y);
- uint16 object;
- for (; (object = res->dseg.get_word(addr)) != 0; addr += 2) {
- if (object == 0)
- return NULL;
-
- Object *obj = (Object *)res->dseg.ptr(object);
- //obj->dump();
- if (obj->enabled != 0 && obj->rect.in(point))
- return obj;
- }
- return NULL;
-}
-
void TeenAgentEngine::displayMessage(const Common::String &str, byte color) {
if (str.empty()) {
return;
Modified: scummvm/trunk/engines/teenagent/teenagent.h
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.h 2009-09-26 13:47:32 UTC (rev 44376)
+++ scummvm/trunk/engines/teenagent/teenagent.h 2009-09-26 15:04:09 UTC (rev 44377)
@@ -53,11 +53,9 @@
virtual bool canSaveGameStateCurrently() { return !scene_busy; }
virtual bool hasFeature(EngineFeature f) const;
-
+ void init();
void deinit();
- Object *findObject(int id, const Common::Point &point);
-
void examine(const Common::Point &point, Object *object);
void use(Object *object);
@@ -111,6 +109,8 @@
Audio::AudioStream *_musicStream;
Audio::SoundHandle _musicHandle, _soundHandle;
const ADGameDescription *_gameDescription;
+
+ Common::Array<Common::Array<UseHotspot> > use_hotspots;
};
} // End of namespace TeenAgent
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