Browse Source

Fix menu navigation

pull/25/head
Anders Jenbo 7 years ago
parent
commit
88d2fa77e9
  1. 39
      Stub/diabloui.cpp
  2. 1
      Stub/sound.cpp
  3. 22
      Stub/storm_net.cpp

39
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;

1
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;

22
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;

Loading…
Cancel
Save