Browse Source

Replace CMD_DLEVEL_0/_1/... with generic CMD_DLEVEL

pull/4727/head
obligaron 4 years ago committed by Anders Jenbo
parent
commit
783db07cbf
  1. 19
      Source/msg.cpp
  2. 28
      Source/msg.h

19
Source/msg.cpp

@ -429,8 +429,9 @@ void DeltaImportData(_cmd_id cmd, DWORD recvOffset)
byte *src = &sgRecvBuf[1];
if (cmd == CMD_DLEVEL_JUNK) {
DeltaImportJunk(src);
} else if (cmd >= CMD_DLEVEL_0 && cmd <= CMD_DLEVEL_24) {
uint8_t i = cmd - CMD_DLEVEL_0;
} else if (cmd == CMD_DLEVEL) {
uint8_t i = static_cast<uint8_t>(src[0]);
src += sizeof(uint8_t);
DLevel &deltaLevel = GetDeltaLevel(i);
src += DeltaImportItem(src, deltaLevel.item);
src += DeltaImportObject(src, deltaLevel.object);
@ -448,7 +449,7 @@ DWORD OnLevelData(int pnum, const TCmd *pCmd)
const auto &message = *reinterpret_cast<const TCmdPlrInfoHdr *>(pCmd);
if (gbDeltaSender != pnum) {
if (message.bCmd != CMD_DLEVEL_END && (message.bCmd != CMD_DLEVEL_0 || message.wOffset != 0)) {
if (message.bCmd != CMD_DLEVEL_END && (message.bCmd != CMD_DLEVEL || message.wOffset != 0)) {
return message.wBytes + sizeof(message);
}
@ -461,13 +462,13 @@ DWORD OnLevelData(int pnum, const TCmd *pCmd)
sgbDeltaChunks = MAX_CHUNKS - 1;
return message.wBytes + sizeof(message);
}
if (message.bCmd != CMD_DLEVEL_0 || message.wOffset != 0) {
if (message.bCmd != CMD_DLEVEL || message.wOffset != 0) {
return message.wBytes + sizeof(message);
}
sgdwRecvOffset = 0;
sgbRecvCmd = message.bCmd;
} else if (sgbRecvCmd != message.bCmd) {
} else if (sgbRecvCmd != message.bCmd || message.wOffset == 0) {
DeltaImportData(sgbRecvCmd, sgdwRecvOffset);
if (message.bCmd == CMD_DLEVEL_END) {
sgbDeltaChunks = MAX_CHUNKS - 1;
@ -2158,14 +2159,16 @@ void DeltaExportData(int pnum)
{
if (sgbDeltaChanged) {
for (auto &it : DeltaLevels) {
std::unique_ptr<byte[]> dst { new byte[sizeof(DLevel) + 1] };
std::unique_ptr<byte[]> dst { new byte[sizeof(DLevel) + 1 + sizeof(uint8_t)] };
byte *dstEnd = &dst.get()[1];
DLevel &deltaLevel = it.second;
*dstEnd = static_cast<byte>(it.first);
dstEnd += sizeof(uint8_t);
dstEnd = DeltaExportItem(dstEnd, deltaLevel.item);
dstEnd = DeltaExportObject(dstEnd, deltaLevel.object);
dstEnd = DeltaExportMonster(dstEnd, deltaLevel.monster);
uint32_t size = CompressData(dst.get(), dstEnd);
dthread_send_delta(pnum, static_cast<_cmd_id>(it.first + CMD_DLEVEL_0), std::move(dst), size);
dthread_send_delta(pnum, CMD_DLEVEL, std::move(dst), size);
}
std::unique_ptr<byte[]> dst { new byte[sizeof(DJunk) + 1] };
@ -3029,7 +3032,7 @@ uint32_t ParseCmd(int pnum, const TCmd *pCmd)
break;
}
if (pCmd->bCmd < CMD_DLEVEL_0 || pCmd->bCmd > CMD_DLEVEL_END) {
if (pCmd->bCmd < CMD_DLEVEL || pCmd->bCmd > CMD_DLEVEL_END) {
SNetDropPlayer(pnum, LEAVE_DROP);
return 0;
}

28
Source/msg.h

@ -327,34 +327,10 @@ enum _cmd_id : uint8_t {
//
// body (TCmd)
CMD_DEACTIVATEPORTAL,
// Delta information for dungeon level 0 through 24.
// Delta information for a dungeon level.
//
// body (TCmdPlrInfoHdr)
CMD_DLEVEL_0,
CMD_DLEVEL_1,
CMD_DLEVEL_2,
CMD_DLEVEL_3,
CMD_DLEVEL_4,
CMD_DLEVEL_5,
CMD_DLEVEL_6,
CMD_DLEVEL_7,
CMD_DLEVEL_8,
CMD_DLEVEL_9,
CMD_DLEVEL_10,
CMD_DLEVEL_11,
CMD_DLEVEL_12,
CMD_DLEVEL_13,
CMD_DLEVEL_14,
CMD_DLEVEL_15,
CMD_DLEVEL_16,
CMD_DLEVEL_17,
CMD_DLEVEL_18,
CMD_DLEVEL_19,
CMD_DLEVEL_20,
CMD_DLEVEL_21,
CMD_DLEVEL_22,
CMD_DLEVEL_23,
CMD_DLEVEL_24,
CMD_DLEVEL,
// Delta information of quest and portal states.
//
// body (TCmdPlrInfoHdr)

Loading…
Cancel
Save