Skip to content

Commit

Permalink
DM: Add F0295_CHAMPION_HasObjectIconInSlotBoxChanged, F0039_OBJECT_Ge…
Browse files Browse the repository at this point in the history
…tIconIndexInSlotBox
  • Loading branch information
Bendegúz Nagy committed Aug 26, 2016
1 parent ae6f2d7 commit 5ba83b8
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 4 deletions.
7 changes: 4 additions & 3 deletions engines/dm/TODOs/methodtree.txt
Expand Up @@ -104,10 +104,11 @@ F0280_CHAMPION_AddCandidateChampionToParty // done, so-so
F0077_MOUSE_HidePointer_CPSE // skip
F0078_MOUSE_ShowPointer // skip
F0034_OBJECT_DrawLeaderHandObjectName // done
F0386_MENUS_DrawActionIcon
F0295_CHAMPION_HasObjectIconInSlotBoxChanged
F0386_MENUS_DrawActionIcon // done
F0295_CHAMPION_HasObjectIconInSlotBoxChanged // done
F0039_OBJECT_GetIconIndexInSlotBox // done
M70_HAND_SLOT_INDEX
G0420_B_MousePointerHiddenToDrawChangedObjectIconOnScreen
G0420_B_MousePointerHiddenToDrawChangedObjectIconOnScreen // done
G0412_puc_Bitmap_ObjectIconForMousePointer
G0413_i_LeaderHandObjectIconIndex
G0414_T_LeaderHandObject
Expand Down
21 changes: 21 additions & 0 deletions engines/dm/champion.cpp
Expand Up @@ -267,6 +267,27 @@ void ChampionMan::applyModifiersToStatistics(Champion* champ, ChampionSlot slotI

}

bool ChampionMan::hasObjectIconInSlotBoxChanged(int16 slotBoxIndex, Thing thing) {
ObjectMan &objMan = *_vm->_objectMan;

IconIndice currIconIndex = objMan.getIconIndexInSlotBox(slotBoxIndex);
if (((currIconIndex < kIconIndiceWeaponDagger) && (currIconIndex >= kIconIndiceJunkCompassNorth))
|| ((currIconIndex >= kIconIndicePotionMaPotionMonPotion) && (currIconIndex <= kIconIndicePotionWaterFlask))
|| (currIconIndex == kIconIndicePotionEmptyFlask)) {
IconIndice newIconIndex = objMan.getIconIndex(thing);
if (newIconIndex != currIconIndex) {
if ((slotBoxIndex < kSlotBoxInventoryFirstSlot) && !_mousePointerHiddenToDrawChangedObjIconOnScreen) {
_mousePointerHiddenToDrawChangedObjIconOnScreen = true;
warning("MISSING CODE: F0077_MOUSE_HidePointer_CPSE");
}
objMan.drawIconInSlotBox(slotBoxIndex, newIconIndex);
return true;
}
}

return false;
}

ChampionIndex ChampionMan::getIndexInCell(ViewCell cell) {
for (uint16 i = 0; i < _partyChampionCount; ++i) {
if ((_champions[i]._cell == cell) && _champions[i]._currHealth)
Expand Down
2 changes: 2 additions & 0 deletions engines/dm/champion.h
Expand Up @@ -443,6 +443,7 @@ class ChampionMan {
bool _leaderEmptyHanded; // @ G0415_B_LeaderEmptyHanded
Party _party; // @ G0407_s_Party
ChampionIndex _magicCasterChampionIndex; // @ G0514_i_MagicCasterChampionIndex
bool _mousePointerHiddenToDrawChangedObjIconOnScreen; // @ G0420_B_MousePointerHiddenToDrawChangedObjectIconOnScreen

explicit ChampionMan(DMEngine *vm);
void resetDataToStartGame(); // @ F0278_CHAMPION_ResetDataToStartGame
Expand All @@ -459,6 +460,7 @@ class ChampionMan {
Common::String getStringFromInteger(uint16 val, bool padding, uint16 paddingCharCount); // @ F0288_CHAMPION_GetStringFromInteger
void applyModifiersToStatistics(Champion *champ, ChampionSlot slotIndex, IconIndice iconIndex,
int16 modifierFactor, Thing thing); // @ F0299_CHAMPION_ApplyObjectModifiersToStatistics
bool hasObjectIconInSlotBoxChanged(int16 slotBoxIndex, Thing thing); // @ F0295_CHAMPION_HasObjectIconInSlotBoxChanged
};


Expand Down
6 changes: 5 additions & 1 deletion engines/dm/objectman.cpp
Expand Up @@ -230,7 +230,7 @@ void ObjectMan::drawIconInSlotBox(uint16 slotBoxIndex, int16 iconIndex) {
box, kColorNoTransparency, gDefultViewPort);
}
}

#define kObjectNameMaximumLength 14 // @ C014_OBJECT_NAME_MAXIMUM_LENGTH

void ObjectMan::drawLeaderObjectName(Thing thing) {
Expand All @@ -247,4 +247,8 @@ void ObjectMan::drawLeaderObjectName(Thing thing) {
}
_vm->_textMan->printWithTrailingSpacesToScreen(233, 37, kColorCyan, kColorBlack, objName, kObjectNameMaximumLength);
}

IconIndice ObjectMan::getIconIndexInSlotBox(uint16 slotBoxIndex) {
return (IconIndice)_slotBoxes[slotBoxIndex]._iconIndex;
}
}
3 changes: 3 additions & 0 deletions engines/dm/objectman.h
Expand Up @@ -63,6 +63,9 @@ class ObjectMan {
void extractIconFromBitmap(uint16 iconIndex, byte *destBitmap); // F0036_OBJECT_ExtractIconFromBitmap
void drawIconInSlotBox(uint16 slotBoxIndex, int16 iconIndex); // @ F0038_OBJECT_DrawIconInSlotBox
void drawLeaderObjectName(Thing thing); // @ F0034_OBJECT_DrawLeaderHandObjectName
IconIndice getIconIndexInSlotBox(uint16 slotBoxIndex); // @ F0039_OBJECT_GetIconIndexInSlotBox


};

}

0 comments on commit 5ba83b8

Please sign in to comment.