From ca2271bf908c40f94635dc3bf94277cc0d0effd8 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 15 Sep 2018 15:02:26 +0200 Subject: [PATCH] Clean up StartNewLvl --- Source/msg.cpp | 2 +- Source/msg.h | 2 +- Source/player.cpp | 72 ++++++++++++++++++++--------------------------- 3 files changed, 33 insertions(+), 43 deletions(-) diff --git a/Source/msg.cpp b/Source/msg.cpp index 4da50076f..b8a4b36fa 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -1002,7 +1002,7 @@ void __fastcall NetSendCmdParam1(BOOL bHiPri, unsigned char bCmd, unsigned short NetSendLoPri((unsigned char *)&cmd, 3u); } -void __fastcall NetSendCmdParam2(unsigned char bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2) +void __fastcall NetSendCmdParam2(BOOL bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2) { TCmdParam2 cmd; // [esp+0h] [ebp-8h] diff --git a/Source/msg.h b/Source/msg.h index 9bc738974..1223d7ad0 100644 --- a/Source/msg.h +++ b/Source/msg.h @@ -54,7 +54,7 @@ void __fastcall NetSendCmdLocParam1(unsigned char bHiPri, unsigned char bCmd, un void __fastcall NetSendCmdLocParam2(unsigned char bHiPri, unsigned char bCmd, unsigned char x, unsigned char y, int wParam1, int wParam2); void __fastcall NetSendCmdLocParam3(unsigned char bHiPri, unsigned char bCmd, unsigned char x, unsigned char y, int wParam1, int wParam2, int wParam3); void __fastcall NetSendCmdParam1(BOOL bHiPri, unsigned char bCmd, unsigned short wParam1); -void __fastcall NetSendCmdParam2(unsigned char bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2); +void __fastcall NetSendCmdParam2(BOOL bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2); void __fastcall NetSendCmdParam3(unsigned char bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2, int wParam3); void __fastcall NetSendCmdQuest(unsigned char bHiPri, unsigned char q); void __fastcall NetSendCmdGItem(unsigned char bHiPri, unsigned char bCmd, unsigned char mast, unsigned char pnum, int ii); diff --git a/Source/player.cpp b/Source/player.cpp index cfb08dcfa..bc2b75315 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2228,51 +2228,41 @@ void __fastcall InitLevelChange(int pnum) void __fastcall StartNewLvl(int pnum, int fom, int lvl) { - int v3; // edi - unsigned int v4; // esi - unsigned int v5; // eax - HWND v6; // ST00_4 - - v3 = fom; - v4 = pnum; InitLevelChange(pnum); - if ( v4 >= 4 ) - TermMsg("StartNewLvl: illegal player %d", v4); - if ( v3 < WM_DIABNEXTLVL ) - { -LABEL_10: - TermMsg("StartNewLvl"); - goto LABEL_11; + + if ( (DWORD)pnum >= MAX_PLRS ) { + TermMsg("StartNewLvl: illegal player %d", pnum); } - if ( v3 <= WM_DIABPREVLVL || v3 == WM_DIABRTNLVL ) - goto LABEL_16; - if ( v3 != WM_DIABSETLVL ) - { - if ( v3 != WM_DIABTOWNWARP ) - { - if ( v3 != WM_DIABTWARPUP ) - { - if ( v3 == WM_DIABRETOWN ) - goto LABEL_11; - goto LABEL_10; - } + + switch ( fom ) { + case WM_DIABNEXTLVL: + case WM_DIABPREVLVL: + plr[pnum].plrlevel = lvl; + break; + case WM_DIABRTNLVL: + case WM_DIABTOWNWARP: + plr[pnum].plrlevel = lvl; + break; + case WM_DIABSETLVL: + setlvlnum = lvl; + break; + case WM_DIABTWARPUP: plr[myplr].pTownWarps |= 1 << (leveltype - 2); - } -LABEL_16: - plr[v4].plrlevel = lvl; - goto LABEL_11; + plr[pnum].plrlevel = lvl; + break; + case WM_DIABRETOWN: + break; + default: + TermMsg("StartNewLvl"); } - setlvlnum = lvl; -LABEL_11: - if ( v4 == myplr ) - { - v5 = v4; - v6 = ghMainWnd; - plr[v5]._pmode = PM_NEWLVL; - plr[v5]._pInvincible = 1; - PostMessageA(v6, v3, 0, 0); - if ( (unsigned char)gbMaxPlayers > 1u ) - NetSendCmdParam2(1u, CMD_NEWLVL, v3, lvl); + + if ( pnum == myplr ) { + plr[pnum]._pmode = PM_NEWLVL; + plr[pnum]._pInvincible = TRUE; + PostMessageA(ghMainWnd, fom, 0, 0); + if ( gbMaxPlayers > 1 ) { + NetSendCmdParam2(TRUE, CMD_NEWLVL, fom, lvl); + } } } // 5BB1ED: using guessed type char leveltype;