diff options
author | Bendegúz Nagy | 2016-07-12 12:26:22 +0200 |
---|---|---|
committer | Bendegúz Nagy | 2016-08-26 23:02:22 +0200 |
commit | 0f107cead2b59c9e67fc50996df49d4e86918f48 (patch) | |
tree | 493d5921389afd3f7bb715b8daca542715801efe | |
parent | 4d3c9d99f169efb3991866318d04a644b5de0217 (diff) | |
download | scummvm-rg350-0f107cead2b59c9e67fc50996df49d4e86918f48.tar.gz scummvm-rg350-0f107cead2b59c9e67fc50996df49d4e86918f48.tar.bz2 scummvm-rg350-0f107cead2b59c9e67fc50996df49d4e86918f48.zip |
DM: Add f70_mouseProcessCommands125To128_clickOnChampionIcon
-rw-r--r-- | engines/dm/eventman.cpp | 61 | ||||
-rw-r--r-- | engines/dm/eventman.h | 1 |
2 files changed, 61 insertions, 1 deletions
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp index c19ed70c7a..f74c8067af 100644 --- a/engines/dm/eventman.cpp +++ b/engines/dm/eventman.cpp @@ -656,7 +656,7 @@ void EventManager::f380_processCommandQueue() { return; } if ((cmdType >= k125_CommandClickOnChamptionIcon_Top_Left) && (cmdType <= k128_CommandClickOnChamptionIcon_Lower_Left)) { - warning(false, "MISSING CODE: F0070_MOUSE_ProcessCommands125To128_ClickOnChampionIcon(cmdType - k125_CommandClickOnChamptionIcon_Top_Left);"); + f70_mouseProcessCommands125To128_clickOnChampionIcon(cmdType - k125_CommandClickOnChamptionIcon_Top_Left); return; } if ((cmdType >= k28_CommandClickOnSlotBoxInventoryReadyHand) && (cmdType < (k65_CommandClickOnSlotBoxChest_8 + 1))) { @@ -1300,4 +1300,63 @@ void EventManager::f367_commandProcessTypes12to27_clickInChampionStatusBox(uint1 } } } + +void EventManager::f70_mouseProcessCommands125To128_clickOnChampionIcon(uint16 champIconIndex) { + static Box G0621_s_Box_MousePointer_ChampionIconShadow = Box(2, 20, 2, 15); + static Box G0622_s_Box_MousePointer_ChampionIcon = Box(0, 18, 0, 13); + static byte G0045_auc_Graphic562_PaletteChanges_MousePointerIconShadow[16] = {0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 120, 120, 120}; + + uint16 L0052_ui_ChampionIconIndex; + int16 L0053_i_ChampionIndex; + int16 L0054_i_ChampionIndex; + Box* L0055_pi_ChampionIconBox; + register unsigned char* L0056_puc_Bitmap; + + + _gK100_preventBuildPointerScreenArea = true; + if (!_vm->_eventMan->_g599_useChampionIconOrdinalAsMousePointerBitmap) { + if (_vm->_championMan->f285_getIndexInCell(M21_normalizeModulo4(champIconIndex + _vm->_dungeonMan->_g308_partyDir)) == kM1_ChampionNone) { + _gK100_preventBuildPointerScreenArea = false; + return; + } + _vm->_eventMan->_g598_mousePointerBitmapUpdated = true; + _vm->_eventMan->_g599_useChampionIconOrdinalAsMousePointerBitmap = true; + _vm->_displayMan->_g578_useByteBoxCoordinates = false; + L0056_puc_Bitmap = _gK190_mousePointerTempBuffer; + memset(L0056_puc_Bitmap, 0, 32 * 18); + L0055_pi_ChampionIconBox = &g54_BoxChampionIcons[champIconIndex]; + + _vm->_displayMan->f132_blitToBitmap(_vm->_displayMan->_g348_bitmapScreen, L0056_puc_Bitmap, G0621_s_Box_MousePointer_ChampionIconShadow, L0055_pi_ChampionIconBox->_x1, L0055_pi_ChampionIconBox->_y1, k160_byteWidthScreen, k16_byteWidth, k0_ColorBlack, 200, 18); + + _vm->_displayMan->f129_blitToBitmapShrinkWithPalChange(L0056_puc_Bitmap, _g613_mousePointerOriginalColorsChampionIcon, 32, 18, 32, 18, G0045_auc_Graphic562_PaletteChanges_MousePointerIconShadow); + + _vm->_displayMan->f132_blitToBitmap(_vm->_displayMan->_g348_bitmapScreen, _g613_mousePointerOriginalColorsChampionIcon, G0622_s_Box_MousePointer_ChampionIcon, L0055_pi_ChampionIconBox->_x1, L0055_pi_ChampionIconBox->_y1, k160_byteWidthScreen, k16_byteWidth, k0_ColorBlack, 200, 18); + + _vm->_displayMan->D24_fillScreenBox(*L0055_pi_ChampionIconBox, k0_ColorBlack); + _vm->_eventMan->_g599_useChampionIconOrdinalAsMousePointerBitmap = _vm->M0_indexToOrdinal(champIconIndex); + } else { + _vm->_eventMan->_g598_mousePointerBitmapUpdated = true; + L0052_ui_ChampionIconIndex = _vm->M1_ordinalToIndex(_vm->_eventMan->_g599_useChampionIconOrdinalAsMousePointerBitmap); + _vm->_eventMan->_g599_useChampionIconOrdinalAsMousePointerBitmap = _vm->M0_indexToOrdinal(kM1_ChampionNone); + L0054_i_ChampionIndex = _vm->_championMan->f285_getIndexInCell(M21_normalizeModulo4(L0052_ui_ChampionIconIndex + _vm->_dungeonMan->_g308_partyDir)); + if (L0052_ui_ChampionIconIndex == champIconIndex) { + setFlag(_vm->_championMan->_gK71_champions[L0054_i_ChampionIndex]._attributes, k0x0400_ChampionAttributeIcon); + _vm->_championMan->f292_drawChampionState((ChampionIndex)L0054_i_ChampionIndex); + } else { + L0053_i_ChampionIndex = _vm->_championMan->f285_getIndexInCell(M21_normalizeModulo4(champIconIndex + _vm->_dungeonMan->_g308_partyDir)); + if (L0053_i_ChampionIndex >= 0) { + _vm->_championMan->_gK71_champions[L0053_i_ChampionIndex]._cell = (ViewCell)M21_normalizeModulo4(L0052_ui_ChampionIconIndex + _vm->_dungeonMan->_g308_partyDir); + setFlag(_vm->_championMan->_gK71_champions[L0053_i_ChampionIndex]._attributes, k0x0400_ChampionAttributeIcon); + _vm->_championMan->f292_drawChampionState((ChampionIndex)L0053_i_ChampionIndex); + } else { + _vm->_displayMan->D24_fillScreenBox(g54_BoxChampionIcons[L0052_ui_ChampionIconIndex], k0_ColorBlack); + } + _vm->_championMan->_gK71_champions[L0054_i_ChampionIndex]._cell = (ViewCell)M21_normalizeModulo4(champIconIndex + _vm->_dungeonMan->_g308_partyDir); + setFlag(_vm->_championMan->_gK71_champions[L0054_i_ChampionIndex]._attributes, k0x0400_ChampionAttributeIcon); + _vm->_championMan->f292_drawChampionState((ChampionIndex)L0054_i_ChampionIndex); + } + } + _gK100_preventBuildPointerScreenArea = false; + f73_buildpointerScreenArea(_mousePos.x, _mousePos.y); +} } // end of namespace DM diff --git a/engines/dm/eventman.h b/engines/dm/eventman.h index fb983bfaad..742582652c 100644 --- a/engines/dm/eventman.h +++ b/engines/dm/eventman.h @@ -299,6 +299,7 @@ public: void f364_commandTakeStairs(bool stairsGoDown);// @ F0364_COMMAND_TakeStairs void f367_commandProcessTypes12to27_clickInChampionStatusBox(uint16 champIndex, int16 posX, int16 posY); // @ F0367_COMMAND_ProcessTypes12To27_ClickInChampionStatusBox + void f70_mouseProcessCommands125To128_clickOnChampionIcon(uint16 champIconIndex); // @ F0070_MOUSE_ProcessCommands125To128_ClickOnChampionIcon }; |