From 88d2fa77e99d7795c56b73fe68a4568c325c984a Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 27 Jan 2019 00:33:45 +0100 Subject: [PATCH] Fix menu navigation --- Stub/diabloui.cpp | 39 ++++++++++++++++++++++----------------- Stub/sound.cpp | 1 - Stub/storm_net.cpp | 22 +++++++++++++--------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/Stub/diabloui.cpp b/Stub/diabloui.cpp index c240cd486..a42a59e34 100644 --- a/Stub/diabloui.cpp +++ b/Stub/diabloui.cpp @@ -169,7 +169,7 @@ void UiInitialize() LoadCharNamesintoMemory(); } -BOOL __stdcall UiMainMenuDialog(char *name, int *menu, void(__stdcall *fnSound)(char *file), int a4) +BOOL __stdcall UiMainMenuDialog(char *name, int *pdwResult, void(__stdcall *fnSound)(char *file), int a4) { TitleImageLoaded = false; SelectedItemMax = 5; @@ -202,7 +202,7 @@ BOOL __stdcall UiMainMenuDialog(char *name, int *menu, void(__stdcall *fnSound)( fnSound("sfx\\items\\titlemov.wav"); break; case SDLK_ESCAPE: - *menu = MAINMENU_EXIT_DIABLO; + *pdwResult = MAINMENU_EXIT_DIABLO; fnSound("sfx\\items\\titlslct.wav"); Sleep(250); // Wait for soudn to play return TRUE; @@ -212,24 +212,24 @@ BOOL __stdcall UiMainMenuDialog(char *name, int *menu, void(__stdcall *fnSound)( switch (SelectedItem) { case MAINMENU_SINGLE_PLAYER: fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_SINGLE_PLAYER; + *pdwResult = MAINMENU_SINGLE_PLAYER; return TRUE; case MAINMENU_MULTIPLAYER: fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_MULTIPLAYER; + *pdwResult = MAINMENU_MULTIPLAYER; return TRUE; case MAINMENU_REPLAY_INTRO: fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_REPLAY_INTRO; + *pdwResult = MAINMENU_REPLAY_INTRO; return TRUE; case MAINMENU_SHOW_CREDITS: fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_SHOW_CREDITS; + *pdwResult = MAINMENU_SHOW_CREDITS; return TRUE; case MAINMENU_EXIT_DIABLO: fnSound("sfx\\items\\titlslct.wav"); Sleep(250); // Wait for soudn to play - *menu = MAINMENU_EXIT_DIABLO; + *pdwResult = MAINMENU_EXIT_DIABLO; return TRUE; } break; @@ -241,24 +241,24 @@ BOOL __stdcall UiMainMenuDialog(char *name, int *menu, void(__stdcall *fnSound)( if (IsInside(x, y, ItemLeft, ItemTop, ItemWidth, ItemHeight)) { fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_SINGLE_PLAYER; + *pdwResult = MAINMENU_SINGLE_PLAYER; return TRUE; } else if (IsInside(x, y, ItemLeft, ItemTop + ItemHeight + 1, ItemWidth, ItemHeight)) { fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_MULTIPLAYER; + *pdwResult = MAINMENU_MULTIPLAYER; return TRUE; } else if (IsInside(x, y, ItemLeft, ItemTop + ItemHeight * 2 + 1, ItemWidth, ItemHeight)) { fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_REPLAY_INTRO; + *pdwResult = MAINMENU_REPLAY_INTRO; return TRUE; } else if (IsInside(x, y, ItemLeft, ItemTop + ItemHeight * 3 + 2, ItemWidth, ItemHeight)) { fnSound("sfx\\items\\titlslct.wav"); - *menu = MAINMENU_SHOW_CREDITS; + *pdwResult = MAINMENU_SHOW_CREDITS; return TRUE; } else if (IsInside(x, y, ItemLeft, ItemTop + ItemHeight * 4 + 3, ItemWidth, ItemHeight)) { fnSound("sfx\\items\\titlslct.wav"); Sleep(250); // Wait for soudn to play - *menu = MAINMENU_EXIT_DIABLO; + *pdwResult = MAINMENU_EXIT_DIABLO; return TRUE; } } @@ -266,7 +266,7 @@ BOOL __stdcall UiMainMenuDialog(char *name, int *menu, void(__stdcall *fnSound)( case SDL_QUIT: fnSound("sfx\\items\\titlslct.wav"); Sleep(250); // Wait for soudn to play - *menu = MAINMENU_EXIT_DIABLO; + *pdwResult = MAINMENU_EXIT_DIABLO; return TRUE; } } @@ -283,9 +283,13 @@ static BOOL __stdcall ui_add_hero_info(_uiheroinfo *info) return TRUE; } -BOOL __stdcall UiSelHeroSingDialog(BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninfofunc)(_uiheroinfo *)), - BOOL(__stdcall *fncreate)(_uiheroinfo *), BOOL(__stdcall *fnremove)(_uiheroinfo *), - BOOL(__stdcall *fnstats)(unsigned int, _uidefaultstats *), int *dlgresult, char *name, +BOOL __stdcall UiSelHeroSingDialog( + BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninfofunc)(_uiheroinfo *)), + BOOL(__stdcall *fncreate)(_uiheroinfo *), + BOOL(__stdcall *fnremove)(_uiheroinfo *), + BOOL(__stdcall *fnstats)(unsigned int, _uidefaultstats *), + int *dlgresult, + char *name, int *difficulty) { TitleImageLoaded = false; @@ -325,6 +329,7 @@ BOOL __stdcall UiSelHeroSingDialog(BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninf break; } + *dlgresult = 4; return TRUE; case SDLK_BACKSPACE: if (NewHeroNameIndex > 0) { @@ -602,7 +607,7 @@ int __stdcall UiProgressDialog(HWND window, char *msg, int a3, void *fnfunc, int BOOL __stdcall UiSelHeroMultDialog(BOOL(__stdcall *fninfo)(BOOL(__stdcall *fninfofunc)(_uiheroinfo *)), BOOL(__stdcall *fncreate)(_uiheroinfo *), BOOL(__stdcall *fnremove)(_uiheroinfo *), - BOOL(__stdcall *fnstats)(unsigned int, _uidefaultstats *), int *dlgresult, int *a6, + BOOL(__stdcall *fnstats)(unsigned int, _uidefaultstats *), int *dlgresult, int *hero_is_created, char *name) { TitleImageLoaded = false; diff --git a/Stub/sound.cpp b/Stub/sound.cpp index 0024e4efd..5fa446b74 100644 --- a/Stub/sound.cpp +++ b/Stub/sound.cpp @@ -171,7 +171,6 @@ void __fastcall snd_stop_snd(TSnd *pSnd) void *MSFXBuffer; TSnd *__fastcall sound_file_load(char *path) { - int bytestoread; int nrread; void *file; diff --git a/Stub/storm_net.cpp b/Stub/storm_net.cpp index 1aa4e8719..728c8d0ed 100644 --- a/Stub/storm_net.cpp +++ b/Stub/storm_net.cpp @@ -40,24 +40,28 @@ BOOL STORMAPI SNetSendMessage(int playerID, void *data, unsigned int databytes) { DUMMY_ONCE(); - snet_messages.push_back(StubMessage{playerID, std::string((char *)data, databytes)}); + snet_messages.push_back(StubMessage{ playerID, std::string((char *)data, databytes) }); return TRUE; } int __stdcall SNetInitializeProvider(unsigned long a1, struct _SNETPROGRAMDATA *client_info, - struct _SNETPLAYERDATA *user_info, struct _SNETUIDATA *ui_info, - struct _SNETVERSIONDATA *fileinfo) + struct _SNETPLAYERDATA *user_info, struct _SNETUIDATA *ui_info, + struct _SNETVERSIONDATA *fileinfo) { DUMMY(); - ui_info->selectnamecallback(client_info, user_info, ui_info, fileinfo, 0, NULL, 0, NULL, 0, NULL); + char *cname; + char *cdesc; + BOOL *multi; - return TRUE; + BOOL result = ui_info->selectnamecallback(client_info, user_info, ui_info, fileinfo, 0, cname, 0, cdesc, 0, multi); + + return result; } BOOL STORMAPI SNetCreateGame(const char *pszGameName, const char *pszGamePassword, const char *pszGameStatString, - DWORD dwGameType, char *GameTemplateData, int GameTemplateSize, int playerCount, - char *creatorName, char *a11, int *playerID) + DWORD dwGameType, char *GameTemplateData, int GameTemplateSize, int playerCount, + char *creatorName, char *a11, int *playerID) { DUMMY(); return TRUE; @@ -93,7 +97,7 @@ BOOL STORMAPI SNetPerformUpgrade(DWORD *upgradestatus) } BOOL STORMAPI SNetReceiveTurns(int a1, int arraysize, char **arraydata, unsigned int *arraydatabytes, - DWORD *arrayplayerstatus) + DWORD *arrayplayerstatus) { DUMMY_ONCE(); return TRUE; @@ -147,7 +151,7 @@ BOOLEAN __stdcall SNetSetBasePlayer(int) return TRUE; } -int __stdcall SNetGetProviderCaps(struct _SNETCAPS * caps) +int __stdcall SNetGetProviderCaps(struct _SNETCAPS *caps) { memset(caps, 0, sizeof(struct _SNETCAPS)); caps->maxplayers = 1;