Browse Source

Clean up code to prep items for the network

pull/5333/head
staphen 4 years ago committed by Anders Jenbo
parent
commit
bfa3ccd90c
  1. 174
      Source/msg.cpp

174
Source/msg.cpp

@ -845,6 +845,65 @@ bool IsPItemValid(const TCmdPItem &message)
return IsItemAvailable(message.def.wIndx);
}
void PrepareItemForNetwork(const Item &item, TItem &messageItem)
{
messageItem.bId = item._iIdentified ? 1 : 0;
messageItem.bDur = item._iDurability;
messageItem.bMDur = item._iMaxDur;
messageItem.bCh = item._iCharges;
messageItem.bMCh = item._iMaxCharges;
messageItem.wValue = item._ivalue;
messageItem.wToHit = item._iPLToHit;
messageItem.wMaxDam = item._iMaxDam;
messageItem.bMinStr = item._iMinStr;
messageItem.bMinMag = item._iMinMag;
messageItem.bMinDex = item._iMinDex;
messageItem.bAC = item._iAC;
messageItem.dwBuff = item.dwBuff;
}
void PrepareEarForNetwork(const Item &item, TEar &ear)
{
ear.bCursval = item._ivalue | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(ear.heroname, item._iIName, sizeof(ear.heroname));
}
void PrepareItemForNetwork(const Item &item, TCmdGItem &message)
{
message.def.wIndx = item.IDidx;
message.def.wCI = item._iCreateInfo;
message.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR)
PrepareEarForNetwork(item, message.ear);
else
PrepareItemForNetwork(item, message.item);
}
void PrepareItemForNetwork(const Item &item, TCmdPItem &message)
{
message.def.wIndx = item.IDidx;
message.def.wCI = item._iCreateInfo;
message.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR)
PrepareEarForNetwork(item, message.ear);
else
PrepareItemForNetwork(item, message.item);
}
void PrepareItemForNetwork(const Item &item, TCmdChItem &message)
{
message.def.wIndx = item.IDidx;
message.def.wCI = item._iCreateInfo;
message.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR)
PrepareEarForNetwork(item, message.ear);
else
PrepareItemForNetwork(item, message.item);
}
void RecreateItem(const Player &player, const TItem &messageItem, Item &item)
{
RecreateItem(player, item, messageItem.wIndx, messageItem.wCI, messageItem.dwSeed, messageItem.wValue, (messageItem.dwBuff & CF_HELLFIRE) != 0);
@ -3002,28 +3061,7 @@ void NetSendCmdGItem(bool bHiPri, _cmd_id bCmd, uint8_t pnum, uint8_t ii)
cmd.dwTime = 0;
cmd.x = Items[ii].position.x;
cmd.y = Items[ii].position.y;
cmd.def.wIndx = Items[ii].IDidx;
cmd.def.wCI = Items[ii]._iCreateInfo;
cmd.def.dwSeed = Items[ii]._iSeed;
if (Items[ii].IDidx == IDI_EAR) {
cmd.ear.bCursval = Items[ii]._ivalue | ((Items[ii]._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(cmd.ear.heroname, Items[ii]._iIName, sizeof(cmd.ear.heroname));
} else {
cmd.item.bId = Items[ii]._iIdentified ? 1 : 0;
cmd.item.bDur = Items[ii]._iDurability;
cmd.item.bMDur = Items[ii]._iMaxDur;
cmd.item.bCh = Items[ii]._iCharges;
cmd.item.bMCh = Items[ii]._iMaxCharges;
cmd.item.wValue = Items[ii]._ivalue;
cmd.item.wToHit = Items[ii]._iPLToHit;
cmd.item.wMaxDam = Items[ii]._iMaxDam;
cmd.item.bMinStr = Items[ii]._iMinStr;
cmd.item.bMinMag = Items[ii]._iMinMag;
cmd.item.bMinDex = Items[ii]._iMinDex;
cmd.item.bAC = Items[ii]._iAC;
cmd.item.dwBuff = Items[ii].dwBuff;
}
PrepareItemForNetwork(Items[ii], cmd);
if (bHiPri)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
@ -3038,28 +3076,7 @@ void NetSendCmdPItem(bool bHiPri, _cmd_id bCmd, Point position, const Item &item
cmd.bCmd = bCmd;
cmd.x = position.x;
cmd.y = position.y;
cmd.def.wIndx = item.IDidx;
cmd.def.wCI = item._iCreateInfo;
cmd.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR) {
cmd.ear.bCursval = item._ivalue | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(cmd.ear.heroname, item._iIName, sizeof(cmd.ear.heroname));
} else {
cmd.item.bId = item._iIdentified ? 1 : 0;
cmd.item.bDur = item._iDurability;
cmd.item.bMDur = item._iMaxDur;
cmd.item.bCh = item._iCharges;
cmd.item.bMCh = item._iMaxCharges;
cmd.item.wValue = item._ivalue;
cmd.item.wToHit = item._iPLToHit;
cmd.item.wMaxDam = item._iMaxDam;
cmd.item.bMinStr = item._iMinStr;
cmd.item.bMinMag = item._iMinMag;
cmd.item.bMinDex = item._iMinDex;
cmd.item.bAC = item._iAC;
cmd.item.dwBuff = item.dwBuff;
}
PrepareItemForNetwork(item, cmd);
ItemLimbo = item;
@ -3077,28 +3094,7 @@ void NetSendCmdChItem(bool bHiPri, uint8_t bLoc)
cmd.bCmd = CMD_CHANGEPLRITEMS;
cmd.bLoc = bLoc;
cmd.def.wIndx = item.IDidx;
cmd.def.wCI = item._iCreateInfo;
cmd.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR) {
cmd.ear.bCursval = item._ivalue | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(cmd.ear.heroname, item._iIName, sizeof(cmd.ear.heroname));
} else {
cmd.item.bId = item._iIdentified ? 1 : 0;
cmd.item.bDur = item._iDurability;
cmd.item.bMDur = item._iMaxDur;
cmd.item.bCh = item._iCharges;
cmd.item.bMCh = item._iMaxCharges;
cmd.item.wValue = item._ivalue;
cmd.item.wToHit = item._iPLToHit;
cmd.item.wMaxDam = item._iMaxDam;
cmd.item.bMinStr = item._iMinStr;
cmd.item.bMinMag = item._iMinMag;
cmd.item.bMinDex = item._iMinDex;
cmd.item.bAC = item._iAC;
cmd.item.dwBuff = item.dwBuff;
}
PrepareItemForNetwork(item, cmd);
if (bHiPri)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
@ -3140,28 +3136,7 @@ void NetSendCmdChInvItem(bool bHiPri, int invGridIndex)
cmd.bCmd = CMD_CHANGEINVITEMS;
cmd.bLoc = invGridIndex;
cmd.def.wIndx = item.IDidx;
cmd.def.wCI = item._iCreateInfo;
cmd.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR) {
cmd.ear.bCursval = item._ivalue | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(cmd.ear.heroname, item._iIName, sizeof(cmd.ear.heroname));
} else {
cmd.item.bId = item._iIdentified ? 1 : 0;
cmd.item.bDur = item._iDurability;
cmd.item.bMDur = item._iMaxDur;
cmd.item.bCh = item._iCharges;
cmd.item.bMCh = item._iMaxCharges;
cmd.item.wValue = item._ivalue;
cmd.item.wToHit = item._iPLToHit;
cmd.item.wMaxDam = item._iMaxDam;
cmd.item.bMinStr = item._iMinStr;
cmd.item.bMinMag = item._iMinMag;
cmd.item.bMinDex = item._iMinDex;
cmd.item.bAC = item._iAC;
cmd.item.dwBuff = item.dwBuff;
}
PrepareItemForNetwork(item, cmd);
if (bHiPri)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
@ -3177,28 +3152,7 @@ void NetSendCmdChBeltItem(bool bHiPri, int beltIndex)
cmd.bCmd = CMD_CHANGEBELTITEMS;
cmd.bLoc = beltIndex;
cmd.def.wIndx = item.IDidx;
cmd.def.wCI = item._iCreateInfo;
cmd.def.dwSeed = item._iSeed;
if (item.IDidx == IDI_EAR) {
cmd.ear.bCursval = item._ivalue | ((item._iCurs - ICURS_EAR_SORCERER) << 6);
CopyUtf8(cmd.ear.heroname, item._iIName, sizeof(cmd.ear.heroname));
} else {
cmd.item.bId = item._iIdentified ? 1 : 0;
cmd.item.bDur = item._iDurability;
cmd.item.bMDur = item._iMaxDur;
cmd.item.bCh = item._iCharges;
cmd.item.bMCh = item._iMaxCharges;
cmd.item.wValue = item._ivalue;
cmd.item.wToHit = item._iPLToHit;
cmd.item.wMaxDam = item._iMaxDam;
cmd.item.bMinStr = item._iMinStr;
cmd.item.bMinMag = item._iMinMag;
cmd.item.bMinDex = item._iMinDex;
cmd.item.bAC = item._iAC;
cmd.item.dwBuff = item.dwBuff;
}
PrepareItemForNetwork(item, cmd);
if (bHiPri)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));

Loading…
Cancel
Save