aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBendegúz Nagy2016-06-19 14:09:51 +0200
committerBendegúz Nagy2016-08-26 23:02:22 +0200
commit6e041819b480785b452a9023cdecb5421b8066ce (patch)
treeed62b9b2c736ef30c06393eabc95f5d409651c79
parent592cd055758427c8832773cdde2e5fa09d89ed52 (diff)
downloadscummvm-rg350-6e041819b480785b452a9023cdecb5421b8066ce.tar.gz
scummvm-rg350-6e041819b480785b452a9023cdecb5421b8066ce.tar.bz2
scummvm-rg350-6e041819b480785b452a9023cdecb5421b8066ce.zip
DM: Add F0036_OBJECT_ExtractIconFromBitmap, K0077_ai_IconGraphicHeight, ObjectIcon indices
-rw-r--r--engines/dm/gfx.h9
-rw-r--r--engines/dm/objectman.cpp15
-rw-r--r--engines/dm/objectman.h2
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
};
}