aboutsummaryrefslogtreecommitdiff
path: root/engines/hdb
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hdb')
-rw-r--r--engines/hdb/draw-manager.cpp35
-rw-r--r--engines/hdb/draw-manager.h3
2 files changed, 34 insertions, 4 deletions
diff --git a/engines/hdb/draw-manager.cpp b/engines/hdb/draw-manager.cpp
index 37d41c2a45..c716e6d661 100644
--- a/engines/hdb/draw-manager.cpp
+++ b/engines/hdb/draw-manager.cpp
@@ -169,13 +169,13 @@ Picture *DrawMan::getPicture(const char *name) {
return picture;
}
-Tile *DrawMan::getGfx(const char *name, uint32 size) {
+Tile *DrawMan::getTileGfx(const char *name, uint32 size) {
// Try to find graphic
for (Common::Array<GfxCache *>::iterator it = _gfxCache->begin(); it != _gfxCache->end(); it++) {
if (Common::matchString((*it)->name, name)) {
if ((*it)->loaded == -1) { // Marked for Deletetion?
(*it)->loaded = 1; // Reactivate it
- return (*it)->gfx;
+ return (*it)->tileGfx;
}
}
}
@@ -188,12 +188,41 @@ Tile *DrawMan::getGfx(const char *name, uint32 size) {
Tile *gfxTile = new Tile;
gfxTile->load(stream);
+ gc->tileGfx = gfxTile;
gc->size = size;
gc->loaded = 1;
_gfxCache->push_back(gc);
- return gc->gfx;
+ return gc->tileGfx;
+}
+
+Picture *DrawMan::getPicGfx(const char *name, uint32 size) {
+ // Try to find graphic
+ for (Common::Array<GfxCache *>::iterator it = _gfxCache->begin(); it != _gfxCache->end(); it++) {
+ if (Common::matchString((*it)->name, name)) {
+ if ((*it)->loaded == -1) { // Marked for Deletetion?
+ (*it)->loaded = 1; // Reactivate it
+ return (*it)->picGfx;
+ }
+ }
+ }
+
+ GfxCache *gc = new GfxCache;
+ strcpy(gc->name, name);
+
+ Common::SeekableReadStream *stream = g_hdb->_fileMan->findFirstData(name, TYPE_TILE32);
+
+ Picture *gfxPic = new Picture;
+ gfxPic->load(stream);
+
+ gc->picGfx = gfxPic;
+ gc->size = size;
+ gc->loaded = 1;
+
+ _gfxCache->push_back(gc);
+
+ return gc->picGfx;
}
int DrawMan::isSky(int index) {
diff --git a/engines/hdb/draw-manager.h b/engines/hdb/draw-manager.h
index 012ef804f4..934a37acbe 100644
--- a/engines/hdb/draw-manager.h
+++ b/engines/hdb/draw-manager.h
@@ -82,7 +82,8 @@ public:
int getTileIndex(const char *name);
Picture *getPicture(const char *name);
- Tile *getGfx(const char *name, uint32 size);
+ Tile *getTileGfx(const char *name, uint32 size);
+ Picture *getPicGfx(const char *name, uint32 size);
int isSky(int skyIndex);
void setSky(int skyIndex);