From 31ec800160f8433a9430e05da4e32051e5d39b40 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 2 Nov 2020 20:38:48 +0100 Subject: [PATCH] Reorder Interface.cpp --- Source/interfac.cpp | 456 ++++++++++++++++++++++---------------------- Source/interfac.h | 11 -- 2 files changed, 228 insertions(+), 239 deletions(-) diff --git a/Source/interfac.cpp b/Source/interfac.cpp index 875113dd6..6aa1faf5c 100644 --- a/Source/interfac.cpp +++ b/Source/interfac.cpp @@ -15,238 +15,12 @@ const BYTE BarColor[3] = { 138, 43, 254 }; /** The screen position of the top left corner of the progress bar. */ const int BarPos[3][2] = { { 53, 37 }, { 53, 421 }, { 53, 37 } }; -void interface_msg_pump() -{ - MSG Msg; - - while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { - if (Msg.message != WM_QUIT) { - TranslateMessage(&Msg); - DispatchMessage(&Msg); - } - } -} - -BOOL IncProgress() -{ - interface_msg_pump(); - sgdwProgress += 15; - if ((DWORD)sgdwProgress > 534) - sgdwProgress = 534; - if (sgpBackCel) - DrawCutscene(); - return (DWORD)sgdwProgress >= 534; -} - -void DrawCutscene() -{ - DWORD i; - - lock_buf(1); - CelDraw(PANEL_X, 480 + SCREEN_Y - 1, sgpBackCel, 1, 640); - - for (i = 0; i < sgdwProgress; i++) { - DrawProgress( - BarPos[progress_id][0] + i + PANEL_X, - BarPos[progress_id][1] + SCREEN_Y, - progress_id); - } - - unlock_buf(1); - force_redraw = 255; - scrollrt_draw_game_screen(FALSE); -} - -void DrawProgress(int screen_x, int screen_y, int progress_id) -{ - BYTE *dst; - int i; - - dst = &gpBuffer[screen_x + PitchTbl[screen_y]]; - for (i = 0; i < 22; i++) { - *dst = BarColor[progress_id]; - dst += BUFFER_WIDTH; - } -} - -void ShowProgress(unsigned int uMsg) -{ - WNDPROC saveProc; - - gbSomebodyWonGameKludge = FALSE; - plrmsg_delay(TRUE); - - assert(ghMainWnd); - saveProc = SetWindowProc(DisableInputWndProc); - - interface_msg_pump(); - ClearScreenBuffer(); - scrollrt_draw_game_screen(TRUE); - InitCutscene(uMsg); - BlackPalette(); - DrawCutscene(); - PaletteFadeIn(8); - IncProgress(); - sound_init(); - IncProgress(); - - switch (uMsg) { - case WM_DIABLOADGAME: - IncProgress(); - LoadGame(TRUE); - IncProgress(); - break; - case WM_DIABNEWGAME: - IncProgress(); - FreeGameMem(); - IncProgress(); - pfile_remove_temp_files(); - LoadGameLevel(TRUE, ENTRY_MAIN); - IncProgress(); - break; - case WM_DIABNEXTLVL: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - FreeGameMem(); - currlevel++; - leveltype = gnLevelTypeTbl[currlevel]; - assert(plr[myplr].plrlevel == currlevel); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_MAIN); - IncProgress(); - break; - case WM_DIABPREVLVL: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - IncProgress(); - FreeGameMem(); - currlevel--; - leveltype = gnLevelTypeTbl[currlevel]; - assert(plr[myplr].plrlevel == currlevel); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_PREV); - IncProgress(); - break; - case WM_DIABSETLVL: - SetReturnLvlPos(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - setlevel = TRUE; - leveltype = setlvltype; - FreeGameMem(); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_SETLVL); - IncProgress(); - break; - case WM_DIABRTNLVL: - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - setlevel = FALSE; - FreeGameMem(); - IncProgress(); - GetReturnLvlPos(); - LoadGameLevel(FALSE, ENTRY_RTNLVL); - IncProgress(); - break; - case WM_DIABWARPLVL: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - FreeGameMem(); - GetPortalLevel(); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_WARPLVL); - IncProgress(); - break; - case WM_DIABTOWNWARP: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - FreeGameMem(); - currlevel = plr[myplr].plrlevel; - leveltype = gnLevelTypeTbl[currlevel]; - assert(plr[myplr].plrlevel == currlevel); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_TWARPDN); - IncProgress(); - break; - case WM_DIABTWARPUP: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - FreeGameMem(); - currlevel = plr[myplr].plrlevel; - leveltype = gnLevelTypeTbl[currlevel]; - assert(plr[myplr].plrlevel == currlevel); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_TWARPUP); - IncProgress(); - break; - case WM_DIABRETOWN: - IncProgress(); - if (gbMaxPlayers == 1) { - SaveLevel(); - } else { - DeltaSaveLevel(); - } - FreeGameMem(); - currlevel = plr[myplr].plrlevel; - leveltype = gnLevelTypeTbl[currlevel]; - assert(plr[myplr].plrlevel == currlevel); - IncProgress(); - LoadGameLevel(FALSE, ENTRY_MAIN); - IncProgress(); - break; - } - - assert(ghMainWnd); - - PaletteFadeOut(8); - FreeInterface(); - - saveProc = SetWindowProc(saveProc); - assert(saveProc == DisableInputWndProc); - - NetSendCmdLocParam1(TRUE, CMD_PLAYER_JOINLEVEL, plr[myplr]._px, plr[myplr]._py, plr[myplr].plrlevel); - plrmsg_delay(FALSE); - ResetPal(); - - if (gbSomebodyWonGameKludge && plr[myplr].plrlevel == 16) { - PrepDoEnding(); - } - - gbSomebodyWonGameKludge = FALSE; -} - -void FreeInterface() +static void FreeInterface() { MemFreeDbg(sgpBackCel); } -void InitCutscene(unsigned int uMsg) +static void InitCutscene(unsigned int uMsg) { assert(!sgpBackCel); @@ -476,3 +250,229 @@ void InitCutscene(unsigned int uMsg) sgdwProgress = 0; } + +static void DrawProgress(int screen_x, int screen_y, int progress_id) +{ + BYTE *dst; + int i; + + dst = &gpBuffer[screen_x + PitchTbl[screen_y]]; + for (i = 0; i < 22; i++) { + *dst = BarColor[progress_id]; + dst += BUFFER_WIDTH; + } +} + +static void DrawCutscene() +{ + DWORD i; + + lock_buf(1); + CelDraw(PANEL_X, 480 + SCREEN_Y - 1, sgpBackCel, 1, 640); + + for (i = 0; i < sgdwProgress; i++) { + DrawProgress( + BarPos[progress_id][0] + i + PANEL_X, + BarPos[progress_id][1] + SCREEN_Y, + progress_id); + } + + unlock_buf(1); + force_redraw = 255; + scrollrt_draw_game_screen(FALSE); +} + +void interface_msg_pump() +{ + MSG Msg; + + while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) { + if (Msg.message != WM_QUIT) { + TranslateMessage(&Msg); + DispatchMessage(&Msg); + } + } +} + +BOOL IncProgress() +{ + interface_msg_pump(); + sgdwProgress += 15; + if ((DWORD)sgdwProgress > 534) + sgdwProgress = 534; + if (sgpBackCel) + DrawCutscene(); + return (DWORD)sgdwProgress >= 534; +} + +void ShowProgress(unsigned int uMsg) +{ + WNDPROC saveProc; + + gbSomebodyWonGameKludge = FALSE; + plrmsg_delay(TRUE); + + assert(ghMainWnd); + saveProc = SetWindowProc(DisableInputWndProc); + + interface_msg_pump(); + ClearScreenBuffer(); + scrollrt_draw_game_screen(TRUE); + InitCutscene(uMsg); + BlackPalette(); + DrawCutscene(); + PaletteFadeIn(8); + IncProgress(); + sound_init(); + IncProgress(); + + switch (uMsg) { + case WM_DIABLOADGAME: + IncProgress(); + LoadGame(TRUE); + IncProgress(); + break; + case WM_DIABNEWGAME: + IncProgress(); + FreeGameMem(); + IncProgress(); + pfile_remove_temp_files(); + LoadGameLevel(TRUE, ENTRY_MAIN); + IncProgress(); + break; + case WM_DIABNEXTLVL: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + FreeGameMem(); + currlevel++; + leveltype = gnLevelTypeTbl[currlevel]; + assert(plr[myplr].plrlevel == currlevel); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_MAIN); + IncProgress(); + break; + case WM_DIABPREVLVL: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + IncProgress(); + FreeGameMem(); + currlevel--; + leveltype = gnLevelTypeTbl[currlevel]; + assert(plr[myplr].plrlevel == currlevel); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_PREV); + IncProgress(); + break; + case WM_DIABSETLVL: + SetReturnLvlPos(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + setlevel = TRUE; + leveltype = setlvltype; + FreeGameMem(); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_SETLVL); + IncProgress(); + break; + case WM_DIABRTNLVL: + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + setlevel = FALSE; + FreeGameMem(); + IncProgress(); + GetReturnLvlPos(); + LoadGameLevel(FALSE, ENTRY_RTNLVL); + IncProgress(); + break; + case WM_DIABWARPLVL: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + FreeGameMem(); + GetPortalLevel(); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_WARPLVL); + IncProgress(); + break; + case WM_DIABTOWNWARP: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + FreeGameMem(); + currlevel = plr[myplr].plrlevel; + leveltype = gnLevelTypeTbl[currlevel]; + assert(plr[myplr].plrlevel == currlevel); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_TWARPDN); + IncProgress(); + break; + case WM_DIABTWARPUP: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + FreeGameMem(); + currlevel = plr[myplr].plrlevel; + leveltype = gnLevelTypeTbl[currlevel]; + assert(plr[myplr].plrlevel == currlevel); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_TWARPUP); + IncProgress(); + break; + case WM_DIABRETOWN: + IncProgress(); + if (gbMaxPlayers == 1) { + SaveLevel(); + } else { + DeltaSaveLevel(); + } + FreeGameMem(); + currlevel = plr[myplr].plrlevel; + leveltype = gnLevelTypeTbl[currlevel]; + assert(plr[myplr].plrlevel == currlevel); + IncProgress(); + LoadGameLevel(FALSE, ENTRY_MAIN); + IncProgress(); + break; + } + + assert(ghMainWnd); + + PaletteFadeOut(8); + FreeInterface(); + + saveProc = SetWindowProc(saveProc); + assert(saveProc == DisableInputWndProc); + + NetSendCmdLocParam1(TRUE, CMD_PLAYER_JOINLEVEL, plr[myplr]._px, plr[myplr]._py, plr[myplr].plrlevel); + plrmsg_delay(FALSE); + ResetPal(); + + if (gbSomebodyWonGameKludge && plr[myplr].plrlevel == 16) { + PrepDoEnding(); + } + + gbSomebodyWonGameKludge = FALSE; +} diff --git a/Source/interfac.h b/Source/interfac.h index a88a864ea..7854f8f51 100644 --- a/Source/interfac.h +++ b/Source/interfac.h @@ -6,19 +6,8 @@ #ifndef __INTERFAC_H__ #define __INTERFAC_H__ -extern int progress_id; - void interface_msg_pump(); BOOL IncProgress(); -void DrawCutscene(); -void DrawProgress(int screen_x, int screen_y, int progress_id); void ShowProgress(unsigned int uMsg); -void FreeInterface(); -void InitCutscene(unsigned int uMsg); - -/* rdata */ - -extern const BYTE BarColor[3]; -extern const int BarPos[3][2]; #endif /* __INTERFAC_H__ */