Have PosOkPlayer take PlayerStruct as input (#2430)
This commit is contained in:
parent
cb62e7bf2d
commit
8ba3bbb6a4
8 changed files with 173 additions and 186 deletions
123
Source/msg.cpp
123
Source/msg.cpp
|
|
@ -45,7 +45,7 @@ struct TMegaPkt {
|
|||
byte data[32000];
|
||||
|
||||
TMegaPkt()
|
||||
: spaceLeft(sizeof(data))
|
||||
: spaceLeft(sizeof(data))
|
||||
{
|
||||
}
|
||||
};
|
||||
|
|
@ -609,14 +609,14 @@ DWORD OnSyncData(TCmd *pCmd, int pnum)
|
|||
return sync_update(pnum, (const byte *)pCmd);
|
||||
}
|
||||
|
||||
DWORD OnWalk(TCmd *pCmd, int pnum)
|
||||
DWORD OnWalk(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLoc *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
ClrPlrPath(Players[pnum]);
|
||||
MakePlrPath(pnum, { p->x, p->y }, true);
|
||||
Players[pnum].destAction = ACTION_NONE;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
ClrPlrPath(player);
|
||||
MakePlrPath(player, { p->x, p->y }, true);
|
||||
player.destAction = ACTION_NONE;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -670,14 +670,14 @@ DWORD OnAddVitality(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnGotoGetItem(TCmd *pCmd, int pnum)
|
||||
DWORD OnGotoGetItem(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLocParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
Players[pnum].destAction = ACTION_PICKUPITEM;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, false);
|
||||
player.destAction = ACTION_PICKUPITEM;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -736,14 +736,14 @@ DWORD OnGetItem(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnGotoAutoGetItem(TCmd *pCmd, int pnum)
|
||||
DWORD OnGotoAutoGetItem(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLocParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
Players[pnum].destAction = ACTION_PICKUPAITEM;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, false);
|
||||
player.destAction = ACTION_PICKUPAITEM;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -884,15 +884,15 @@ DWORD OnRespawnItem(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnAttackTile(TCmd *pCmd, int pnum)
|
||||
DWORD OnAttackTile(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLoc *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
Players[pnum].destAction = ACTION_ATTACK;
|
||||
Players[pnum].destParam1 = p->x;
|
||||
Players[pnum].destParam2 = p->y;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, false);
|
||||
player.destAction = ACTION_ATTACK;
|
||||
player.destParam1 = p->x;
|
||||
player.destParam2 = p->y;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -996,33 +996,27 @@ DWORD OnTargetSpellTile(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnOperateObjectTile(TCmd *pCmd, int pnum)
|
||||
DWORD OnOperateObjectTile(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLocParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
if (Objects[p->wParam1]._oSolidFlag || Objects[p->wParam1]._oDoorFlag)
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
else
|
||||
MakePlrPath(pnum, { p->x, p->y }, true);
|
||||
Players[pnum].destAction = ACTION_OPERATE;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, !Objects[p->wParam1]._oSolidFlag && !Objects[p->wParam1]._oDoorFlag);
|
||||
player.destAction = ACTION_OPERATE;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnDisarm(TCmd *pCmd, int pnum)
|
||||
DWORD OnDisarm(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLocParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
if (Objects[p->wParam1]._oSolidFlag || Objects[p->wParam1]._oDoorFlag)
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
else
|
||||
MakePlrPath(pnum, { p->x, p->y }, true);
|
||||
Players[pnum].destAction = ACTION_DISARM;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, !Objects[p->wParam1]._oSolidFlag && !Objects[p->wParam1]._oDoorFlag);
|
||||
player.destAction = ACTION_DISARM;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -1040,29 +1034,29 @@ DWORD OnOperateObjectTelekinesis(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnAttackMonster(TCmd *pCmd, int pnum)
|
||||
DWORD OnAttackMonster(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
Point position = Monsters[p->wParam1].position.future;
|
||||
if (Players[pnum].position.tile.WalkingDistance(position) > 1)
|
||||
MakePlrPath(pnum, position, false);
|
||||
Players[pnum].destAction = ACTION_ATTACKMON;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (player.position.tile.WalkingDistance(position) > 1)
|
||||
MakePlrPath(player, position, false);
|
||||
player.destAction = ACTION_ATTACKMON;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnAttackPlayer(TCmd *pCmd, int pnum)
|
||||
DWORD OnAttackPlayer(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
MakePlrPath(pnum, Players[p->wParam1].position.future, false);
|
||||
Players[pnum].destAction = ACTION_ATTACKPLR;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, Players[p->wParam1].position.future, false);
|
||||
player.destAction = ACTION_ATTACKPLR;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -1218,14 +1212,14 @@ DWORD OnHealOther(TCmd *pCmd, int pnum)
|
|||
return sizeof(*p);
|
||||
}
|
||||
|
||||
DWORD OnTalkXY(TCmd *pCmd, int pnum)
|
||||
DWORD OnTalkXY(TCmd *pCmd, PlayerStruct &player)
|
||||
{
|
||||
auto *p = (TCmdLocParam1 *)pCmd;
|
||||
|
||||
if (gbBufferMsgs != 1 && currlevel == Players[pnum].plrlevel) {
|
||||
MakePlrPath(pnum, { p->x, p->y }, false);
|
||||
Players[pnum].destAction = ACTION_TALK;
|
||||
Players[pnum].destParam1 = p->wParam1;
|
||||
if (gbBufferMsgs != 1 && currlevel == player.plrlevel) {
|
||||
MakePlrPath(player, { p->x, p->y }, false);
|
||||
player.destAction = ACTION_TALK;
|
||||
player.destParam1 = p->wParam1;
|
||||
}
|
||||
|
||||
return sizeof(*p);
|
||||
|
|
@ -2013,7 +2007,6 @@ Point GetItemPosition(Point position)
|
|||
int xx = position.x + l;
|
||||
if (CanPut({ xx, yy }))
|
||||
return { xx, yy };
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2507,11 +2500,13 @@ DWORD ParseCmd(int pnum, TCmd *pCmd)
|
|||
if (sgwPackPlrOffsetTbl[pnum] != 0 && sbLastCmd != CMD_ACK_PLRINFO && sbLastCmd != CMD_SEND_PLRINFO)
|
||||
return 0;
|
||||
|
||||
auto &player = Players[pnum];
|
||||
|
||||
switch (pCmd->bCmd) {
|
||||
case CMD_SYNCDATA:
|
||||
return OnSyncData(pCmd, pnum);
|
||||
case CMD_WALKXY:
|
||||
return OnWalk(pCmd, pnum);
|
||||
return OnWalk(pCmd, player);
|
||||
case CMD_ADDSTR:
|
||||
return OnAddStrength(pCmd, pnum);
|
||||
case CMD_ADDDEX:
|
||||
|
|
@ -2521,13 +2516,13 @@ DWORD ParseCmd(int pnum, TCmd *pCmd)
|
|||
case CMD_ADDVIT:
|
||||
return OnAddVitality(pCmd, pnum);
|
||||
case CMD_GOTOGETITEM:
|
||||
return OnGotoGetItem(pCmd, pnum);
|
||||
return OnGotoGetItem(pCmd, player);
|
||||
case CMD_REQUESTGITEM:
|
||||
return OnRequestGetItem(pCmd, pnum);
|
||||
case CMD_GETITEM:
|
||||
return OnGetItem(pCmd, pnum);
|
||||
case CMD_GOTOAGETITEM:
|
||||
return OnGotoAutoGetItem(pCmd, pnum);
|
||||
return OnGotoAutoGetItem(pCmd, player);
|
||||
case CMD_REQUESTAGITEM:
|
||||
return OnRequestAutoGetItem(pCmd, pnum);
|
||||
case CMD_AGETITEM:
|
||||
|
|
@ -2541,7 +2536,7 @@ DWORD ParseCmd(int pnum, TCmd *pCmd)
|
|||
case CMD_RESPAWNITEM:
|
||||
return OnRespawnItem(pCmd, pnum);
|
||||
case CMD_ATTACKXY:
|
||||
return OnAttackTile(pCmd, pnum);
|
||||
return OnAttackTile(pCmd, player);
|
||||
case CMD_SATTACKXY:
|
||||
return OnStandingAttackTile(pCmd, pnum);
|
||||
case CMD_RATTACKXY:
|
||||
|
|
@ -2553,15 +2548,15 @@ DWORD ParseCmd(int pnum, TCmd *pCmd)
|
|||
case CMD_TSPELLXY:
|
||||
return OnTargetSpellTile(pCmd, pnum);
|
||||
case CMD_OPOBJXY:
|
||||
return OnOperateObjectTile(pCmd, pnum);
|
||||
return OnOperateObjectTile(pCmd, player);
|
||||
case CMD_DISARMXY:
|
||||
return OnDisarm(pCmd, pnum);
|
||||
return OnDisarm(pCmd, player);
|
||||
case CMD_OPOBJT:
|
||||
return OnOperateObjectTelekinesis(pCmd, pnum);
|
||||
case CMD_ATTACKID:
|
||||
return OnAttackMonster(pCmd, pnum);
|
||||
return OnAttackMonster(pCmd, player);
|
||||
case CMD_ATTACKPID:
|
||||
return OnAttackPlayer(pCmd, pnum);
|
||||
return OnAttackPlayer(pCmd, player);
|
||||
case CMD_RATTACKID:
|
||||
return OnRangedAttackMonster(pCmd, pnum);
|
||||
case CMD_RATTACKPID:
|
||||
|
|
@ -2581,7 +2576,7 @@ DWORD ParseCmd(int pnum, TCmd *pCmd)
|
|||
case CMD_HEALOTHER:
|
||||
return OnHealOther(pCmd, pnum);
|
||||
case CMD_TALKXY:
|
||||
return OnTalkXY(pCmd, pnum);
|
||||
return OnTalkXY(pCmd, player);
|
||||
case CMD_DEBUG:
|
||||
return OnDebug(pCmd);
|
||||
case CMD_NEWLVL:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue