diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/dm/eventman.cpp | 38 | ||||
| -rw-r--r-- | engines/dm/eventman.h | 1 | ||||
| -rw-r--r-- | engines/dm/inventory.cpp | 2 | 
3 files changed, 28 insertions, 13 deletions
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp index ca094210ec..689d9fd551 100644 --- a/engines/dm/eventman.cpp +++ b/engines/dm/eventman.cpp @@ -420,20 +420,11 @@ void EventManager::processCommandQueue() {  	}  	if (cmd._type == kCommandClickInDungeonView) { -		/*warning("DUMMY CODE, all of this"); -		DungeonMan &dunMan = *_vm->_dungeonMan; -		CurrMapData &currMap = dunMan._currMap; -		uint16 mapX = currMap._partyPosX; -		uint16 mapY = currMap._partyPosY; -		mapX += gDirIntoStepCountEast[currMap._partyDir]; -		mapY += gDirIntoStepCountNorth[currMap._partyDir]; -		Thing squareFirstThing = dunMan.getSquareFirstThing(mapX, mapY); -		Sensor sensor(dunMan.getThingData(squareFirstThing)); -		if (sensor.getType() == kSensorWallChampionPortrait) { -			_vm->_championMan->addCandidateChampionToParty(sensor.getData()); -		}*/  		commandProcessType80ClickInDungeonView(commandX, commandY);  	} +	if (cmd._type == kCommandClickInPanel) { +		commandProcess81ClickInPanel(commandX, commandY); +	}  	// MISSING CODE: the rest of the function  } @@ -696,4 +687,27 @@ void EventManager::commandProcessCommands160To162ClickInResurrectReincarnatePane  	warning("MISSING CODE: F0067_MOUSE_SetPointerToNormal");  } +void EventManager::commandProcess81ClickInPanel(int16 x, int16 y) { +	ChampionMan &champMan = *_vm->_championMan; +	InventoryMan &invMan = *_vm->_inventoryMan; + +	CommandType commandType; +	switch (invMan._panelContent) { +	case kPanelContentChest: +		if (champMan._leaderIndex == kChampionNone) // if no leader +			return; +		commandType = getCommandTypeFromMouseInput(gMouseInput_PanelChest, Common::Point(x, y), kLeftMouseButton); +		if (commandType != kCommandNone) +			warning("MISSING CODE: F0302_CHAMPION_ProcessCommands28To65_ClickOnSlotBox"); +		break; +	case kPanelContentResurrectReincarnate: +		if (!champMan._leaderEmptyHanded) +			break; +		commandType = getCommandTypeFromMouseInput(gMouseInput_PanelChest, Common::Point(x, y), kLeftMouseButton); +		if (commandType != kCommandNone) +			commandProcessCommands160To162ClickInResurrectReincarnatePanel(commandType); +		break; +	} +} +  }; // end of namespace DM diff --git a/engines/dm/eventman.h b/engines/dm/eventman.h index fa4728741d..ca9587716c 100644 --- a/engines/dm/eventman.h +++ b/engines/dm/eventman.h @@ -250,6 +250,7 @@ public:  	void commandProcessType80ClickInDungeonViewTouchFrontWall(); // @ F0372_COMMAND_ProcessType80_ClickInDungeonView_TouchFrontWall  	void commandProcessType80ClickInDungeonView(int16 posX, int16 posY); // @ F0377_COMMAND_ProcessType80_ClickInDungeonView  	void commandProcessCommands160To162ClickInResurrectReincarnatePanel(CommandType commandType); // @ F0282_CHAMPION_ProcessCommands160To162_ClickInResurrectReincarnatePanel +	void commandProcess81ClickInPanel(int16 x, int16 y); // @ F0378_COMMAND_ProcessType81_ClickInPanel  };  } diff --git a/engines/dm/inventory.cpp b/engines/dm/inventory.cpp index 2fd4f4157c..550c4c85c6 100644 --- a/engines/dm/inventory.cpp +++ b/engines/dm/inventory.cpp @@ -53,7 +53,7 @@ void InventoryMan::toggleInventory(ChampionIndex championIndex) {  	EventManager &em = *_vm->_eventMan;  	DisplayMan &dm = *_vm->_displayMan; -	if ((championIndex == kChampionCloseInventory) && !cm._champions[championIndex]._currHealth) +	if ((championIndex != kChampionCloseInventory) && !cm._champions[championIndex]._currHealth)  		return;  	if (_vm->_pressingEye || _vm->_pressingMouth)  		return;  | 
