Browse Source

Add OperateObject to MouseAction

For continiously operate fountains etc

Fixes #1133
pull/2426/head
Anders Jenbo 5 years ago
parent
commit
4260d4cfcc
  1. 1
      Source/diablo.cpp
  2. 1
      Source/diablo.h
  3. 8
      Source/track.cpp

1
Source/diablo.cpp

@ -250,6 +250,7 @@ bool LeftMouseCmd(bool bShift)
if (pcursitem != -1 && pcurs == CURSOR_HAND && !bShift) {
NetSendCmdLocParam1(true, invflag ? CMD_GOTOGETITEM : CMD_GOTOAGETITEM, { cursmx, cursmy }, pcursitem);
} else if (pcursobj != -1 && (!objectIsDisabled(pcursobj)) && (!bShift || (bNear && Objects[pcursobj]._oBreak == 1))) {
LastMouseButtonAction = MouseActionType::OperateObject;
NetSendCmdLocParam1(true, pcurs == CURSOR_DISARM ? CMD_DISARMXY : CMD_OPOBJXY, { cursmx, cursmy }, pcursobj);
} else if (myPlayer.UsesRangedWeapon()) {
if (bShift) {

1
Source/diablo.h

@ -50,6 +50,7 @@ enum class MouseActionType : int {
Attack,
AttackMonsterTarget,
AttackPlayerTarget,
OperateObject,
Other,
};

8
Source/track.cpp

@ -54,6 +54,14 @@ bool RepeatMouseAction()
case MouseActionType::SpellOutOfMana:
CheckPlrSpell(true);
break;
case MouseActionType::OperateObject:
if (pcursobj != -1) {
auto &object = Objects[pcursobj];
if (object.IsDoor())
break;
NetSendCmdLocParam1(true, CMD_OPOBJXY, object.position, pcursobj);
}
break;
case MouseActionType::Other:
case MouseActionType::None:
return false;

Loading…
Cancel
Save