From 66f5178e9384fb8e59342e66e63b628f4f0fdf66 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 2 Nov 2020 20:01:42 +0100 Subject: [PATCH] Reorder gmenu.cpp --- Source/gmenu.cpp | 242 +++++++++++++++++++++++------------------------ Source/gmenu.h | 23 ----- 2 files changed, 121 insertions(+), 144 deletions(-) diff --git a/Source/gmenu.cpp b/Source/gmenu.cpp index 1fb04af15..0aa313bac 100644 --- a/Source/gmenu.cpp +++ b/Source/gmenu.cpp @@ -49,17 +49,7 @@ const BYTE lfontkern[] = { 11, 10, 12, 11, 21, 23 }; -void gmenu_draw_pause() -{ - if (currlevel != 0) - RedBack(); - if (!sgpCurrentMenu) { - light_table_index = 0; - gmenu_print_text(316 + PANEL_LEFT, 336, "Pause"); - } -} - -void gmenu_print_text(int x, int y, const char *pszStr) +static void gmenu_print_text(int x, int y, const char *pszStr) { BYTE c; @@ -72,6 +62,16 @@ void gmenu_print_text(int x, int y, const char *pszStr) } } +void gmenu_draw_pause() +{ + if (currlevel != 0) + RedBack(); + if (!sgpCurrentMenu) { + light_table_index = 0; + gmenu_print_text(316 + PANEL_LEFT, 336, "Pause"); + } +} + void FreeGMenu() { MemFreeDbg(sgpLogo); @@ -108,30 +108,7 @@ BOOL gmenu_is_active() return sgpCurrentMenu != NULL; } -void gmenu_set_items(TMenuItem *pItem, void (*gmFunc)(TMenuItem *)) -{ - int i; - - PauseMode = 0; - mouseNavigation = FALSE; - sgpCurrentMenu = pItem; - dword_63447C = gmFunc; - if (gmFunc) { - dword_63447C(sgpCurrentMenu); - pItem = sgpCurrentMenu; - } - sgCurrentMenuIdx = 0; - if (sgpCurrentMenu) { - for (i = 0; sgpCurrentMenu[i].fnMenu; i++) { - sgCurrentMenuIdx++; - } - } - // BUGFIX: OOB access when sgCurrentMenuIdx is 0; should be set to NULL instead. - sgpCurrItem = &sgpCurrentMenu[sgCurrentMenuIdx - 1]; - gmenu_up_down(TRUE); -} - -void gmenu_up_down(BOOL isDown) +static void gmenu_up_down(BOOL isDown) { int i; @@ -161,50 +138,58 @@ void gmenu_up_down(BOOL isDown) } } -void gmenu_draw() +void gmenu_set_items(TMenuItem *pItem, void (*gmFunc)(TMenuItem *)) { - int y; - TMenuItem *i; - DWORD ticks; + int i; + PauseMode = 0; + mouseNavigation = FALSE; + sgpCurrentMenu = pItem; + dword_63447C = gmFunc; + if (gmFunc) { + dword_63447C(sgpCurrentMenu); + pItem = sgpCurrentMenu; + } + sgCurrentMenuIdx = 0; if (sgpCurrentMenu) { - if (dword_63447C) - dword_63447C(sgpCurrentMenu); -#ifdef HELLFIRE - ticks = GetTickCount(); - if ((int)(ticks - LogoAnim_tick) > 25) { - LogoAnim_frame++; - if (LogoAnim_frame > 16) - LogoAnim_frame = 1; - LogoAnim_tick = ticks; - } - CelDraw((SCREEN_WIDTH - 430) / 2 + SCREEN_X, 102 + SCREEN_Y, sgpLogo, LogoAnim_frame, 430); -#else - CelDraw((SCREEN_WIDTH - 296) / 2 + SCREEN_X, 102 + SCREEN_Y, sgpLogo, 1, 296); -#endif - y = 160 + SCREEN_Y; - i = sgpCurrentMenu; - if (sgpCurrentMenu->fnMenu) { - while (i->fnMenu) { - gmenu_draw_menu_item(i, y); - i++; - y += 45; - } + for (i = 0; sgpCurrentMenu[i].fnMenu; i++) { + sgCurrentMenuIdx++; } + } + // BUGFIX: OOB access when sgCurrentMenuIdx is 0; should be set to NULL instead. + sgpCurrItem = &sgpCurrentMenu[sgCurrentMenuIdx - 1]; + gmenu_up_down(TRUE); +} -#ifndef HELLFIRE - ticks = GetTickCount(); -#endif - if ((int)(ticks - PentSpin_tick) > 25) { // BUGFIX: thould be 50ms - PentSpin_frame++; - if (PentSpin_frame == 9) - PentSpin_frame = 1; - PentSpin_tick = ticks; - } +static void gmenu_clear_buffer(int x, int y, int width, int height) +{ + BYTE *i; + + i = gpBuffer + PitchTbl[y] + x; + while (height--) { + memset(i, 205, width); + i -= BUFFER_WIDTH; + } +} + +static int gmenu_get_lfont(TMenuItem *pItem) +{ + const char *text; + int i; + BYTE c; + + if (pItem->dwFlags & GMENU_SLIDER) + return 490; + text = pItem->pszStr; + i = 0; + while (*text) { + c = gbFontTransTbl[(BYTE)*text++]; + i += lfontkern[lfontframe[c]] + 2; } + return i - 2; } -void gmenu_draw_menu_item(TMenuItem *pItem, int y) +static void gmenu_draw_menu_item(TMenuItem *pItem, int y) { DWORD w, x, nSteps, step, pos, t; #ifndef HELLFIRE @@ -239,32 +224,68 @@ void gmenu_draw_menu_item(TMenuItem *pItem, int y) } } -void gmenu_clear_buffer(int x, int y, int width, int height) +void gmenu_draw() { - BYTE *i; + int y; + TMenuItem *i; + DWORD ticks; - i = gpBuffer + PitchTbl[y] + x; - while (height--) { - memset(i, 205, width); - i -= BUFFER_WIDTH; + if (sgpCurrentMenu) { + if (dword_63447C) + dword_63447C(sgpCurrentMenu); +#ifdef HELLFIRE + ticks = GetTickCount(); + if ((int)(ticks - LogoAnim_tick) > 25) { + LogoAnim_frame++; + if (LogoAnim_frame > 16) + LogoAnim_frame = 1; + LogoAnim_tick = ticks; + } + CelDraw((SCREEN_WIDTH - 430) / 2 + SCREEN_X, 102 + SCREEN_Y, sgpLogo, LogoAnim_frame, 430); +#else + CelDraw((SCREEN_WIDTH - 296) / 2 + SCREEN_X, 102 + SCREEN_Y, sgpLogo, 1, 296); +#endif + y = 160 + SCREEN_Y; + i = sgpCurrentMenu; + if (sgpCurrentMenu->fnMenu) { + while (i->fnMenu) { + gmenu_draw_menu_item(i, y); + i++; + y += 45; + } + } + +#ifndef HELLFIRE + ticks = GetTickCount(); +#endif + if ((int)(ticks - PentSpin_tick) > 25) { // BUGFIX: thould be 50ms + PentSpin_frame++; + if (PentSpin_frame == 9) + PentSpin_frame = 1; + PentSpin_tick = ticks; + } } } -int gmenu_get_lfont(TMenuItem *pItem) +static void gmenu_left_right(BOOL isRight) { - const char *text; - int i; - BYTE c; + int step; - if (pItem->dwFlags & GMENU_SLIDER) - return 490; - text = pItem->pszStr; - i = 0; - while (*text) { - c = gbFontTransTbl[(BYTE)*text++]; - i += lfontkern[lfontframe[c]] + 2; + if (sgpCurrItem->dwFlags & GMENU_SLIDER) { + step = sgpCurrItem->dwFlags & 0xFFF; + if (isRight) { + if (step == (int)(sgpCurrItem->dwFlags & 0xFFF000) >> 12) + return; + step++; + } else { + if (!step) + return; + step--; + } + sgpCurrItem->dwFlags &= 0xFFFFF000; + sgpCurrItem->dwFlags |= step; + sgpCurrItem->fnMenu(FALSE); } - return i - 2; } BOOL gmenu_presskeys(int vkey) @@ -300,25 +321,19 @@ BOOL gmenu_presskeys(int vkey) return TRUE; } -void gmenu_left_right(BOOL isRight) +static BOOLEAN gmenu_get_mouse_slider(int *plOffset) { - int step; - - if (sgpCurrItem->dwFlags & GMENU_SLIDER) { - step = sgpCurrItem->dwFlags & 0xFFF; - if (isRight) { - if (step == (int)(sgpCurrItem->dwFlags & 0xFFF000) >> 12) - return; - step++; - } else { - if (!step) - return; - step--; - } - sgpCurrItem->dwFlags &= 0xFFFFF000; - sgpCurrItem->dwFlags |= step; - sgpCurrItem->fnMenu(FALSE); + *plOffset = 282; + if (MouseX < 282 + PANEL_LEFT) { + *plOffset = 0; + return FALSE; } + if (MouseX > 538 + PANEL_LEFT) { + *plOffset = 256; + return FALSE; + } + *plOffset = MouseX - 282 - PANEL_LEFT; + return TRUE; } BOOL gmenu_on_mouse_move() @@ -338,21 +353,6 @@ BOOL gmenu_on_mouse_move() return TRUE; } -BOOLEAN gmenu_get_mouse_slider(int *plOffset) -{ - *plOffset = 282; - if (MouseX < 282 + PANEL_LEFT) { - *plOffset = 0; - return FALSE; - } - if (MouseX > 538 + PANEL_LEFT) { - *plOffset = 256; - return FALSE; - } - *plOffset = MouseX - 282 - PANEL_LEFT; - return TRUE; -} - BOOL gmenu_left_mouse(BOOL isDown) { TMenuItem *pItem; diff --git a/Source/gmenu.h b/Source/gmenu.h index 0cd15635d..f02901a04 100644 --- a/Source/gmenu.h +++ b/Source/gmenu.h @@ -6,41 +6,18 @@ #ifndef __GMENU_H__ #define __GMENU_H__ -extern BYTE *optbar_cel; -extern BOOLEAN mouseNavigation; -extern BYTE *PentSpin_cel; -extern BYTE *BigTGold_cel; -extern int dword_634474; -extern char byte_634478; -extern void (*dword_63447C)(TMenuItem *); -extern TMenuItem *sgpCurrentMenu; -extern BYTE *option_cel; -extern int sgCurrentMenuIdx; - void gmenu_draw_pause(); -void gmenu_print_text(int x, int y, const char *pszStr); void FreeGMenu(); void gmenu_init_menu(); BOOL gmenu_is_active(); void gmenu_set_items(TMenuItem *pItem, void (*gmFunc)(TMenuItem *)); -void gmenu_up_down(BOOL isDown); void gmenu_draw(); -void gmenu_draw_menu_item(TMenuItem *pItem, int y); -void gmenu_clear_buffer(int x, int y, int width, int height); -int gmenu_get_lfont(TMenuItem *pItem); BOOL gmenu_presskeys(int vkey); -void gmenu_left_right(BOOL isRight); BOOL gmenu_on_mouse_move(); -BOOLEAN gmenu_get_mouse_slider(int *plOffset); BOOL gmenu_left_mouse(BOOL isDown); void gmenu_enable(TMenuItem *pMenuItem, BOOL enable); void gmenu_slider_set(TMenuItem *pItem, int min, int max, int gamma); int gmenu_slider_get(TMenuItem *pItem, int min, int max); void gmenu_slider_steps(TMenuItem *pItem, int dwTicks); -/* rdata */ - -extern const BYTE lfontframe[]; -extern const BYTE lfontkern[]; - #endif /* __GMENU_H__ */