diff options
-rw-r--r-- | engines/dm/gfx.h | 9 | ||||
-rw-r--r-- | engines/dm/objectman.cpp | 15 | ||||
-rw-r--r-- | engines/dm/objectman.h | 2 |
3 files changed, 24 insertions, 2 deletions
diff --git a/engines/dm/gfx.h b/engines/dm/gfx.h index 749d4874fb..46ce6e3d93 100644 --- a/engines/dm/gfx.h +++ b/engines/dm/gfx.h @@ -20,7 +20,14 @@ enum GraphicIndice { kInscriptionFontIndice = 120, // @ C120_GRAPHIC_INSCRIPTION_FONT kDoorMaskDestroyedIndice = 301, // @ C301_GRAPHIC_DOOR_MASK_DESTROYED kChampionPortraitsIndice = 26, // @ C026_GRAPHIC_CHAMPION_PORTRAITS - kMovementArrowsIndice = 13 // @ C013_GRAPHIC_MOVEMENT_ARROWS + kMovementArrowsIndice = 13, // @ C013_GRAPHIC_MOVEMENT_ARROWS + kObjectIcons_000_TO_031 = 42, // @ C042_GRAPHIC_OBJECT_ICONS_000_TO_031 + kObjectIcons_032_TO_063 = 43, // @ C043_GRAPHIC_OBJECT_ICONS_032_TO_063 + kObjectIcons_064_TO_095 = 44, // @ C044_GRAPHIC_OBJECT_ICONS_064_TO_095 + kObjectIcons_096_TO_127 = 45, // @ C045_GRAPHIC_OBJECT_ICONS_096_TO_127 + kObjectIcons_128_TO_159 = 46, // @ C046_GRAPHIC_OBJECT_ICONS_128_TO_159 + kObjectIcons_160_TO_191 = 47, // @ C047_GRAPHIC_OBJECT_ICONS_160_TO_191 + kObjectIcons_192_TO_223 = 48 // @ C048_GRAPHIC_OBJECT_ICONS_192_TO_223 }; extern uint16 gPalSwoosh[16]; diff --git a/engines/dm/objectman.cpp b/engines/dm/objectman.cpp index 0e6394f510..bc0b923422 100644 --- a/engines/dm/objectman.cpp +++ b/engines/dm/objectman.cpp @@ -4,6 +4,8 @@ namespace DM { +int16 gIconGraphicHeight[7] = {32, 32, 32, 32, 32, 32, 32}; // @ K0077_ai_IconGraphicHeight + int16 gIconGraphicFirstIndex[7] = { // G0026_ai_Graphic562_IconGraphicFirstIconIndex 0, /* First icon index in graphic #42 */ 32, /* First icon index in graphic #43 */ @@ -76,4 +78,17 @@ int16 ObjectMan::getIconIndex(Thing thing) { return iconIndex; } +void ObjectMan::extractIconFromBitmap(uint16 iconIndex, byte *destBitmap) { + int16 i; + for (i = 0; i < 7; ++i) + if (gIconGraphicFirstIndex[i] > iconIndex) + break; + --i; + byte *srcBitmap = _vm->_displayMan->getBitmap(kObjectIcons_000_TO_031 + i); + iconIndex -= gIconGraphicFirstIndex[i]; + _vm->_displayMan->_useByteBoxCoordinates = true; + _vm->_displayMan->blitToBitmap(srcBitmap, 256, (iconIndex & 0x000F) << 4, iconIndex & 0x0FF0, destBitmap, 16, 0, 16, 0, 16, kColorNoTransparency); + +} + }
\ No newline at end of file diff --git a/engines/dm/objectman.h b/engines/dm/objectman.h index bad5f7c28a..177d3bb0e3 100644 --- a/engines/dm/objectman.h +++ b/engines/dm/objectman.h @@ -10,7 +10,7 @@ public: ObjectMan(DMEngine *vm); IconIndice getObjectType(Thing thing); // @ F0032_OBJECT_GetType int16 getIconIndex(Thing thing); // @ F0033_OBJECT_GetIconIndex - + void extractIconFromBitmap(uint16 iconIndex, byte *srcBitmap); // F0036_OBJECT_ExtractIconFromBitmap }; } |