Browse Source

Mark network pointers as const

pull/3009/head
Anders Jenbo 5 years ago
parent
commit
7001ead263
  1. 206
      Source/msg.cpp
  2. 2
      Source/msg.h
  3. 90
      Source/multi.cpp
  4. 12
      Source/multi.h
  5. 4
      Source/tmsg.cpp
  6. 2
      Source/tmsg.h

206
Source/msg.cpp

@ -168,7 +168,7 @@ int WaitForTurns()
return 100 * sgbDeltaChunks / MAX_CHUNKS;
}
byte *DeltaExportItem(byte *dst, TCmdPItem *src)
byte *DeltaExportItem(byte *dst, const TCmdPItem *src)
{
for (int i = 0; i < MAXITEMS; i++, src++) {
if (src->bCmd == CMD_INVALID) {
@ -182,34 +182,35 @@ byte *DeltaExportItem(byte *dst, TCmdPItem *src)
return dst;
}
byte *DeltaImportItem(byte *src, TCmdPItem *dst)
size_t DeltaImportItem(const byte *src, TCmdPItem *dst)
{
size_t size = 0;
for (int i = 0; i < MAXITEMS; i++, dst++) {
if (*src == byte { 0xFF }) {
if (src[size] == byte { 0xFF }) {
memset(dst, 0xFF, sizeof(TCmdPItem));
src++;
size++;
} else {
memcpy(dst, src, sizeof(TCmdPItem));
src += sizeof(TCmdPItem);
memcpy(dst, &src[size], sizeof(TCmdPItem));
size += sizeof(TCmdPItem);
}
}
return src;
return size;
}
byte *DeltaExportObject(byte *dst, DObjectStr *src)
byte *DeltaExportObject(byte *dst, const DObjectStr *src)
{
memcpy(dst, src, sizeof(DObjectStr) * MAXOBJECTS);
return dst + sizeof(DObjectStr) * MAXOBJECTS;
}
byte *DeltaImportObject(byte *src, DObjectStr *dst)
size_t DeltaImportObject(const byte *src, DObjectStr *dst)
{
memcpy(dst, src, sizeof(DObjectStr) * MAXOBJECTS);
return src + sizeof(DObjectStr) * MAXOBJECTS;
return sizeof(DObjectStr) * MAXOBJECTS;
}
byte *DeltaExportMonster(byte *dst, DMonsterStr *src)
byte *DeltaExportMonster(byte *dst, const DMonsterStr *src)
{
for (int i = 0; i < MAXMONSTERS; i++, src++) {
if (src->_mx == 0xFF) {
@ -223,19 +224,18 @@ byte *DeltaExportMonster(byte *dst, DMonsterStr *src)
return dst;
}
byte *DeltaImportMonster(byte *src, DMonsterStr *dst)
void DeltaImportMonster(const byte *src, DMonsterStr *dst)
{
size_t size = 0;
for (int i = 0; i < MAXMONSTERS; i++, dst++) {
if (*src == byte { 0xFF }) {
if (src[size] == byte { 0xFF }) {
memset(dst, 0xFF, sizeof(DMonsterStr));
src++;
size++;
} else {
memcpy(dst, src, sizeof(DMonsterStr));
src += sizeof(DMonsterStr);
memcpy(dst, &src[size], sizeof(DMonsterStr));
size += sizeof(DMonsterStr);
}
}
return src;
}
byte *DeltaExportJunk(byte *dst)
@ -264,7 +264,7 @@ byte *DeltaExportJunk(byte *dst)
return dst;
}
void DeltaImportJunk(byte *src)
void DeltaImportJunk(const byte *src)
{
for (int i = 0; i < MAXPORTAL; i++) {
if (*src == byte { 0xFF }) {
@ -317,8 +317,8 @@ void DeltaImportData(BYTE cmd, DWORD recvOffset)
DeltaImportJunk(src);
} else if (cmd >= CMD_DLEVEL_0 && cmd <= CMD_DLEVEL_24) {
BYTE i = cmd - CMD_DLEVEL_0;
src = DeltaImportItem(src, sgLevels[i].item);
src = DeltaImportObject(src, sgLevels[i].object);
src += DeltaImportItem(src, sgLevels[i].item);
src += DeltaImportObject(src, sgLevels[i].object);
DeltaImportMonster(src, sgLevels[i].monster);
} else {
app_fatal("Unkown network message type: %i", cmd);
@ -328,7 +328,7 @@ void DeltaImportData(BYTE cmd, DWORD recvOffset)
sgbDeltaChanged = true;
}
DWORD OnLevelData(int pnum, TCmd *pCmd)
DWORD OnLevelData(int pnum, const TCmd *pCmd)
{
auto *p = (TCmdPlrInfoHdr *)pCmd;
@ -368,7 +368,7 @@ DWORD OnLevelData(int pnum, TCmd *pCmd)
return p->wBytes + sizeof(*p);
}
void DeltaSyncGolem(TCmdGolem *pG, int pnum, BYTE bLevel)
void DeltaSyncGolem(const TCmdGolem *pG, int pnum, BYTE bLevel)
{
if (!gbIsMultiplayer)
return;
@ -418,7 +418,7 @@ void DeltaSyncObject(int oi, _cmd_id bCmd, BYTE bLevel)
sgLevels[bLevel].object[oi].bCmd = bCmd;
}
bool DeltaGetItem(TCmdGItem *pI, BYTE bLevel)
bool DeltaGetItem(const TCmdGItem *pI, BYTE bLevel)
{
if (!gbIsMultiplayer)
return true;
@ -477,7 +477,7 @@ bool DeltaGetItem(TCmdGItem *pI, BYTE bLevel)
return true;
}
void DeltaPutItem(TCmdPItem *pI, int x, int y, BYTE bLevel)
void DeltaPutItem(const TCmdPItem *pI, int x, int y, BYTE bLevel)
{
if (!gbIsMultiplayer)
return;
@ -559,7 +559,7 @@ void PlayerMessageFormat(const char *pszFmt, ...)
va_end(va);
}
void NetSendCmdGItem2(bool usonly, _cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
void NetSendCmdGItem2(bool usonly, _cmd_id bCmd, BYTE mast, BYTE pnum, const TCmdGItem *p)
{
TCmdGItem cmd;
@ -584,7 +584,7 @@ void NetSendCmdGItem2(bool usonly, _cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem
multi_msg_add((byte *)&cmd.bCmd, sizeof(cmd));
}
bool NetSendCmdReq2(_cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
bool NetSendCmdReq2(_cmd_id bCmd, BYTE mast, BYTE pnum, const TCmdGItem *p)
{
TCmdGItem cmd;
@ -604,7 +604,7 @@ bool NetSendCmdReq2(_cmd_id bCmd, BYTE mast, BYTE pnum, TCmdGItem *p)
return true;
}
void NetSendCmdExtra(TCmdGItem *p)
void NetSendCmdExtra(const TCmdGItem *p)
{
TCmdGItem cmd;
@ -614,7 +614,7 @@ void NetSendCmdExtra(TCmdGItem *p)
NetSendHiPri(MyPlayerId, (byte *)&cmd, sizeof(cmd));
}
DWORD OnWalk(TCmd *pCmd, Player &player)
DWORD OnWalk(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLoc *)pCmd;
@ -627,7 +627,7 @@ DWORD OnWalk(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnAddStrength(TCmd *pCmd, int pnum)
DWORD OnAddStrength(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -639,7 +639,7 @@ DWORD OnAddStrength(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnAddMagic(TCmd *pCmd, int pnum)
DWORD OnAddMagic(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -651,7 +651,7 @@ DWORD OnAddMagic(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnAddDexterity(TCmd *pCmd, int pnum)
DWORD OnAddDexterity(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -663,7 +663,7 @@ DWORD OnAddDexterity(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnAddVitality(TCmd *pCmd, int pnum)
DWORD OnAddVitality(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -675,7 +675,7 @@ DWORD OnAddVitality(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnGotoGetItem(TCmd *pCmd, Player &player)
DWORD OnGotoGetItem(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -688,7 +688,7 @@ DWORD OnGotoGetItem(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnRequestGetItem(TCmd *pCmd, Player &player)
DWORD OnRequestGetItem(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdGItem *)pCmd;
@ -711,7 +711,7 @@ DWORD OnRequestGetItem(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnGetItem(TCmd *pCmd, int pnum)
DWORD OnGetItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdGItem *)pCmd;
@ -742,7 +742,7 @@ DWORD OnGetItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnGotoAutoGetItem(TCmd *pCmd, Player &player)
DWORD OnGotoAutoGetItem(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -755,7 +755,7 @@ DWORD OnGotoAutoGetItem(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnRequestAutoGetItem(TCmd *pCmd, Player &player)
DWORD OnRequestAutoGetItem(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdGItem *)pCmd;
@ -778,7 +778,7 @@ DWORD OnRequestAutoGetItem(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnAutoGetItem(TCmd *pCmd, int pnum)
DWORD OnAutoGetItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdGItem *)pCmd;
@ -809,7 +809,7 @@ DWORD OnAutoGetItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnItemExtra(TCmd *pCmd, int pnum)
DWORD OnItemExtra(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdGItem *)pCmd;
@ -824,7 +824,7 @@ DWORD OnItemExtra(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnPutItem(TCmd *pCmd, int pnum)
DWORD OnPutItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdPItem *)pCmd;
@ -851,7 +851,7 @@ DWORD OnPutItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSyncPutItem(TCmd *pCmd, int pnum)
DWORD OnSyncPutItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdPItem *)pCmd;
@ -874,7 +874,7 @@ DWORD OnSyncPutItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnRespawnItem(TCmd *pCmd, int pnum)
DWORD OnRespawnItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdPItem *)pCmd;
@ -893,7 +893,7 @@ DWORD OnRespawnItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnAttackTile(TCmd *pCmd, Player &player)
DWORD OnAttackTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLoc *)pCmd;
@ -907,7 +907,7 @@ DWORD OnAttackTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnStandingAttackTile(TCmd *pCmd, Player &player)
DWORD OnStandingAttackTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLoc *)pCmd;
@ -921,7 +921,7 @@ DWORD OnStandingAttackTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnRangedAttackTile(TCmd *pCmd, Player &player)
DWORD OnRangedAttackTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLoc *)pCmd;
@ -935,7 +935,7 @@ DWORD OnRangedAttackTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnSpellWall(TCmd *pCmd, Player &player)
DWORD OnSpellWall(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam4 *)pCmd;
@ -960,7 +960,7 @@ DWORD OnSpellWall(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnSpellTile(TCmd *pCmd, Player &player)
DWORD OnSpellTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam3 *)pCmd;
@ -984,7 +984,7 @@ DWORD OnSpellTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnTargetSpellTile(TCmd *pCmd, Player &player)
DWORD OnTargetSpellTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam2 *)pCmd;
@ -1007,7 +1007,7 @@ DWORD OnTargetSpellTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnOperateObjectTile(TCmd *pCmd, Player &player)
DWORD OnOperateObjectTile(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1020,7 +1020,7 @@ DWORD OnOperateObjectTile(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnDisarm(TCmd *pCmd, Player &player)
DWORD OnDisarm(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1033,7 +1033,7 @@ DWORD OnDisarm(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnOperateObjectTelekinesis(TCmd *pCmd, Player &player)
DWORD OnOperateObjectTelekinesis(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1045,7 +1045,7 @@ DWORD OnOperateObjectTelekinesis(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnAttackMonster(TCmd *pCmd, Player &player)
DWORD OnAttackMonster(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1060,7 +1060,7 @@ DWORD OnAttackMonster(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnAttackPlayer(TCmd *pCmd, Player &player)
DWORD OnAttackPlayer(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1073,7 +1073,7 @@ DWORD OnAttackPlayer(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnRangedAttackMonster(TCmd *pCmd, Player &player)
DWORD OnRangedAttackMonster(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1086,7 +1086,7 @@ DWORD OnRangedAttackMonster(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnRangedAttackPlayer(TCmd *pCmd, Player &player)
DWORD OnRangedAttackPlayer(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1099,7 +1099,7 @@ DWORD OnRangedAttackPlayer(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnSpellMonster(TCmd *pCmd, Player &player)
DWORD OnSpellMonster(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam4 *)pCmd;
@ -1122,7 +1122,7 @@ DWORD OnSpellMonster(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnSpellPlayer(TCmd *pCmd, Player &player)
DWORD OnSpellPlayer(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam4 *)pCmd;
@ -1145,7 +1145,7 @@ DWORD OnSpellPlayer(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnTargetSpellMonster(TCmd *pCmd, Player &player)
DWORD OnTargetSpellMonster(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam3 *)pCmd;
@ -1167,7 +1167,7 @@ DWORD OnTargetSpellMonster(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnTargetSpellPlayer(TCmd *pCmd, Player &player)
DWORD OnTargetSpellPlayer(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam3 *)pCmd;
@ -1189,7 +1189,7 @@ DWORD OnTargetSpellPlayer(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnKnockback(TCmd *pCmd, int pnum)
DWORD OnKnockback(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1201,7 +1201,7 @@ DWORD OnKnockback(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnResurrect(TCmd *pCmd, int pnum)
DWORD OnResurrect(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1215,7 +1215,7 @@ DWORD OnResurrect(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnHealOther(TCmd *pCmd, int pnum)
DWORD OnHealOther(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1225,7 +1225,7 @@ DWORD OnHealOther(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnTalkXY(TCmd *pCmd, Player &player)
DWORD OnTalkXY(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1238,7 +1238,7 @@ DWORD OnTalkXY(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnNewLevel(TCmd *pCmd, int pnum)
DWORD OnNewLevel(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam2 *)pCmd;
@ -1250,7 +1250,7 @@ DWORD OnNewLevel(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnWarp(TCmd *pCmd, int pnum)
DWORD OnWarp(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1263,7 +1263,7 @@ DWORD OnWarp(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnMonstDeath(TCmd *pCmd, int pnum)
DWORD OnMonstDeath(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1279,7 +1279,7 @@ DWORD OnMonstDeath(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnKillGolem(TCmd *pCmd, int pnum)
DWORD OnKillGolem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1294,7 +1294,7 @@ DWORD OnKillGolem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnAwakeGolem(TCmd *pCmd, int pnum)
DWORD OnAwakeGolem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdGolem *)pCmd;
@ -1320,7 +1320,7 @@ DWORD OnAwakeGolem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnMonstDamage(TCmd *pCmd, int pnum)
DWORD OnMonstDamage(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdMonDamage *)pCmd;
@ -1343,7 +1343,7 @@ DWORD OnMonstDamage(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnPlayerDeath(TCmd *pCmd, int pnum)
DWORD OnPlayerDeath(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1357,7 +1357,7 @@ DWORD OnPlayerDeath(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnPlayerDamage(TCmd *pCmd, Player &player)
DWORD OnPlayerDamage(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdDamage *)pCmd;
@ -1370,7 +1370,7 @@ DWORD OnPlayerDamage(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnOpenDoor(TCmd *pCmd, int pnum)
DWORD OnOpenDoor(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1386,7 +1386,7 @@ DWORD OnOpenDoor(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnCloseDoor(TCmd *pCmd, int pnum)
DWORD OnCloseDoor(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1402,7 +1402,7 @@ DWORD OnCloseDoor(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnOperateObject(TCmd *pCmd, int pnum)
DWORD OnOperateObject(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1418,7 +1418,7 @@ DWORD OnOperateObject(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnPlayerOperateObject(TCmd *pCmd, int pnum)
DWORD OnPlayerOperateObject(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam2 *)pCmd;
@ -1434,7 +1434,7 @@ DWORD OnPlayerOperateObject(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnBreakObject(TCmd *pCmd, int pnum)
DWORD OnBreakObject(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam2 *)pCmd;
@ -1450,7 +1450,7 @@ DWORD OnBreakObject(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnChangePlayerItems(TCmd *pCmd, int pnum)
DWORD OnChangePlayerItems(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdChItem *)pCmd;
auto bodyLocation = static_cast<inv_body_loc>(p->bLoc);
@ -1467,7 +1467,7 @@ DWORD OnChangePlayerItems(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnDeletePlayerItems(TCmd *pCmd, int pnum)
DWORD OnDeletePlayerItems(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdDelItem *)pCmd;
@ -1479,7 +1479,7 @@ DWORD OnDeletePlayerItems(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnPlayerLevel(TCmd *pCmd, int pnum)
DWORD OnPlayerLevel(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1491,7 +1491,7 @@ DWORD OnPlayerLevel(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnDropItem(TCmd *pCmd, int pnum)
DWORD OnDropItem(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdPItem *)pCmd;
@ -1503,7 +1503,7 @@ DWORD OnDropItem(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSendPlayerInfo(TCmd *pCmd, int pnum)
DWORD OnSendPlayerInfo(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdPlrInfoHdr *)pCmd;
@ -1515,7 +1515,7 @@ DWORD OnSendPlayerInfo(TCmd *pCmd, int pnum)
return p->wBytes + sizeof(*p);
}
DWORD OnPlayerJoinLevel(TCmd *pCmd, int pnum)
DWORD OnPlayerJoinLevel(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLocParam1 *)pCmd;
@ -1557,7 +1557,7 @@ DWORD OnPlayerJoinLevel(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnActivatePortal(TCmd *pCmd, int pnum)
DWORD OnActivatePortal(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLocParam3 *)pCmd;
@ -1590,7 +1590,7 @@ DWORD OnActivatePortal(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnDeactivatePortal(TCmd *pCmd, int pnum)
DWORD OnDeactivatePortal(const TCmd *pCmd, int pnum)
{
if (gbBufferMsgs == 1) {
SendPacket(pnum, pCmd, sizeof(*pCmd));
@ -1604,7 +1604,7 @@ DWORD OnDeactivatePortal(TCmd *pCmd, int pnum)
return sizeof(*pCmd);
}
DWORD OnRestartTown(TCmd *pCmd, int pnum)
DWORD OnRestartTown(const TCmd *pCmd, int pnum)
{
if (gbBufferMsgs == 1) {
SendPacket(pnum, pCmd, sizeof(*pCmd));
@ -1619,7 +1619,7 @@ DWORD OnRestartTown(TCmd *pCmd, int pnum)
return sizeof(*pCmd);
}
DWORD OnSetStrength(TCmd *pCmd, int pnum)
DWORD OnSetStrength(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1631,7 +1631,7 @@ DWORD OnSetStrength(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSetDexterity(TCmd *pCmd, int pnum)
DWORD OnSetDexterity(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1643,7 +1643,7 @@ DWORD OnSetDexterity(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSetMagic(TCmd *pCmd, int pnum)
DWORD OnSetMagic(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1655,7 +1655,7 @@ DWORD OnSetMagic(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSetVitality(TCmd *pCmd, int pnum)
DWORD OnSetVitality(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdParam1 *)pCmd;
@ -1667,7 +1667,7 @@ DWORD OnSetVitality(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnString(TCmd *pCmd, int pnum)
DWORD OnString(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdString *)pCmd;
@ -1678,7 +1678,7 @@ DWORD OnString(TCmd *pCmd, int pnum)
return len + 2; // length of string + nul terminator + sizeof(p->bCmd)
}
DWORD OnSyncQuest(TCmd *pCmd, int pnum)
DWORD OnSyncQuest(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdQuest *)pCmd;
@ -1693,7 +1693,7 @@ DWORD OnSyncQuest(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnCheatExperience(TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
DWORD OnCheatExperience(const TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
{
#ifdef _DEBUG
if (gbBufferMsgs == 1)
@ -1709,7 +1709,7 @@ DWORD OnCheatExperience(TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
return sizeof(*pCmd);
}
DWORD OnCheatSpellLevel(TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
DWORD OnCheatSpellLevel(const TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
{
#ifdef _DEBUG
if (gbBufferMsgs == 1) {
@ -1722,12 +1722,12 @@ DWORD OnCheatSpellLevel(TCmd *pCmd, int pnum) // NOLINT(misc-unused-parameters)
return sizeof(*pCmd);
}
DWORD OnDebug(TCmd *pCmd)
DWORD OnDebug(const TCmd *pCmd)
{
return sizeof(*pCmd);
}
DWORD OnNova(TCmd *pCmd, int pnum)
DWORD OnNova(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLoc *)pCmd;
@ -1747,7 +1747,7 @@ DWORD OnNova(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnSetShield(TCmd *pCmd, Player &player)
DWORD OnSetShield(const TCmd *pCmd, Player &player)
{
if (gbBufferMsgs != 1)
player.pManaShield = true;
@ -1755,7 +1755,7 @@ DWORD OnSetShield(TCmd *pCmd, Player &player)
return sizeof(*pCmd);
}
DWORD OnRemoveShield(TCmd *pCmd, Player &player)
DWORD OnRemoveShield(const TCmd *pCmd, Player &player)
{
if (gbBufferMsgs != 1)
player.pManaShield = false;
@ -1763,7 +1763,7 @@ DWORD OnRemoveShield(TCmd *pCmd, Player &player)
return sizeof(*pCmd);
}
DWORD OnSetReflect(TCmd *pCmd, Player &player)
DWORD OnSetReflect(const TCmd *pCmd, Player &player)
{
auto *p = (TCmdParam1 *)pCmd;
if (gbBufferMsgs != 1)
@ -1772,7 +1772,7 @@ DWORD OnSetReflect(TCmd *pCmd, Player &player)
return sizeof(*p);
}
DWORD OnNakrul(TCmd *pCmd)
DWORD OnNakrul(const TCmd *pCmd)
{
if (gbBufferMsgs != 1) {
OperateNakrulLever();
@ -1783,7 +1783,7 @@ DWORD OnNakrul(TCmd *pCmd)
return sizeof(*pCmd);
}
DWORD OnOpenHive(TCmd *pCmd, int pnum)
DWORD OnOpenHive(const TCmd *pCmd, int pnum)
{
auto *p = (TCmdLocParam2 *)pCmd;
if (gbBufferMsgs != 1) {
@ -1794,7 +1794,7 @@ DWORD OnOpenHive(TCmd *pCmd, int pnum)
return sizeof(*p);
}
DWORD OnOpenCrypt(TCmd *pCmd)
DWORD OnOpenCrypt(const TCmd *pCmd)
{
if (gbBufferMsgs != 1) {
TownOpenGrave();
@ -2540,7 +2540,7 @@ void delta_close_portal(int pnum)
sgbDeltaChanged = true;
}
uint32_t ParseCmd(int pnum, TCmd *pCmd)
uint32_t ParseCmd(int pnum, const TCmd *pCmd)
{
sbLastCmd = pCmd->bCmd;
if (sgwPackPlrOffsetTbl[pnum] != 0 && sbLastCmd != CMD_ACK_PLRINFO && sbLastCmd != CMD_SEND_PLRINFO)

2
Source/msg.h

@ -458,6 +458,6 @@ void NetSendCmdDamage(bool bHiPri, uint8_t bPlr, uint32_t dwDam);
void NetSendCmdMonDmg(bool bHiPri, uint16_t wMon, uint32_t dwDam);
void NetSendCmdString(uint32_t pmask, const char *pszStr);
void delta_close_portal(int pnum);
uint32_t ParseCmd(int pnum, TCmd *pCmd);
uint32_t ParseCmd(int pnum, const TCmd *pCmd);
} // namespace devilution

90
Source/multi.cpp

@ -76,7 +76,7 @@ void BufferInit(TBuffer *pBuf)
pBuf->bData[0] = byte { 0 };
}
void CopyPacket(TBuffer *buf, byte *packet, uint8_t size)
void CopyPacket(TBuffer *buf, const byte *packet, uint8_t size)
{
if (buf->dwNextWriteOffset + size + 2 > 0x1000) {
return;
@ -130,13 +130,13 @@ void NetReceivePlayerData(TPkt *pkt)
pkt->hdr.bdex = myPlayer._pBaseDex;
}
void SendPacket(int playerId, void *packet, BYTE dwSize)
void SendPacket(int playerId, const byte *packet, size_t size)
{
TPkt pkt;
NetReceivePlayerData(&pkt);
pkt.hdr.wLen = dwSize + sizeof(pkt.hdr);
memcpy(pkt.body, packet, dwSize);
pkt.hdr.wLen = size + sizeof(pkt.hdr);
memcpy(pkt.body, packet, size);
if (!SNetSendMessage(playerId, &pkt.hdr, pkt.hdr.wLen))
nthread_terminate_game("SNetSendMessage0");
}
@ -292,25 +292,27 @@ void BeginTimeout()
}
}
void HandleAllPackets(int pnum, byte *pData, size_t nSize)
void HandleAllPackets(int pnum, const byte *data, size_t size)
{
while (nSize != 0) {
int nLen = ParseCmd(pnum, (TCmd *)pData);
if (nLen == 0) {
for (unsigned offset = 0; offset < size;) {
int messageSize = ParseCmd(pnum, reinterpret_cast<const TCmd *>(&data[offset]));
if (messageSize == 0) {
break;
}
pData += nLen;
nSize -= nLen;
offset += messageSize;
}
}
void ProcessTmsgs()
{
uint8_t cnt;
std::unique_ptr<byte[]> msg;
while (true) {
std::unique_ptr<byte[]> msg;
uint8_t size = tmsg_get(&msg);
if (size == 0)
break;
while ((cnt = tmsg_get(&msg)) != 0)
HandleAllPackets(MyPlayerId, msg.get(), cnt);
HandleAllPackets(MyPlayerId, msg.get(), size);
}
}
void SendPlayerInfo(int pnum, _cmd_id cmd)
@ -463,49 +465,49 @@ bool InitMulti(GameData *gameData)
} // namespace
void multi_msg_add(byte *pbMsg, BYTE bLen)
void multi_msg_add(const byte *data, size_t size)
{
if (pbMsg != nullptr && bLen != 0) {
tmsg_add(pbMsg, bLen);
if (data != nullptr && size != 0) {
tmsg_add(data, size);
}
}
void NetSendLoPri(int playerId, byte *pbMsg, BYTE bLen)
void NetSendLoPri(int playerId, const byte *data, size_t size)
{
if (pbMsg != nullptr && bLen != 0) {
CopyPacket(&sgLoPriBuf, pbMsg, bLen);
SendPacket(playerId, pbMsg, bLen);
if (data != nullptr && size != 0) {
CopyPacket(&sgLoPriBuf, data, size);
SendPacket(playerId, data, size);
}
}
void NetSendHiPri(int playerId, byte *pbMsg, BYTE bLen)
void NetSendHiPri(int playerId, const byte *data, size_t size)
{
if (pbMsg != nullptr && bLen != 0) {
CopyPacket(&sgHiPriBuf, pbMsg, bLen);
SendPacket(playerId, pbMsg, bLen);
if (data != nullptr && size != 0) {
CopyPacket(&sgHiPriBuf, data, size);
SendPacket(playerId, data, size);
}
if (!gbShouldValidatePackage) {
gbShouldValidatePackage = true;
TPkt pkt;
NetReceivePlayerData(&pkt);
size_t size = gdwNormalMsgSize - sizeof(TPktHdr);
byte *hipriBody = ReceivePacket(&sgHiPriBuf, pkt.body, &size);
byte *lowpriBody = ReceivePacket(&sgLoPriBuf, hipriBody, &size);
size = sync_all_monsters(lowpriBody, size);
size_t len = gdwNormalMsgSize - size;
size_t msgSize = gdwNormalMsgSize - sizeof(TPktHdr);
byte *hipriBody = ReceivePacket(&sgHiPriBuf, pkt.body, &msgSize);
byte *lowpriBody = ReceivePacket(&sgLoPriBuf, hipriBody, &msgSize);
msgSize = sync_all_monsters(lowpriBody, msgSize);
size_t len = gdwNormalMsgSize - msgSize;
pkt.hdr.wLen = len;
if (!SNetSendMessage(-2, &pkt.hdr, len))
nthread_terminate_game("SNetSendMessage");
}
}
void multi_send_msg_packet(uint32_t pmask, byte *src, BYTE len)
void multi_send_msg_packet(uint32_t pmask, const byte *data, size_t size)
{
TPkt pkt;
NetReceivePlayerData(&pkt);
size_t t = len + sizeof(pkt.hdr);
size_t t = size + sizeof(pkt.hdr);
pkt.hdr.wLen = t;
memcpy(pkt.body, src, len);
memcpy(pkt.body, data, size);
size_t p = 0;
for (size_t v = 1; p < MAX_PLRS; p++, v <<= 1) {
if ((v & pmask) != 0) {
@ -630,21 +632,21 @@ void multi_process_network_packets()
}
}
}
HandleAllPackets(dwID, (byte *)(pkt + 1), dwMsgSize - sizeof(TPktHdr));
HandleAllPackets(dwID, (const byte *)(pkt + 1), dwMsgSize - sizeof(TPktHdr));
}
if (SErrGetLastError() != STORM_ERROR_NO_MESSAGES_WAITING)
nthread_terminate_game("SNetReceiveMsg");
}
void multi_send_zero_packet(int pnum, _cmd_id bCmd, byte *pbSrc, DWORD dwLen)
void multi_send_zero_packet(int pnum, _cmd_id bCmd, const byte *data, size_t size)
{
assert(pnum != MyPlayerId);
assert(pbSrc);
assert(dwLen <= 0x0ffff);
assert(data);
assert(size <= 0x0ffff);
uint32_t dwOffset = 0;
while (dwLen != 0) {
while (size != 0) {
TPkt pkt;
pkt.hdr.wCheck = LoadBE32("\0\0ip");
pkt.hdr.px = 0;
@ -660,12 +662,12 @@ void multi_send_zero_packet(int pnum, _cmd_id bCmd, byte *pbSrc, DWORD dwLen)
p->bCmd = bCmd;
p->wOffset = dwOffset;
size_t dwBody = gdwLargestMsgSize - sizeof(pkt.hdr) - sizeof(*p);
if (dwLen < dwBody) {
dwBody = dwLen;
if (size < dwBody) {
dwBody = size;
}
assert(dwBody <= 0x0ffff);
p->wBytes = dwBody;
memcpy(&pkt.body[sizeof(*p)], pbSrc, p->wBytes);
memcpy(&pkt.body[sizeof(*p)], data, p->wBytes);
size_t dwMsg = sizeof(pkt.hdr);
dwMsg += sizeof(*p);
dwMsg += p->wBytes;
@ -675,8 +677,8 @@ void multi_send_zero_packet(int pnum, _cmd_id bCmd, byte *pbSrc, DWORD dwLen)
return;
}
pbSrc += p->wBytes;
dwLen -= p->wBytes;
data += p->wBytes;
size -= p->wBytes;
dwOffset += p->wBytes;
}
}
@ -773,7 +775,7 @@ bool NetInit(bool bSinglePlayer)
return true;
}
void recv_plrinfo(int pnum, TCmdPlrInfoHdr *p, bool recv)
void recv_plrinfo(int pnum, const TCmdPlrInfoHdr *p, bool recv)
{
const char *szEvent;

12
Source/multi.h

@ -48,10 +48,10 @@ extern char szPlayerName[128];
extern BYTE gbDeltaSender;
extern uint32_t player_state[MAX_PLRS];
void multi_msg_add(byte *pbMsg, BYTE bLen);
void NetSendLoPri(int playerId, byte *pbMsg, BYTE bLen);
void NetSendHiPri(int playerId, byte *pbMsg, BYTE bLen);
void multi_send_msg_packet(uint32_t pmask, byte *src, BYTE len);
void multi_msg_add(const byte *data, size_t size);
void NetSendLoPri(int playerId, const byte *data, size_t size);
void NetSendHiPri(int playerId, const byte *data, size_t size);
void multi_send_msg_packet(uint32_t pmask, const byte *data, size_t size);
void multi_msg_countdown();
void multi_player_left(int pnum, int reason);
void multi_net_ping();
@ -61,9 +61,9 @@ void multi_net_ping();
*/
bool multi_handle_delta();
void multi_process_network_packets();
void multi_send_zero_packet(int pnum, _cmd_id bCmd, byte *pbSrc, DWORD dwLen);
void multi_send_zero_packet(int pnum, _cmd_id bCmd, const byte *data, size_t size);
void NetClose();
bool NetInit(bool bSinglePlayer);
void recv_plrinfo(int pnum, TCmdPlrInfoHdr *p, bool recv);
void recv_plrinfo(int pnum, const TCmdPlrInfoHdr *p, bool recv);
} // namespace devilution

4
Source/tmsg.cpp

@ -17,7 +17,7 @@ struct TMsg {
std::unique_ptr<byte[]> body;
uint8_t len;
TMsg(uint32_t time, byte *data, uint8_t len)
TMsg(uint32_t time, const byte *data, uint8_t len)
: time(time)
, body(new byte[len])
, len(len)
@ -45,7 +45,7 @@ uint8_t tmsg_get(std::unique_ptr<byte[]> *msg)
return len;
}
void tmsg_add(byte *msg, uint8_t len)
void tmsg_add(const byte *msg, uint8_t len)
{
uint32_t time = SDL_GetTicks() + gnTickDelay * 10;
TimedMsgList.emplace_back(time, msg, len);

2
Source/tmsg.h

@ -13,7 +13,7 @@
namespace devilution {
uint8_t tmsg_get(std::unique_ptr<byte[]> *msg);
void tmsg_add(byte *msg, uint8_t bLen);
void tmsg_add(const byte *msg, uint8_t bLen);
void tmsg_start();
void tmsg_cleanup();

Loading…
Cancel
Save