Added quit options to ingame menu, from Paxtez
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1043 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
Changes towards version 0.3:
|
||||
- Added quit options to ingame menu (bug #409), from Paxtez
|
||||
- Fix position of blinking save/load in melee, from Paxtez
|
||||
- New packaging/io system. - SvdB
|
||||
- Exit confirmation dialog is prettier and safer, from Paxtez
|
||||
|
||||
@@ -13,6 +13,7 @@ playmenu.11.png 0 0 0 10
|
||||
playmenu.12.png 0 0 0 10
|
||||
playmenu.13.png 0 0 0 10
|
||||
playmenu.14.png 0 0 0 10
|
||||
playmenu.64.png 0 0 0 10
|
||||
playmenu.15.png 0 0 0 10
|
||||
playmenu.16.png 0 0 1 10
|
||||
playmenu.17.png 0 0 0 10
|
||||
@@ -36,6 +37,8 @@ playmenu.34.png 0 0 0 10
|
||||
playmenu.35.png 0 0 0 10
|
||||
playmenu.36.png 0 0 0 10
|
||||
playmenu.37.png 0 0 1 10
|
||||
playmenu.65.png 0 0 1 10
|
||||
playmenu.66.png 0 0 1 10
|
||||
playmenu.38.png 0 0 -10 -177
|
||||
playmenu.39.png 0 0 -27 -177
|
||||
playmenu.40.png 0 0 -48 -177
|
||||
|
||||
@@ -86,6 +86,7 @@ enum
|
||||
{
|
||||
SAVE_GAME = 0,
|
||||
LOAD_GAME,
|
||||
QUIT_GAME,
|
||||
SETTINGS
|
||||
};
|
||||
|
||||
@@ -106,6 +107,12 @@ enum
|
||||
EXIT_MENU_SETTING
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
NO_QUIT_MENU,
|
||||
YES_QUIT_MENU
|
||||
};
|
||||
|
||||
static void
|
||||
FeedbackSetting (BYTE which_setting)
|
||||
{
|
||||
@@ -158,6 +165,25 @@ FeedbackSetting (BYTE which_setting)
|
||||
DrawStatusMessage (buf);
|
||||
ClearSemaphore (GraphicsSem);
|
||||
}
|
||||
static void
|
||||
FeedbackQuit (BYTE which_setting)
|
||||
{
|
||||
UNICODE buf[20];
|
||||
buf[0] = '\0';
|
||||
switch (which_setting)
|
||||
{
|
||||
case NO_QUIT_MENU:
|
||||
wsprintf (buf, "Don't Quit");
|
||||
break;
|
||||
case YES_QUIT_MENU:
|
||||
wsprintf (buf, "Quit Game");
|
||||
break;
|
||||
}
|
||||
|
||||
SetSemaphore (GraphicsSem);
|
||||
DrawStatusMessage (buf);
|
||||
ClearSemaphore (GraphicsSem);
|
||||
}
|
||||
|
||||
static BOOLEAN DoSettings (PMENU_STATE pMS);
|
||||
|
||||
@@ -537,6 +563,51 @@ DoSettings (PMENU_STATE pMS)
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
static BOOLEAN
|
||||
DoQuitMenu (PMENU_STATE pMS)
|
||||
{
|
||||
if (GLOBAL (CurrentActivity) & CHECK_ABORT)
|
||||
return (FALSE);
|
||||
|
||||
if (!pMS->Initialized)
|
||||
{
|
||||
DrawMenuStateStrings (PM_NO_QUIT, pMS->CurState);
|
||||
FeedbackQuit (pMS->CurState);
|
||||
pMS->Initialized = TRUE;
|
||||
pMS->InputFunc = DoQuitMenu;
|
||||
}
|
||||
else if (CurrentMenuState.cancel
|
||||
|| (CurrentMenuState.select
|
||||
&& pMS->CurState == NO_QUIT_MENU))
|
||||
{
|
||||
SetSemaphore (GraphicsSem);
|
||||
DrawStatusMessage (NULL_PTR);
|
||||
ClearSemaphore (GraphicsSem);
|
||||
|
||||
pMS->CurState = QUIT_GAME;
|
||||
pMS->InputFunc = DoGameOptions;
|
||||
pMS->Initialized = 0;
|
||||
}
|
||||
else if (CurrentMenuState.select)
|
||||
{
|
||||
switch (pMS->CurState)
|
||||
{
|
||||
case NO_QUIT_MENU:
|
||||
break;
|
||||
case YES_QUIT_MENU:
|
||||
GLOBAL (CurrentActivity) |= CHECK_ABORT;
|
||||
ExitRequested = FALSE;
|
||||
GameExiting = TRUE;
|
||||
break;
|
||||
}
|
||||
FeedbackQuit (pMS->CurState);
|
||||
}
|
||||
else if (DoMenuChooser (pMS, PM_NO_QUIT))
|
||||
FeedbackQuit (pMS->CurState);
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
DrawCargo (COUNT redraw_state)
|
||||
{
|
||||
@@ -931,7 +1002,7 @@ DoPickGame (PMENU_STATE pMS)
|
||||
{
|
||||
extern FRAME PlayFrame;
|
||||
|
||||
pMS->ModuleFrame = SetAbsFrameIndex (PlayFrame, 38);
|
||||
pMS->ModuleFrame = SetAbsFrameIndex (PlayFrame, 41);
|
||||
}
|
||||
|
||||
SetSemaphore (GraphicsSem);
|
||||
@@ -1247,6 +1318,11 @@ DoGameOptions (PMENU_STATE pMS)
|
||||
case LOAD_GAME:
|
||||
pMS->CurFrame = (FRAME)FadeMusic (0, ONE_SECOND >> 1);
|
||||
return (PickGame (pMS));
|
||||
case QUIT_GAME:
|
||||
pMS->Initialized = FALSE;
|
||||
pMS->CurState = NO_QUIT_MENU;
|
||||
pMS->InputFunc = DoQuitMenu;
|
||||
break;
|
||||
case SETTINGS:
|
||||
pMS->Initialized = FALSE;
|
||||
pMS->InputFunc = DoSettings;
|
||||
|
||||
@@ -66,6 +66,7 @@ static char menu_string[][11] = {
|
||||
|
||||
"save game",
|
||||
"load game",
|
||||
"quit game",
|
||||
"settings",
|
||||
"exit menu",
|
||||
|
||||
@@ -93,6 +94,9 @@ static char menu_string[][11] = {
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
//PM_QUIT
|
||||
"No, Play",
|
||||
"Yes, Quit",
|
||||
//PM_ALTSCAN
|
||||
"scan",
|
||||
"starmap",
|
||||
@@ -192,6 +196,9 @@ GetEndMenuState (BYTE BaseState)
|
||||
case PM_SOUND_ON:
|
||||
return PM_EXIT_MENU4;
|
||||
break;
|
||||
case PM_NO_QUIT:
|
||||
return PM_YES_QUIT;
|
||||
break;
|
||||
case PM_ALT_SCAN:
|
||||
case PM_ALT_STARMAP:
|
||||
return PM_ALT_NAVIGATE;
|
||||
@@ -555,6 +562,19 @@ DrawMenuStateStrings (BYTE beg_index, SWORD NewState)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (beg_index == PM_NO_QUIT)
|
||||
{
|
||||
end_index = beg_index + 1;
|
||||
switch (beg_index + NewState)
|
||||
{
|
||||
case PM_NO_QUIT:
|
||||
NewState = 0;
|
||||
break;
|
||||
case PM_YES_QUIT:
|
||||
NewState = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
r.extent.height = RADAR_HEIGHT + 11;
|
||||
DrawPCMenu (beg_index, end_index, (BYTE)NewState, hilite, &r);
|
||||
s.frame = 0;
|
||||
|
||||
@@ -22,6 +22,7 @@ enum
|
||||
|
||||
PM_SAVE_GAME,
|
||||
PM_LOAD_GAME,
|
||||
PM_QUIT_GAME,
|
||||
PM_CHANGE_SETTINGS,
|
||||
PM_EXIT_MENU1,
|
||||
|
||||
@@ -50,6 +51,9 @@ enum
|
||||
PM_CHANGE_SHIP,
|
||||
PM_EXIT_MENU4,
|
||||
|
||||
PM_NO_QUIT,
|
||||
PM_YES_QUIT,
|
||||
|
||||
PM_ALT_SCAN,
|
||||
PM_ALT_STARMAP,
|
||||
PM_ALT_MANIFEST,
|
||||
|
||||
Reference in New Issue
Block a user