diff options
Diffstat (limited to 'engines/wage/entities.cpp')
-rw-r--r-- | engines/wage/entities.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/engines/wage/entities.cpp b/engines/wage/entities.cpp index d9e4b60591..d0a838f1e7 100644 --- a/engines/wage/entities.cpp +++ b/engines/wage/entities.cpp @@ -97,6 +97,8 @@ Scene::Scene() { } Scene::Scene(Common::String name, Common::SeekableReadStream *data) { + debug(9, "Creating scene: %s", name.c_str()); + _name = name; _classType = SCENE; _design = new Design(data); @@ -132,14 +134,14 @@ Scene::~Scene() { delete _textBounds; } -void Scene::paint(Graphics::Surface *surface, int x, int y) { +void Scene::paint(Graphics::ManagedSurface *surface, int x, int y) { Common::Rect r(x + 5, y + 5, _design->getBounds()->width() + x - 10, _design->getBounds()->height() + y - 10); surface->fillRect(r, kColorWhite); _design->paint(surface, ((WageEngine *)g_engine)->_world->_patterns, x, y); for (ObjList::const_iterator it = _objs.begin(); it != _objs.end(); ++it) { - debug(2, "paining Obj: %s", (*it)->_name.c_str()); + debug(2, "paining Obj: %s, index: %d, type: %d", (*it)->_name.c_str(), (*it)->_index, (*it)->_type); (*it)->_design->paint(surface, ((WageEngine *)g_engine)->_world->_patterns, x, y); } @@ -200,6 +202,22 @@ const char *Scene::getFontName() { return "Unknown"; } +Designed *Scene::lookUpEntity(int x, int y) { + for (ObjList::const_iterator it = _objs.end(); it != _objs.begin(); ) { + it--; + if ((*it)->_design->isPointOpaque(x, y)) + return *it; + } + + for (ChrList::const_iterator it = _chrs.end(); it != _chrs.begin(); ) { + it--; + if ((*it)->_design->isPointOpaque(x, y)) + return *it; + } + + return nullptr; +} + Obj::Obj() : _currentOwner(NULL), _currentScene(NULL) { _index = 0; _namePlural = false; |