New ingame options screen (by rftr).

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9212 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-11-17 07:50:20 +00:00
parent f6fd480c45
commit 1ee875be61
34 changed files with 1509 additions and 182 deletions
+81 -2
View File
@@ -62,6 +62,8 @@
//buttons
#define GIO_CANCEL_X iScreenWidthOffset + ((320 - 115) / 2)
#define GIO_113FEATURES_X iScreenWidthOffset + 263
#define GIO_BTN_START_X iScreenWidthOffset + 320 + 105
#define GIO_BTN_START_Y iScreenHeightOffset + 435
@@ -409,6 +411,11 @@ void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIOCancelButton;
INT32 giGIOCancelBtnImage;
// 1.13 Features Button
void BtnGIO113FeaturesCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIO113FeaturesButton;
INT32 giGIO113FeaturesBtnImage;
// MP LOAD Button
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 MPguiGIOCancelButton;
@@ -721,6 +728,16 @@ BOOLEAN EnterGIOScreen()
DEFAULT_MOVE_CALLBACK, BtnGIOCancelCallback );
SpecifyButtonSoundScheme( guiGIOCancelButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
//1.13 Features button
giGIO113FeaturesBtnImage = UseLoadedButtonImage( giGIODoneBtnImage, -1,1,-1,3,-1 );
guiGIO113FeaturesButton = CreateIconAndTextButton( giGIO113FeaturesBtnImage, zOptionsText[OPT_113_FEATURES], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_113FEATURES_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIO113FeaturesCallback );
SpecifyButtonSoundScheme( guiGIO113FeaturesButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DIFFICULTY SETTING
@@ -1875,8 +1892,10 @@ BOOLEAN ExitGIOScreen()
// Destroy Basic buttons
RemoveButton( guiGIOCancelButton );
RemoveButton( guiGIO113FeaturesButton );
RemoveButton( guiGIODoneButton );
UnloadButtonImage( giGIOCancelBtnImage );
UnloadButtonImage( giGIO113FeaturesBtnImage );
UnloadButtonImage( giGIODoneBtnImage );
// Destroy Difficulty setting buttons
@@ -1987,7 +2006,7 @@ void HandleGIOScreen()
gubGIOExitScreen = SAVE_LOAD_SCREEN;
gfSaveGame = FALSE;
gfGIOScreenExit = TRUE;
guiPreviousOptionScreen = GAME_INIT_OPTIONS_SCREEN;
SetOptionsPreviousScreen(GAME_INIT_OPTIONS_SCREEN);
break;
case GIO_EXIT:
@@ -2196,6 +2215,23 @@ void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason)
}
}
void BtnGIO113FeaturesCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags |= BUTTON_CLICKED_ON;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
btn->uiFlags &= (~BUTTON_CLICKED_ON );
gubGameOptionScreenHandler = GIO_113FEATURES;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
@@ -2494,6 +2530,8 @@ void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY)
//buttons
#define GIO_CANCEL_X iScreenWidthOffset + ((320 - 115) / 2)
#define GIO_113FEATURES_X iScreenWidthOffset + 263
#define GIO_BTN_START_X iScreenWidthOffset + 320 + 105
#define GIO_BTN_START_Y iScreenHeightOffset + 435
@@ -2701,6 +2739,7 @@ enum
GIO_CANCEL,
GIO_EXIT,
GIO_IRON_MAN_MODE,
GIO_113FEATURES,
MP_LOAD
};
@@ -2744,6 +2783,11 @@ void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIOCancelButton;
INT32 giGIOCancelBtnImage;
// 1.13 Features Button
void BtnGIO113FeaturesCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIO113FeaturesButton;
INT32 giGIO113FeaturesBtnImage;
// MP LOAD Button
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 MPguiGIOCancelButton;
@@ -3044,6 +3088,16 @@ BOOLEAN EnterGIOScreen()
DEFAULT_MOVE_CALLBACK, BtnGIOCancelCallback );
SpecifyButtonSoundScheme( guiGIOCancelButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
//1.13 Features button
giGIO113FeaturesBtnImage = UseLoadedButtonImage( giGIODoneBtnImage, -1,1,-1,3,-1 );
guiGIO113FeaturesButton = CreateIconAndTextButton( giGIO113FeaturesBtnImage, zOptionsText[OPT_113_FEATURES], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_113FEATURES_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIO113FeaturesCallback );
SpecifyButtonSoundScheme( guiGIO113FeaturesButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DIFFICULTY SETTING
@@ -4155,8 +4209,10 @@ BOOLEAN ExitGIOScreen()
// Destroy Basic buttons
RemoveButton( guiGIOCancelButton );
RemoveButton( guiGIO113FeaturesButton );
RemoveButton( guiGIODoneButton );
UnloadButtonImage( giGIOCancelBtnImage );
UnloadButtonImage( giGIO113FeaturesBtnImage );
UnloadButtonImage( giGIODoneBtnImage );
// Destroy Difficulty setting buttons
@@ -4261,7 +4317,7 @@ void HandleGIOScreen()
gubGIOExitScreen = SAVE_LOAD_SCREEN;
gfSaveGame = FALSE;
gfGIOScreenExit = TRUE;
guiPreviousOptionScreen = GAME_INIT_OPTIONS_SCREEN;
SetOptionsPreviousScreen(GAME_INIT_OPTIONS_SCREEN);
break;
case GIO_EXIT:
@@ -4282,6 +4338,12 @@ void HandleGIOScreen()
case GIO_IRON_MAN_MODE:
DisplayMessageToUserAboutGameDifficulty();
break;
case GIO_113FEATURES:
gubGIOExitScreen = FEATURES_SCREEN;
FeaturesScreen::SetPreviousScreen(GAME_INIT_OPTIONS_SCREEN);
gfGIOScreenExit = TRUE;
break;
}
gubGameOptionScreenHandler = GIO_NOTHING;
@@ -4467,6 +4529,23 @@ void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason)
}
}
void BtnGIO113FeaturesCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags |= BUTTON_CLICKED_ON;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
btn->uiFlags &= (~BUTTON_CLICKED_ON );
gubGameOptionScreenHandler = GIO_113FEATURES;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason)
{
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )