diff options
author | Bendegúz Nagy | 2016-08-05 13:58:35 +0200 |
---|---|---|
committer | Bendegúz Nagy | 2016-08-26 23:02:22 +0200 |
commit | d02a66d5ee75d16f553c424986c92b905813460a (patch) | |
tree | b8f971dc2de67ded1a8b1649aadf227323253e01 /engines/dm | |
parent | 1a96af48c52b9efe8a8d5a4ceee1dd8d5f0ca3b1 (diff) | |
download | scummvm-rg350-d02a66d5ee75d16f553c424986c92b905813460a.tar.gz scummvm-rg350-d02a66d5ee75d16f553c424986c92b905813460a.tar.bz2 scummvm-rg350-d02a66d5ee75d16f553c424986c92b905813460a.zip |
DM: Remove hack from f107_isDrawnWallOrnAnAlcove
Diffstat (limited to 'engines/dm')
-rw-r--r-- | engines/dm/gfx.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/engines/dm/gfx.cpp b/engines/dm/gfx.cpp index 347bb5ddaa..2103a5e82d 100644 --- a/engines/dm/gfx.cpp +++ b/engines/dm/gfx.cpp @@ -2484,7 +2484,6 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall }; static Box boxChampionPortraitOnWall = Box(96, 127, 35, 63); // G0109_s_Graphic558_Box_ChampionPortraitOnWall - #define AP0116_i_CharacterCount wallOrnOrd #define AP0116_i_WallOrnamentIndex wallOrnOrd int16 L0088_i_Multiple; @@ -2509,7 +2508,6 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall bool L0096_B_IsAlcove; int16 L0097_i_TextLineIndex; Frame L0098_s_Frame; - byte tmpCoordSet[6]; unsigned char L0099_auc_InscriptionString[70]; @@ -2519,7 +2517,7 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall AL0090_puc_CoordinateSet = g205_WallOrnCoordSets[AL0089_i_WallOrnamentCoordinateSetIndex = _g101_currMapWallOrnInfo[AP0116_i_WallOrnamentIndex][k1_CoordinateSet]][viewWallIndex]; L0096_B_IsAlcove = _vm->_dungeonMan->f149_isWallOrnAnAlcove(AP0116_i_WallOrnamentIndex); if (L0095_B_IsInscription = (AP0116_i_WallOrnamentIndex == _vm->_dungeonMan->_g265_currMapInscriptionWallOrnIndex)) { - _vm->_dungeonMan->f168_decodeText((char *)L0099_auc_InscriptionString, _g290_inscriptionThing, k0_TextTypeInscription); + _vm->_dungeonMan->f168_decodeText((char*)L0099_auc_InscriptionString, _g290_inscriptionThing, k0_TextTypeInscription); } if (viewWallIndex >= k10_ViewWall_D1L_RIGHT) { if (viewWallIndex == k12_ViewWall_D1C_FRONT) { @@ -2545,7 +2543,10 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall goto T0107031; } AL0088_i_NativeBitmapIndex++; - _vm->_dungeonMan->_g291_dungeonViewClickableBoxes[k5_ViewCellDoorButtonOrWallOrn] = Box(AL0090_puc_CoordinateSet); + { + Box tmpBox(AL0090_puc_CoordinateSet); + _vm->_dungeonMan->_g291_dungeonViewClickableBoxes[k5_ViewCellDoorButtonOrWallOrn] = tmpBox; + } _vm->_dungeonMan->_g286_isFacingAlcove = L0096_B_IsAlcove; _vm->_dungeonMan->_g287_isFacingViAltar = (AP0116_i_WallOrnamentIndex == _g266_currMapViAltarIndex); @@ -2557,7 +2558,7 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall } } } - AL0091_puc_Bitmap = f489_getNativeBitmapOrGraphic(AL0088_i_NativeBitmapIndex); + AL0091_puc_Bitmap =f489_getNativeBitmapOrGraphic(AL0088_i_NativeBitmapIndex); if (viewWallIndex == k11_ViewWall_D1R_LEFT) { f99_copyBitmapAndFlipHorizontal(AL0091_puc_Bitmap, _g74_tmpBitmap, AL0090_puc_CoordinateSet[4], AL0090_puc_CoordinateSet[5]); AL0091_puc_Bitmap = _g74_tmpBitmap; @@ -2585,12 +2586,7 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall AL0089_i_PixelWidth = (AL0090_puc_CoordinateSet + L0093_i_CoordinateSetOffset)[1] - (AL0090_puc_CoordinateSet + L0093_i_CoordinateSetOffset)[0]; if (!f491_isDerivedBitmapInCache(AP0116_i_WallOrnamentIndex = k4_DerivedBitmapFirstWallOrnament + (AP0116_i_WallOrnamentIndex << 2) + wallOrnDerivedBitmapIndexIncrement[viewWallIndex])) { L0092_puc_Bitmap = f489_getNativeBitmapOrGraphic(AL0088_i_NativeBitmapIndex); - // HACK: originally AL0089_i_PixelWidth + 1 is passed as the 5th parameter, but then later AL0090_puc_CoordinateSet[4]'s value is used - // to get the width of the shrunk bitmap, dunno why that is - f129_blitToBitmapShrinkWithPalChange(L0092_puc_Bitmap, f492_getDerivedBitmap(AP0116_i_WallOrnamentIndex), - AL0091_puc_CoordinateSet[4] << 1, AL0091_puc_CoordinateSet[5], - AL0090_puc_CoordinateSet[4] << 1, AL0090_puc_CoordinateSet[5], - (viewWallIndex <= k4_ViewWall_D3R_FRONT) ? g198_PalChangesDoorButtonAndWallOrn_D3 : g199_PalChangesDoorButtonAndWallOrn_D2); + f129_blitToBitmapShrinkWithPalChange(L0092_puc_Bitmap, f492_getDerivedBitmap(AP0116_i_WallOrnamentIndex), AL0091_puc_CoordinateSet[4] << 1, AL0091_puc_CoordinateSet[5], AL0089_i_PixelWidth + 1, AL0090_puc_CoordinateSet[5], (viewWallIndex <= k4_ViewWall_D3R_FRONT) ? g198_PalChangesDoorButtonAndWallOrn_D3 : g199_PalChangesDoorButtonAndWallOrn_D2); f493_addDerivedBitmap(AP0116_i_WallOrnamentIndex); } AL0091_puc_Bitmap = f492_getDerivedBitmap(AP0116_i_WallOrnamentIndex); @@ -2606,6 +2602,7 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall } } } + byte byteFrame[6]; if (L0095_B_IsInscription) { L0092_puc_Bitmap = AL0090_puc_CoordinateSet; AL0090_puc_String = L0099_auc_InscriptionString; @@ -2619,8 +2616,8 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall AL0090_puc_CoordinateSet = L0092_puc_Bitmap; if (AL0088_i_UnreadableTextLineCount < 4) { for (uint16 i = 0; i < 6; ++i) - tmpCoordSet[i] = AL0090_puc_CoordinateSet[i]; - AL0090_puc_CoordinateSet = tmpCoordSet; + byteFrame[i] = AL0090_puc_CoordinateSet[i]; + AL0090_puc_CoordinateSet = byteFrame; AL0090_puc_CoordinateSet[3] = unreadableInscriptionBoxY2[wallOrnDerivedBitmapIndexIncrement[viewWallIndex] * 3 + AL0088_i_UnreadableTextLineCount - 1]; } } @@ -2628,8 +2625,10 @@ bool DisplayMan::f107_isDrawnWallOrnAnAlcove(int16 wallOrnOrd, ViewWall viewWall Box tmpBox(AL0090_puc_CoordinateSet); f132_blitToBitmap(AL0091_puc_Bitmap, _g296_bitmapViewport, tmpBox, AL0089_i_X, 0, AL0090_puc_CoordinateSet[4], k112_byteWidthViewport, k10_ColorFlesh, AL0090_puc_CoordinateSet[5], k136_heightViewport); } - if ((viewWallIndex == k12_ViewWall_D1C_FRONT) && _g289_championPortraitOrdinal--) { /* BUG0_05 A champion portrait sensor on a wall square is visible on all sides of the wall. If there is another sensor with a wall ornament on one side of the wall then the champion portrait is drawn over that wall ornament */ - f132_blitToBitmap(f489_getNativeBitmapOrGraphic(k26_ChampionPortraitsIndice), _g296_bitmapViewport, boxChampionPortraitOnWall, (_g289_championPortraitOrdinal & 0x0007) << 5, (_g289_championPortraitOrdinal >> 3) * 29, k128_byteWidth, k112_byteWidthViewport, k1_ColorDarkGary, 87, k136_heightViewport); /* A portrait is 32x29 pixels */ + + if ((viewWallIndex == k12_ViewWall_D1C_FRONT) && _g289_championPortraitOrdinal--) { + f132_blitToBitmap(f489_getNativeBitmapOrGraphic(k26_ChampionPortraitsIndice), _g296_bitmapViewport, boxChampionPortraitOnWall, + (_g289_championPortraitOrdinal & 0x0007) << 5, (_g289_championPortraitOrdinal >> 3) * 29, k128_byteWidth, k112_byteWidthViewport, k1_ColorDarkGary, 87, k136_heightViewport); /* A portrait is 32x29 pixels */ } T0107031: return L0096_B_IsAlcove; |