| 649 | } |
| 650 | |
| 651 | BOOL LeftMouseCmd(BOOL bShift) |
| 652 | { |
| 653 | BOOL bNear; |
| 654 | |
| 655 | /// ASSERT: assert(MouseY < 352); // PANEL_TOP |
| 656 | |
| 657 | if (leveltype == DTYPE_TOWN) { |
| 658 | if (pcursitem != -1 && pcurs == CURSOR_HAND) |
| 659 | NetSendCmdLocParam1(TRUE, invflag ? CMD_GOTOGETITEM : CMD_GOTOAGETITEM, cursmx, cursmy, pcursitem); |
| 660 | if (pcursmonst != -1) |
| 661 | NetSendCmdLocParam1(TRUE, CMD_TALKXY, cursmx, cursmy, pcursmonst); |
| 662 | if (pcursitem == -1 && pcursmonst == -1 && pcursplr == -1) |
| 663 | return TRUE; |
| 664 | } else { |
| 665 | bNear = abs(plr[myplr].WorldX - cursmx) < 2 && abs(plr[myplr].WorldY - cursmy) < 2; |
| 666 | if (pcursitem != -1 && pcurs == CURSOR_HAND && !bShift) { |
| 667 | NetSendCmdLocParam1(TRUE, invflag ? CMD_GOTOGETITEM : CMD_GOTOAGETITEM, cursmx, cursmy, pcursitem); |
| 668 | } else if (pcursobj != -1 && (!bShift || bNear && object[pcursobj]._oBreak == 1)) { |
| 669 | NetSendCmdLocParam1(TRUE, pcurs == CURSOR_DISARM ? CMD_DISARMXY : CMD_OPOBJXY, cursmx, cursmy, pcursobj); |
| 670 | } else if (plr[myplr]._pwtype == WT_RANGED) { |
| 671 | if (bShift) { |
| 672 | NetSendCmdLoc(TRUE, CMD_RATTACKXY, cursmx, cursmy); |
| 673 | } else if (pcursmonst != -1) { |
| 674 | if (CanTalkToMonst(pcursmonst)) { |
| 675 | NetSendCmdParam1(TRUE, CMD_ATTACKID, pcursmonst); |
| 676 | } else { |
| 677 | NetSendCmdParam1(TRUE, CMD_RATTACKID, pcursmonst); |
| 678 | } |
| 679 | } else if (pcursplr != -1 && !FriendlyMode) { |
| 680 | NetSendCmdParam1(TRUE, CMD_RATTACKPID, pcursplr); |
| 681 | } |
| 682 | } else { |
| 683 | if (bShift) { |
| 684 | if (pcursmonst != -1) { |
| 685 | if (CanTalkToMonst(pcursmonst)) { |
| 686 | NetSendCmdParam1(TRUE, CMD_ATTACKID, pcursmonst); |
| 687 | } else { |
| 688 | NetSendCmdLoc(TRUE, CMD_SATTACKXY, cursmx, cursmy); |
| 689 | } |
| 690 | } else { |
| 691 | NetSendCmdLoc(TRUE, CMD_SATTACKXY, cursmx, cursmy); |
| 692 | } |
| 693 | } else if (pcursmonst != -1) { |
| 694 | NetSendCmdParam1(TRUE, CMD_ATTACKID, pcursmonst); |
| 695 | } else if (pcursplr != -1 && !FriendlyMode) { |
| 696 | NetSendCmdParam1(TRUE, CMD_ATTACKPID, pcursplr); |
| 697 | } |
| 698 | } |
| 699 | if (!bShift && pcursitem == -1 && pcursobj == -1 && pcursmonst == -1 && pcursplr == -1) |
| 700 | return TRUE; |
| 701 | } |
| 702 | |
| 703 | return FALSE; |
| 704 | } |
| 705 | |
| 706 | BOOL TryIconCurs() |
| 707 | { |
no test coverage detected