From cf4c110f41a292d3d8be635d07515b2cd73c3f0e Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 21 Oct 2018 06:47:57 +0200 Subject: [PATCH] Clean up mainmenu.cpp --- Source/diablo.cpp | 5 +- Source/diablo.h | 2 +- Source/mainmenu.cpp | 180 +++++++++++++++++--------------------------- Source/mainmenu.h | 9 +-- 4 files changed, 78 insertions(+), 118 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index ed03a87b8..b5b2da8ed 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -17,7 +17,7 @@ BOOL gbRunGameResult; int zoomflag; // weak BOOL gbProcessPlayers; int glEndSeed[NUMLEVELS]; -int dword_5256E8; // weak +BOOL dword_5256E8; HINSTANCE ghInst; // idb int DebugMonsters[10]; char cineflag; // weak @@ -122,7 +122,7 @@ int __fastcall diablo_init_menu(int a1, int bSinglePlayer) while ( 1 ) { pfExitProgram = 0; - dword_5256E8 = 0; + dword_5256E8 = FALSE; if ( !NetInit(v2, &pfExitProgram) ) break; byte_678640 = 0; @@ -143,7 +143,6 @@ LABEL_11: SNetDestroy(); return gbRunGameResult; } -// 5256E8: using guessed type int dword_5256E8; // 678640: using guessed type char byte_678640; void __fastcall run_game_loop(int uMsg) diff --git a/Source/diablo.h b/Source/diablo.h index 794be540c..1a96c9688 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -17,7 +17,7 @@ extern BOOL gbRunGameResult; extern int zoomflag; // weak extern BOOL gbProcessPlayers; extern int glEndSeed[NUMLEVELS]; -extern int dword_5256E8; // weak +extern BOOL dword_5256E8; extern HINSTANCE ghInst; // idb extern int DebugMonsters[10]; extern char cineflag; // weak diff --git a/Source/mainmenu.cpp b/Source/mainmenu.cpp index 0bbbe3480..f3b43c661 100644 --- a/Source/mainmenu.cpp +++ b/Source/mainmenu.cpp @@ -2,109 +2,73 @@ #include "../types.h" -int mainmenu_cpp_init_value; // weak +static float mainmenu_cpp_init_value = INFINITY; char chr_name_str[16]; -const int mainmenu_inf = 0x7F800000; // weak - /* data */ -int menu_music_track_id = 5; // idb - -struct mainmenu_cpp_init -{ - mainmenu_cpp_init() - { - mainmenu_cpp_init_value = mainmenu_inf; - } -} _mainmenu_cpp_init; -// 47F074: using guessed type int mainmenu_inf; -// 646CE0: using guessed type int mainmenu_cpp_init_value; +int menu_music_track_id = 5; void __cdecl mainmenu_refresh_music() { - int v0; // eax - - music_start(menu_music_track_id); - v0 = menu_music_track_id; - do - { - if ( ++v0 == 6 ) - v0 = 0; - } - while ( !v0 || v0 == 1 ); - menu_music_track_id = v0; + music_start(menu_music_track_id); + do { + menu_music_track_id++; + if (menu_music_track_id == 6) + menu_music_track_id = 0; + } while (!menu_music_track_id || menu_music_track_id == 1); } -void __stdcall mainmenu_create_hero(char *a1, char *a2) +void __stdcall mainmenu_create_hero(char *name_1, char *name_2) { - // char *v2; // [esp-14h] [ebp-14h] - - if ( UiValidPlayerName(a1) ) /* v2 */ - pfile_create_save_file(a1, a2); + if (UiValidPlayerName(name_1)) + pfile_create_save_file(name_1, name_2); } int __stdcall mainmenu_select_hero_dialog(int u1, int u2, int u3, int u4, int mode, char *cname, int clen, char *cdesc, int cdlen, int *multi) /* fix args */ { - int v10; // eax - int a6; // [esp+8h] [ebp-8h] - int a5; // [esp+Ch] [ebp-4h] - - a6 = 1; - a5 = 0; - if ( gbMaxPlayers == 1 ) - { - if ( !UiSelHeroSingDialog( - pfile_ui_set_hero_infos, - pfile_ui_save_create, - pfile_delete_save, - pfile_ui_set_class_stats, - &a5, - chr_name_str, - &gnDifficulty) ) - TermMsg("Unable to display SelHeroSing"); - if ( a5 == 2 ) - { - dword_5256E8 = 1; - goto LABEL_6; - } - dword_5256E8 = 0; - } - else if ( !UiSelHeroMultDialog( - pfile_ui_set_hero_infos, - pfile_ui_save_create, - pfile_delete_save, - pfile_ui_set_class_stats, - &a5, - &a6, - chr_name_str) ) - { - TermMsg("Can't load multiplayer dialog"); - } - if ( a5 == 4 ) - { - SErrSetLastError(1223); - return 0; - } -LABEL_6: - pfile_create_player_description(cdesc, cdlen); - if ( multi ) - { - if ( mode == 'BNET' ) - v10 = a6 || !plr[myplr].pBattleNet; - else - v10 = a6; - *multi = v10; - } - if ( cname ) - { - if ( clen ) - SStrCopy(cname, chr_name_str, clen); - } - return 1; + int a6 = 1; + int a5 = 0; + if (gbMaxPlayers == 1) { + if (!UiSelHeroSingDialog( + pfile_ui_set_hero_infos, + pfile_ui_save_create, + pfile_delete_save, + pfile_ui_set_class_stats, + &a5, + chr_name_str, + &gnDifficulty)) + TermMsg("Unable to display SelHeroSing"); + if (a5 == 2) + dword_5256E8 = TRUE; + else + dword_5256E8 = FALSE; + } else if (!UiSelHeroMultDialog( + pfile_ui_set_hero_infos, + pfile_ui_save_create, + pfile_delete_save, + pfile_ui_set_class_stats, + &a5, + &a6, + chr_name_str)) { + TermMsg("Can't load multiplayer dialog"); + } + if (a5 == 4) { + SErrSetLastError(1223); + return 0; + } + pfile_create_player_description(cdesc, cdlen); + if (multi) { + if (mode == 'BNET') + *multi = a6 || !plr[myplr].pBattleNet; + else + *multi = a6; + } + if (cname && clen) + SStrCopy(cname, chr_name_str, clen); + + return 1; } -// 5256E8: using guessed type int dword_5256E8; -// 679660: using guessed type char gbMaxPlayers; void __cdecl mainmenu_loop() { @@ -150,38 +114,36 @@ LABEL_16: } // 634980: using guessed type int gbActive; -int __cdecl mainmenu_single_player() +BOOL __cdecl mainmenu_single_player() { - gbMaxPlayers = 1; - return mainmenu_init_menu(1); + gbMaxPlayers = 1; + return mainmenu_init_menu(1); } // 679660: using guessed type char gbMaxPlayers; -int __fastcall mainmenu_init_menu(int a1) +BOOL __fastcall mainmenu_init_menu(int type) { - int v1; // esi - int v3; // esi + if (type == 4) + return 1; - v1 = a1; - if ( a1 == 4 ) - return 1; - music_stop(); - v3 = diablo_init_menu(v1 != 2, v1 != 3); - if ( v3 ) - mainmenu_refresh_music(); - return v3; + music_stop(); + + int success = diablo_init_menu(type != 2, type != 3); + if (success) + mainmenu_refresh_music(); + + return success; } -int __cdecl mainmenu_multi_player() +BOOL __cdecl mainmenu_multi_player() { - gbMaxPlayers = MAX_PLRS; - return mainmenu_init_menu(3); + gbMaxPlayers = MAX_PLRS; + return mainmenu_init_menu(3); } -// 679660: using guessed type char gbMaxPlayers; void __cdecl mainmenu_play_intro() { - music_stop(); - play_movie("gendata\\diablo1.smk", 1); - mainmenu_refresh_music(); + music_stop(); + play_movie("gendata\\diablo1.smk", 1); + mainmenu_refresh_music(); } diff --git a/Source/mainmenu.h b/Source/mainmenu.h index 7c75d7571..0f3c71f39 100644 --- a/Source/mainmenu.h +++ b/Source/mainmenu.h @@ -2,17 +2,16 @@ #ifndef __MAINMENU_H__ #define __MAINMENU_H__ -extern int mainmenu_cpp_init_value; // weak extern char chr_name_str[16]; void __cdecl mainmenu_cpp_init(); void __cdecl mainmenu_refresh_music(); -void __stdcall mainmenu_create_hero(char *, char *); +void __stdcall mainmenu_create_hero(char *name_1, char *name_2); int __stdcall mainmenu_select_hero_dialog(int u1, int u2, int u3, int u4, int mode, char *cname, int clen, char *cdesc, int cdlen, int *multi); void __cdecl mainmenu_loop(); -int __cdecl mainmenu_single_player(); -int __fastcall mainmenu_init_menu(int a1); -int __cdecl mainmenu_multi_player(); +BOOL __cdecl mainmenu_single_player(); +BOOL __fastcall mainmenu_init_menu(int a1); +BOOL __cdecl mainmenu_multi_player(); void __cdecl mainmenu_play_intro(); /* rdata */