Browse Source

Reduce cognitive complexity in OnGetItem()

pull/8002/head
staphen 10 months ago committed by Anders Jenbo
parent
commit
c9565f1f88
  1. 55
      Source/msg.cpp

55
Source/msg.cpp

@ -1308,30 +1308,37 @@ size_t OnGetItem(const TCmdGItem &message, Player &player)
{
if (gbBufferMsgs == 1) {
BufferMessage(player, &message, sizeof(message));
} else if (IsGItemValid(message)) {
const Point position { message.x, message.y };
const uint32_t dwSeed = SDL_SwapLE32(message.def.dwSeed);
const uint16_t wCI = SDL_SwapLE16(message.def.wCI);
const auto wIndx = static_cast<_item_indexes>(SDL_SwapLE16(message.def.wIndx));
if (DeltaGetItem(message, message.bLevel)) {
bool isOnActiveLevel = GetLevelForMultiplayer(*MyPlayer) == message.bLevel;
if ((isOnActiveLevel || message.bPnum == MyPlayerId) && message.bMaster != MyPlayerId) {
if (message.bPnum == MyPlayerId) {
if (!isOnActiveLevel) {
int ii = SyncDropItem(message);
if (ii != -1)
InvGetItem(*MyPlayer, ii);
} else {
int activeItemIndex = FindGetItem(dwSeed, wIndx, wCI);
InvGetItem(*MyPlayer, ActiveItems[activeItemIndex]);
}
} else {
SyncGetItem(position, dwSeed, wIndx, wCI);
}
}
} else {
NetSendCmdGItem2(true, CMD_GETITEM, message.bMaster, message.bPnum, message);
}
return sizeof(message);
}
if (!IsGItemValid(message))
return sizeof(message);
const Point position { message.x, message.y };
const uint32_t dwSeed = SDL_SwapLE32(message.def.dwSeed);
const uint16_t wCI = SDL_SwapLE16(message.def.wCI);
const auto wIndx = static_cast<_item_indexes>(SDL_SwapLE16(message.def.wIndx));
if (!DeltaGetItem(message, message.bLevel)) {
NetSendCmdGItem2(true, CMD_GETITEM, message.bMaster, message.bPnum, message);
return sizeof(message);
}
bool isOnActiveLevel = GetLevelForMultiplayer(*MyPlayer) == message.bLevel;
if ((!isOnActiveLevel && message.bPnum != MyPlayerId) || message.bMaster == MyPlayerId)
return sizeof(message);
if (message.bPnum != MyPlayerId) {
SyncGetItem(position, dwSeed, wIndx, wCI);
return sizeof(message);
}
if (!isOnActiveLevel) {
int ii = SyncDropItem(message);
if (ii != -1)
InvGetItem(*MyPlayer, ii);
} else {
int activeItemIndex = FindGetItem(dwSeed, wIndx, wCI);
InvGetItem(*MyPlayer, ActiveItems[activeItemIndex]);
}
return sizeof(message);

Loading…
Cancel
Save