Files
source/GameInitOptionsScreen.cpp
T
Wanne 7ca53fadc7 *** MERGED source code from development trunk revision 4890 up to latest current revision 5105 ***
Development Trunk (now obsolete): https://ja2svn.dyndns.org/source/ja2/branches/Wanne/JA2%201.13%20MP
A detailed list of all the features (changes) is visible in the history log of the development trunk:

INFO: There will be no further development in the development source trunk, so is obsolete from now on!

This commit contains the following features (bugfixes are not listed):

- New Feature: Show merc ranks in Strategy Screen before merc name
o Toggle on/off in the ingame options screen
o For each experience level (0-10) there are defined rank names in the language specific text files
o Additional language text that is not translated yet is marked with // TODO.Translate

- New Feature: Faster Bobby Ray Shipments
o This feature is selectable in the ja2_options.ini
o When activated Bobby Ray shipments will be really fast
-> Overnight Express: 5 - 7 hours
-> Air Service: 10, 12 or 14 hours
-> Standard Service: 15, 18 or 21 hours
o In a multiplayer game, this feature is disabled (because shipment arrive immediately in the destination sector)

- New Feature: AP cost for manipulating the merc inventory
o This feature is selectable in the start new game screen
o For example, putting a weapon from hand in the backpack costs APs
o The AP costs are defined in the APBPConstants.ini
o In a multiplayer game, this feature is disabled

- New Feature: Added possibility to set individual Gear Kit names
o Set individual names in the optional new tag <mGearKitName> inside the <GEARKIT> root element (File: TableData\MercStartingGear.xml)

- New Feature: Externalized the maximum purchase amount (JA2 vanilla: 10) for Bobby Rays purchases per shipment
o Define the max. amount in the ja2_options.ini: BOBBY_RAY_MAX_PURCHASE_AMOUNT, Range: 10 - 100)
o Nice scrolling bars to scroll through all the purchases

- New Feature: Now it is possible to walk on "water" tiles or handle those tiles like "normal" tiles 
o (instead of showing the swimming animation and counting the APs for swimming), when the soldier is located on the second level (level > 0)

- New Feature: Externalized AIM Veterans laptop site
o Add maximum of 4 pages
o Add  new AIM to veterans page, and remove AIM from veterans page.
o New XML file: OldAIMArchive.xml (language specific XML files: *.OldAIMArchive.xml)

- New Feature: Added possibility to choose from 254 IMP faces
o Modified IMPPortraits.xml
o Added new GameDir folder "IMPFaces" which contains the IMP face portraits
o Moved IMP faces in the new "IMPFaces" folder

- New Feature: ARSP - All Resolution Support Project
o See here: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=298698&page=1
o Support any kind of screen resolution. This works by choosing the matching full supported resolution (640x480, 800x600, 1024x768) and then centering the graphics
o See ja2.ini for defining the screen resolution

- New Feature: AI Turn Speed Up (FF-MOD)
o see here: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=298699#Post298699
o When this feature is activated it allows fast enemy turns
o New entry in ja2.ini to enable this feature: HIGHSPEED_TIMER = TRUE
o Turn on/off auto fast turns in ingame options
o New ja2_options.ini settings for fine tuning: [Clock Settings] ini block

- New Feature: "Lock" / "Release" mouse cursor in tactical windowed mode, so the mouse can stay within window boundary
o This is very helpful for doing scrolling with the mouse (by moving the mouse to the window edge) in windowed mode
o You can toggle on/off the feature by pressing CTRL + Z. It is also possible to press CTRL + Y. So the user can decide which fits better :)
o Whenever you toggle on/off a screen message appears on the tactical log to notify the player

- New Feature: Weapon overheating
o Basically, every shot fired from a gun increases its temperature. On higher temperatures, the gun jams more frequently
o On/off toggle in the ingame options
o Graphical thermometer indication on the weapon picture
o New ja2_options.ini section with a few options, Section: [Tactical Weapon Overheating Settings]
o XML changes (New Tags)
--> AmmoTypes.xml: <temperatureModificator>
--> Items.xml: <barrel>, <usOverheatingCooldownFactor>
--> Weapons.xml: <usOverheatingJamThreshold>, <usOverheatingDamageThreshold>, <usOverheatingSingleShotTemperature>
o Added a few barells to Items.xml (end of the file)
o more infos: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=301059&page=1

- New Feature: Resting weapons on a surfaces
o You can now rest your weapon on crates, low walls, rocks, debris, open windows etc. while you are crouched. Resting will give yu the superior gun handling modifiers from PRONE position.
o A little 'A' on your gun indicates if you are resting it or not.
o Both settings can be turned on and off in Ja2_Options.ini under 'Tactical Gameplay Settings'

- New Feature: Externalized option on whether mercs can exit sector using grid exit in turn based mode
o new ja2_options.ini property: GRID_EXIT_IN_TURNBASED
o This ini setting does not affect leaving sectors on map edges

- Rework/Update: Ammo boxes and Ammo crates
o Ammo crate items added for remaining calibers.  Tweaked prices to correspond to magazines, tweaked capacities and weights to be reasonable (~800 or less).
o Shift-R reload now looks at both boxes and crates in sector items and merc's inventory to reload, and tops off magazines in inventory as well.  Only possible outside of combat.
o Ctrl-Shift-A still creates crates as per usual, with some fixes to ensure all ammo is caught on the first press.
o Shift-A now creates ammo boxes in the same loop.  They mostly behave like crates, but fit in mercs inventories.
o Ammo boxes are available to purchase at BR and tony, sam, etc.  Individual magazines/drums/etc are no longer available.
o Removed ammo crate xml tag.  Added ubMagType tag to Magazines array.  This allows us to differentiate between magazines, bullets, boxes and crates.
o Changed ammo filtering in BR's to display boxes appropriately.  Added back the "Mag:" display (changed text to "Size:")
o Added ja2set.dat.xml file (WF map version in WF maps folder) to be used instead of ja2set.dat file (ja2.ini setting added) For now, if you want to play vanilla instead, just change the setting in the ini (see comments in file).
o Added P4-P9Items image files (up to 5k images each) and tileslots.  1.13 core items will continue to use Guns and P1-P3Items for the foreseeable future.  P4-P9 can be used by customizers/modders to avoid conflicts with Guns/P1-P3 items.  TODO: Need to discuss a strategy for this in the forums.
o Added in Ambient/0.bad and 32.bad to avoid an exception in the code.
o Updated the XML Editor
o Standardized the text on all the ammo items.

- New Multiplayer Feature: Sharing same FOV (field of view) in a coop/team-dm (for friendly teams) game
o You will also see enemies, that your teammate sees

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5108 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2012-03-23 18:46:54 +00:00

5604 lines
195 KiB
C++

#ifdef PRECOMPILEDHEADERS
#include "JA2 All.h"
#include "Intro.h"
#else
#include "Types.h"
#include "GameInitOptionsScreen.h"
#include "GameSettings.h"
#include "Utilities.h"
#include "wCheck.h"
#include "Font Control.h"
#include "WordWrap.h"
#include "Render Dirty.h"
#include "Input.h"
#include "Options Screen.h"
#include "English.h"
#include "Sysutil.h"
#include "Fade Screen.h"
#include "Cursor Control.h"
#include "Music Control.h"
#include "cursors.h"
#include "Intro.h"
#include "Text.h"
#include "_Ja25EnglishText.h"
#include "Soldier Profile.h"
#endif
#include "gameloop.h"
#include "connect.h"
#include "saveloadscreen.h"
#ifdef JA2UB
#include "ub_config.h"
#endif
#include <vfs/Core/vfs.h>
#include <vfs/Core/vfs_init.h>
#include <vfs/Tools/vfs_property_container.h>
#include <vfs/Core/vfs_os_functions.h>
#ifdef JA2UB
// *********************************
// Unfinished Business: Initial Game Screen
// *********************************
//////////////////////////////////////////////////////////////
// SANDRO - the start-new-game screen has been changed a lot
//////////////////////////////////////////////////////////////
////////////////////////////////////////////
//
// Global Defines
//
///////////////////////////////////////////
#define GIO_TITLE_FONT FONT14ARIAL
#define GIO_TITLE_COLOR FONT_MCOLOR_WHITE
#define GIO_TOGGLE_TEXT_FONT FONT10ARIAL
#define GIO_TOGGLE_TEXT_COLOR FONT_MCOLOR_WHITE
//buttons
#define GIO_CANCEL_X iScreenWidthOffset + ((320 - 115) / 2)
#define GIO_BTN_START_X iScreenWidthOffset + 320 + 105
#define GIO_BTN_START_Y iScreenHeightOffset + 435
//main title
#define GIO_MAIN_TITLE_X 0
#define GIO_MAIN_TITLE_Y iScreenHeightOffset + 10
#define GIO_MAIN_TITLE_WIDTH SCREEN_WIDTH
////////////////////////////////////////////////////////////////////////////////////////////////////
//radio box locations
#define GIO_GAP_BN_SETTINGS 35
#define GIO_OFFSET_TO_TEXT 36
#define GIO_OFFSET_TO_TOGGLE_BOX 180
#define GIO_OFFSET_TO_TOGGLE_BOX_Y 9
#define GIO_TITLE_DISTANCE 30 // higher means closer
// ---------------------------------
// Y-Offset for Combo-Controls
#define COMBO_Y_OFFSET 63
// Y-Offset for Check-Controls
#define CHECK_Y_OFFSET 50
#define CORRECTION_Y_OFFSET (COMBO_Y_OFFSET - CHECK_Y_OFFSET)
// X-Offset for Checkbox-Controls
#define CHECK_X_OFFSET 36
#define COMBO_X_OFFSET 0
#define CHECK_WIDTH (GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT)
#define COMBO_WIDTH (GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT)
/*********************************
FIRST COLUMN
**********************************/
#define FIRST_COLUMN_X iScreenWidthOffset + 10
#define FIRST_COLUMN_Y iScreenHeightOffset + 75
#define GIO_DIF_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
#define GIO_DIF_SETTING_Y FIRST_COLUMN_Y
#define GIO_DIF_SETTING_WIDTH COMBO_WIDTH
#define GIO_IMP_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
#define GIO_IMP_SETTING_Y GIO_DIF_SETTING_Y + COMBO_Y_OFFSET
#define GIO_IMP_SETTING_WIDTH COMBO_WIDTH
#define GIO_TRAITS_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_TRAITS_SETTING_Y GIO_IMP_SETTING_Y + CHECK_Y_OFFSET
#define GIO_TRAITS_SETTING_WIDTH CHECK_WIDTH
#define GIO_GAME_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_GAME_SETTING_Y GIO_TRAITS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_GAME_SETTING_WIDTH CHECK_WIDTH
#define GIO_IRON_MAN_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_IRON_MAN_SETTING_Y GIO_GAME_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_IRON_MAN_SETTING_WIDTH CHECK_WIDTH
#define GIO_TIMED_TURN_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_TIMED_TURN_SETTING_Y GIO_IRON_MAN_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_TIMED_TURN_SETTING_WIDTH CHECK_WIDTH
#define GIO_TERRORISTS_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_TERRORISTS_SETTING_Y GIO_IRON_MAN_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_TERRORISTS_SETTING_WIDTH CHECK_WIDTH
/*********************************
SECOND COLUMN
**********************************/
#define SECOND_COLUMN_X iScreenWidthOffset + 210
#define SECOND_COLUMN_Y FIRST_COLUMN_Y
#define GIO_INV_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
#define GIO_INV_SETTING_Y SECOND_COLUMN_Y
#define GIO_INV_SETTING_WIDTH COMBO_WIDTH
#define GIO_PROGRESS_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
#define GIO_PROGRESS_SETTING_Y GIO_INV_SETTING_Y + COMBO_Y_OFFSET
#define GIO_PROGRESS_SETTING_WIDTH COMBO_WIDTH
#define GIO_GUN_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_GUN_SETTING_Y GIO_PROGRESS_SETTING_Y + CHECK_Y_OFFSET
#define GIO_GUN_SETTING_WIDTH CHECK_WIDTH
#define GIO_DROPALL_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_DROPALL_SETTING_Y GIO_GUN_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_DROPALL_SETTING_WIDTH CHECK_WIDTH
#define GIO_OVERHEATING_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_OVERHEATING_SETTING_Y GIO_DROPALL_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_OVERHEATING_SETTING_WIDTH CHECK_WIDTH
/*********************************
THIRD COLUMN
**********************************/
#define THIRD_COLUMN_X iScreenWidthOffset + 413
#define THIRD_COLUMN_Y FIRST_COLUMN_Y
#define GIO_SQUAD_SIZE_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
#define GIO_SQUAD_SIZE_SETTING_Y THIRD_COLUMN_Y
#define GIO_SQUAD_SIZE_SETTING_WIDTH COMBO_WIDTH
#define GIO_BR_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
#define GIO_BR_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET
#define GIO_BR_SETTING_WIDTH COMBO_WIDTH
#define GIO_NCTH_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_NCTH_SETTING_Y GIO_BR_SETTING_Y + CHECK_Y_OFFSET
#define GIO_NCTH_SETTING_WIDTH CHECK_WIDTH
#define GIO_IIS_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_IIS_SETTING_Y GIO_NCTH_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_IIS_SETTING_WIDTH CHECK_WIDTH
#define GIO_INVENTORY_AP_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_INVENTORY_AP_SETTING_Y GIO_IIS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_INVENTORY_AP_SETTING_WIDTH CHECK_WIDTH
////radio box locations
//#define GIO_GAP_BN_SETTINGS 35
//#define GIO_OFFSET_TO_TEXT 36
//#define GIO_OFFSET_TO_TOGGLE_BOX 180
//#define GIO_OFFSET_TO_TOGGLE_BOX_Y 9
//
//#define GIO_TITLE_DISTANCE 30 // higher means closer
//
//#define GIO_DIF_SETTING_X iScreenWidthOffset + 48
//#define GIO_DIF_SETTING_Y iScreenHeightOffset + 55
//#define GIO_DIF_SETTING_WIDTH GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT
//
//#define GIO_IMP_SETTING_X GIO_DIF_SETTING_X
//#define GIO_IMP_SETTING_Y GIO_DIF_SETTING_Y + 63
//#define GIO_IMP_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//// old/new traits
//#define GIO_TRAITS_SETTING_X GIO_DIF_SETTING_X + 36
//#define GIO_TRAITS_SETTING_Y GIO_IMP_SETTING_Y + 52
//#define GIO_TRAITS_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//// Madd
//#define GIO_GAME_SETTING_X GIO_TRAITS_SETTING_X
//#define GIO_GAME_SETTING_Y GIO_TRAITS_SETTING_Y + 67
//#define GIO_GAME_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_IRON_MAN_SETTING_X GIO_TRAITS_SETTING_X
//#define GIO_IRON_MAN_SETTING_Y GIO_GAME_SETTING_Y + 67
//#define GIO_IRON_MAN_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//// Tex and Jon
//#define GIO_TERRORISTS_SETTING_X GIO_TRAITS_SETTING_X
//#define GIO_TERRORISTS_SETTING_Y GIO_IRON_MAN_SETTING_Y + 67
//#define GIO_TERRORISTS_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_BR_SETTING_X iScreenWidthOffset + 370
//#define GIO_BR_SETTING_Y GIO_DIF_SETTING_Y
//#define GIO_BR_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_SQUAD_SIZE_SETTING_X GIO_BR_SETTING_X
//#define GIO_SQUAD_SIZE_SETTING_Y GIO_BR_SETTING_Y + 63
//#define GIO_SQUAD_SIZE_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_INV_SETTING_X GIO_SQUAD_SIZE_SETTING_X
//#define GIO_INV_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + 63
//#define GIO_INV_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_DROPALL_SETTING_X GIO_INV_SETTING_X + 36
//#define GIO_DROPALL_SETTING_Y GIO_INV_SETTING_Y + 56
//#define GIO_DROPALL_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_GUN_SETTING_X GIO_DROPALL_SETTING_X
//#define GIO_GUN_SETTING_Y GIO_DROPALL_SETTING_Y + 67
//#define GIO_GUN_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_CACHES_SETTING_X GIO_GUN_SETTING_X
//#define GIO_CACHES_SETTING_Y GIO_GUN_SETTING_Y + 67
//#define GIO_CACHES_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_TIMED_TURN_SETTING_X GIO_GUN_SETTING_X
//#define GIO_TIMED_TURN_SETTING_Y GIO_IRON_MAN_SETTING_Y
//#define GIO_TIMED_TURN_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
//
//#define GIO_PROGRESS_SETTING_X GIO_SQUAD_SIZE_SETTING_X
//#define GIO_PROGRESS_SETTING_Y GIO_TERRORISTS_SETTING_Y + 13
//#define GIO_PROGRESS_SETTING_WIDTH GIO_DIF_SETTING_WIDTH
// INI File
#define JA2SP_INI_FILENAME "ja2_sp.ini"
// INI Section
#define JA2SP_INI_INITIAL_SECTION "JA2 Singleplayer Initial Settings"
// INI Properties
#define JA2SP_DIFFICULTY_LEVEL "DIFFICULTY_LEVEL"
#define JA2SP_BOBBY_RAY_SELECTION "BOBBY_RAY_SELECTION"
#define JA2SP_MAX_IMP_CHARACTERS "MAX_IMP_CHARACTERS"
#define JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES "PROGRESS_SPEED_OF_ITEM_CHOICES"
#define JA2SP_SKILL_TRAITS "SKILL_TRAITS"
#define JA2SP_INVENTORY_ATTACHMENTS "INVENTORY_ATTACHMENTS"
#define JA2SP_GAME_STYLE "GAME_STYLE"
#define JA2SP_ENEMIES_DROP_ALL_ITEMS "ENEMIES_DROP_ALL_ITEMS"
#define JA2SP_EXTRA_DIFFICULTY "EXTRA_DIFFICULTY"
#define JA2SP_AVAILABLE_ARSENAL "AVAILABLE_ARSENAL"
#define JA2SP_NUMBER_OF_TERRORISTS "NUMBER_OF_TERRORISTS"
#define JA2SP_SECRET_WEAPON_CACHES "SECRET_WEAPON_CACHES"
#define JA2SP_SQUAD_SIZE "SQUAD_SIZE"
// Exclusive UB
#define JA2SP_UB_RPC_TEX_AND_JOHN "RPC_TEX_AND_JOHN"
#define JA2SP_UB_RANDOM_MANUEL_TEXT "RANDOM_MANUEL_TEXT"
//Difficulty settings
enum
{
GIO_DIFF_EASY,
GIO_DIFF_MED,
GIO_DIFF_HARD,
GIO_DIFF_INSANE,
NUM_DIFF_SETTINGS,
};
enum
{
GIO_TRAITS_OLD,
GIO_TRAITS_NEW,
NUM_TRAIT_OPTIONS,
};
// Game Settings options
enum
{
GIO_TEXT_OFF,
GIO_TEXT_ON,
NUM_TEXT_STYLES,
};
enum
{
GIO_REALISTIC,
GIO_SCI_FI,
NUM_GAME_STYLES,
};
// Iron man mode
enum
{
GIO_CAN_SAVE,
GIO_IRON_MAN,
NUM_SAVE_OPTIONS,
};
enum
{
GIO_TEX_JOHN_RANDOM,
GIO_TEX_AND_JOHN,
NUM_RPC_UB_OPTIONS,
};
// BR options
enum
{
GIO_BR_GOOD,
GIO_BR_GREAT,
GIO_BR_EXCELLENT,
GIO_BR_AWESOME,
NUM_BR_OPTIONS,
};
enum
{
GIO_PROGRESS_VERY_SLOW,
GIO_PROGRESS_SLOW,
GIO_PROGRESS_NORMAL,
GIO_PROGRESS_FAST,
GIO_PROGRESS_VERY_FAST,
NUM_PROGRESS_OPTIONS,
};
// New inventory options
enum
{
GIO_INV_OLD,
GIO_INV_NEW,
GIO_INV_NEW_NAS, // WANNE: Added NAS to the start new game screen
NUM_INV_OPTIONS,
};
enum
{
GIO_SQUAD_SIZE_6,
GIO_SQUAD_SIZE_8,
GIO_SQUAD_SIZE_10,
NUM_SQUAD_SIZE_OPTIONS,
};
enum
{
GIO_BUTTON_OFF,
GIO_BUTTON_ON,
GIO_NUM_ONOFF_BUTTONS,
};
// Gun options
enum
{
GIO_REDUCED_GUNS,
GIO_GUN_NUT,
NUM_GUN_OPTIONS,
};
// Timed turns setting (Multiplayer exclusive)
enum
{
GIO_NO_TIMED_TURNS,
GIO_TIMED_TURNS,
GIO_NUM_TIMED_TURN_OPTIONS,
};
//enum for different states of game
enum
{
GIO_NOTHING,
GIO_CANCEL,
GIO_EXIT,
GIO_IRON_MAN_MODE,
MP_LOAD
};
////////////////////////////////////////////
//
// Global Variables
//
///////////////////////////////////////////
BOOLEAN gfGIOScreenEntry = TRUE;
BOOLEAN gfGIOScreenExit = FALSE;
BOOLEAN gfReRenderGIOScreen=TRUE;
BOOLEAN gfGIOButtonsAllocated = FALSE;
UINT8 gubGameOptionScreenHandler=GIO_NOTHING;
UINT32 gubGIOExitScreen = GAME_INIT_OPTIONS_SCREEN;
UINT32 guiGIOMainBackGroundImage;
INT32 giGioMessageBox = -1;
INT8 iCurrentDifficulty;
INT8 iCurrentBRSetting;
INT8 iCurrentIMPNumberSetting;
INT8 iCurrentProgressSetting;
INT8 iCurrentInventorySetting;
INT8 iCurrentSquadSize;
UINT32 guiGIOSMALLFRAME;
// Done Button
void BtnGIODoneCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIODoneButton;
INT32 giGIODoneBtnImage;
// Cancel Button
void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIOCancelButton;
INT32 giGIOCancelBtnImage;
// MP LOAD Button
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 MPguiGIOCancelButton;
INT32 MPgiGIOCancelBtnImage;
UINT32 giGIODifficultyButton[ 2 ];
INT32 giGIODifficultyButtonImage[ 2 ];
void BtnGIODifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOIMPNumberButton[ 2 ];
INT32 giGIOIMPNumberButtonImage[ 2 ];
void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOBRSettingButton[ 2 ];
INT32 giGIOBRSettingButtonImage[ 2 ];
void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOProgressSettingButton[ 2 ];
INT32 giGIOProgressSettingButtonImage[ 2 ];
void BtnGIOProgressSettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOProgressSettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOInventorySettingButton [ 2 ];
INT32 giGIOInventorySettingButtonImage [ 2 ];
void BtnGIOInventorySettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOInventorySettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 guiTraitsOptionTogglesImage[ NUM_TRAIT_OPTIONS ];
UINT32 guiTraitsOptionToggles[ NUM_TRAIT_OPTIONS ];
void BtnGIOOldTraitsCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIONewTraitsCallback(GUI_BUTTON *btn,INT32 reason);
void NewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue );
//checkbox to toggle Game style
UINT32 guiGameTextTogglesImage[ NUM_TEXT_STYLES ];
UINT32 guiGameTextToggles[ NUM_TEXT_STYLES ];
UINT32 guiGameStyleTogglesImage[ NUM_GAME_STYLES ];
UINT32 guiGameStyleToggles[ NUM_GAME_STYLES ];
void BtnGIOOffStyleCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOOnStyleCallback(GUI_BUTTON *btn,INT32 reason);
//checkbox to toggle Save style
UINT32 guiGameSaveTogglesImage[ NUM_SAVE_OPTIONS ];
UINT32 guiGameSaveToggles[ NUM_SAVE_OPTIONS ];
void BtnGIOIronManOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOIronManOnCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiRpcOptionTogglesImage[ NUM_RPC_UB_OPTIONS ];
UINT32 guiRpcOptionToggles[ NUM_RPC_UB_OPTIONS ];
void BtnGIORpcRandomCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIORpcAllCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiDropAllOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiDropAllOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIODropAllOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIODropAllOnCallback(GUI_BUTTON *btn,INT32 reason);
//checkbox to toggle Gun options
UINT32 guiGunOptionTogglesImage[ NUM_GUN_OPTIONS ];
UINT32 guiGunOptionToggles[ NUM_GUN_OPTIONS ];
void BtnGIOGunSettingReducedCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOGunSettingToGCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 giGIOSquadSizeButton[ 2 ];
INT32 giGIOSquadSizeButtonImage[ 2 ];
void BtnGIOSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
// Inventory AP
UINT32 guiInventoryAPOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiInventoryAPOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOInventoryAPOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOInventoryAPOnCallback(GUI_BUTTON *btn,INT32 reason);
// NCTH
UINT32 guiNCTHOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiNCTHOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIONCTHOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIONCTHOnCallback(GUI_BUTTON *btn,INT32 reason);
// IIS
UINT32 guiImprovedInterruptOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiImprovedInterruptOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOImprovedInterruptOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOImprovedInterruptOnCallback(GUI_BUTTON *btn,INT32 reason);
// Overheating
UINT32 guiOverheatingOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiOverheatingOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOOverheatingOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOOverheatingOnCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiTimedTurnToggles[ GIO_NUM_TIMED_TURN_OPTIONS ];
void BtnTimedTurnsTogglesCallback(GUI_BUTTON *btn,INT32 reason);
void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY);
////////////////////////////////////////////
//
// Local Function Prototypes
//
///////////////////////////////////////////
extern void ClearMainMenu();
BOOLEAN EnterGIOScreen();
BOOLEAN ExitGIOScreen();
void HandleGIOScreen();
BOOLEAN RenderGIOScreen();
void GetGIOScreenUserInput();
UINT8 GetCurrentGunButtonSetting();
// JA2Gold: added save (iron man) button setting
UINT8 GetCurrentGameSaveButtonSetting();
UINT8 GetCurrentTextStyleButtonSetting();
// SANDRO - added following
UINT8 GetCurrentTraitsOptionButtonSetting();
UINT8 GetCurrentDropAllButtonSetting();
UINT8 GetCurrentTexAndJohnButtonSetting();
UINT8 GetCurrentInventoryAPButtonSetting();
UINT8 GetCurrentNCTHButtonSetting();
UINT8 GetCurrentIISButtonSetting();
UINT8 GetCurrentOverheatingButtonSetting();
void DoneFadeOutForExitGameInitOptionScreen( void );
void DoneFadeInForExitGameInitOptionScreen( void );
UINT8 GetCurrentTimedTurnsButtonSetting();
BOOLEAN DoGioMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DisplayMessageToUserAboutGameDifficulty();
void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue );
BOOLEAN DisplayMessageToUserAboutIronManMode();
BOOLEAN DisplayMessageToUserAboutOIVandNASincompatibility();
void ConfirmGioIronManMessageBoxCallBack( UINT8 bExitValue );
BOOLEAN SpIniExists()
{
BOOLEAN exists = TRUE;
if(!getVFS()->fileExists(JA2SP_INI_FILENAME))
exists = FALSE;
return exists;
}
UINT32 GameInitOptionsScreenInit( void )
{
memset( &gGameOptions, 0, sizeof( GAME_OPTIONS ) );
// WANNE: Read initial game settings from ja2_sp.ini
vfs::PropertyContainer props;
if (SpIniExists())
props.initFromIniFile(JA2SP_INI_FILENAME);
// Difficulty Level (Default: Experienced = 1)
gGameOptions.ubDifficultyLevel = ((UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_DIFFICULTY_LEVEL, 1)) + 1;
// Bobby Ray's Selection (Default: Great = 1)
UINT8 ubBobbyRay = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_SELECTION, 1);
switch (ubBobbyRay)
{
// Normal
case 0:
gGameOptions.ubBobbyRay = BR_GOOD;
break;
// Great
case 1:
gGameOptions.ubBobbyRay = BR_GREAT;
break;
// Excellent
case 2:
gGameOptions.ubBobbyRay = BR_EXCELLENT;
break;
// Awesome
case 3:
gGameOptions.ubBobbyRay = BR_AWESOME;
break;
}
// Max. IMP Characters
UINT8 maxIMPCharacterCount = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_MAX_IMP_CHARACTERS, 1);
gGameOptions.ubMaxIMPCharacters = min( (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount), ( max( 1, maxIMPCharacterCount) ));
// Progress Speed of Item Choices (Default: Normal)
gGameOptions.ubProgressSpeedOfItemsChoices = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES, ITEM_PROGRESS_NORMAL);
// Skill Traits
UINT8 ubTraitSystem = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_SKILL_TRAITS, 0);
if (!gGameExternalOptions.fReadProfileDataFromXML)
ubTraitSystem = 0;
gGameOptions.fNewTraitSystem = ubTraitSystem;
// Inventory Attachments (Default: New/New = 2)
UINT8 ubInventoryAttachmentSystem = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_INVENTORY_ATTACHMENTS, 0);
// NIV is not allowed
if (!IsNIVModeValid(true))
ubInventoryAttachmentSystem = 0;
switch (ubInventoryAttachmentSystem)
{
// Old / Old
case 0:
gGameOptions.ubInventorySystem = INVENTORY_OLD;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
// New / Old
case 1:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
// New / New
case 2:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_NEW;
break;
}
// Game Style (Default: Sci Fi = 1)
gGameOptions.ubGameStyle = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_GAME_STYLE, STYLE_SCIFI);
// Enemies Drop All Items (Default: Off = 0)
gGameOptions.fEnemiesDropAllItems = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_ENEMIES_DROP_ALL_ITEMS, 0);
// Extra Difficulty (Default: Save Anytime = 0)
gGameOptions.fIronManMode = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_EXTRA_DIFFICULTY, 0);
// Available Arsenal (Default: Tons of Guns = 1)
gGameOptions.fGunNut = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_AVAILABLE_ARSENAL, 1);
// tex and john
gGameUBOptions.fTexAndJohn = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_UB_RPC_TEX_AND_JOHN, 0);
// Random Manuel Text
gGameUBOptions.fRandomManuelText = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_UB_RANDOM_MANUEL_TEXT, 0);
// Squad size (Default: 6)
UINT8 ubSquadSize = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_SQUAD_SIZE, 6);
if (iResolution >= _640x480 && iResolution < _800x600)
ubSquadSize = 6;
gGameOptions.ubSquadSize = ubSquadSize;
//Inventory AP Costs
gGameOptions.fInventoryCostsAP = FALSE;
gGameOptions.fUseNCTH = FALSE;
gGameOptions.fImprovedInterruptSystem = FALSE;
gGameOptions.fWeaponOverheating = FALSE;
gGameOptions.fAirStrikes = FALSE;
gGameOptions.fTurnTimeLimit = FALSE;
return (1);
}
UINT32 GameInitOptionsScreenHandle( void )
{
StartFrameBufferRender();
if( gfGIOScreenEntry )
{
GameInitOptionsScreenInit();
EnterGIOScreen();
gfGIOScreenEntry = FALSE;
gfGIOScreenExit = FALSE;
InvalidateRegion( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
}
GetGIOScreenUserInput();
HandleGIOScreen();
// render buttons marked dirty
MarkButtonsDirty( );
RenderButtons( );
ExecuteBaseDirtyRectQueue();
EndFrameBufferRender();
if ( HandleFadeOutCallback( ) )
{
ClearMainMenu();
return( gubGIOExitScreen );
}
if ( HandleBeginFadeOut( gubGIOExitScreen ) )
{
return( gubGIOExitScreen );
}
if( gfGIOScreenExit )
{
ExitGIOScreen();
}
if ( HandleFadeInCallback( ) )
{
// Re-render the scene!
RenderGIOScreen();
}
if ( HandleBeginFadeIn( gubGIOExitScreen ) )
{
}
return( gubGIOExitScreen );
}
UINT32 GameInitOptionsScreenShutdown( void )
{
return( 1 );
}
BOOLEAN EnterGIOScreen()
{
VOBJECT_DESC VObjectDesc, VObjectDesc2;
if( gfGIOButtonsAllocated )
return( TRUE );
SetCurrentCursorFromDatabase( CURSOR_NORMAL );
// load the Main trade screen backgroiund image
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
if (iResolution >= _640x480 && iResolution < _800x600)
FilenameForBPP("INTERFACE\\OptionsScreenBackGround.sti", VObjectDesc.ImageFile);
else if (iResolution < _1024x768)
FilenameForBPP("INTERFACE\\OptionsScreenBackGround_800x600.sti", VObjectDesc.ImageFile);
else
FilenameForBPP("INTERFACE\\OptionsScreenBackGround_1024x768.sti", VObjectDesc.ImageFile);
CHECKF(AddVideoObject(&VObjectDesc, &guiGIOMainBackGroundImage ));
VObjectDesc2.fCreateFlags=VOBJECT_CREATE_FROMFILE;
FilenameForBPP("INTERFACE\\GIOSmallFrame.sti", VObjectDesc2.ImageFile);
CHECKF(AddVideoObject(&VObjectDesc2, &guiGIOSMALLFRAME));
//Ok button
giGIODoneBtnImage = LoadButtonImage("INTERFACE\\PreferencesButtons.sti", -1,0,-1,2,-1 );
guiGIODoneButton = CreateIconAndTextButton( giGIODoneBtnImage, gzGIOScreenText[GIO_START_TEXT], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_BTN_START_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODoneCallback);
SpecifyButtonSoundScheme( guiGIODoneButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyDisabledButtonStyle( guiGIODoneButton, DISABLED_STYLE_NONE );
//Cancel button
giGIOCancelBtnImage = UseLoadedButtonImage( giGIODoneBtnImage, -1,1,-1,3,-1 );
guiGIOCancelButton = CreateIconAndTextButton( giGIOCancelBtnImage, gzGIOScreenText[GIO_CANCEL_TEXT], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_CANCEL_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOCancelCallback );
SpecifyButtonSoundScheme( guiGIOCancelButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DIFFICULTY SETTING
giGIODifficultyButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
giGIODifficultyButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIODifficultyButton[ 0 ] = QuickCreateButton( giGIODifficultyButtonImage[ 0 ], GIO_DIF_SETTING_X + 39, GIO_DIF_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIODifficultySelectionLeftCallback );
// right button - increment difficulty level
giGIODifficultyButton[ 1 ] = QuickCreateButton( giGIODifficultyButtonImage[ 1 ], GIO_DIF_SETTING_X + 158, GIO_DIF_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIODifficultySelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIODifficultyButton[0],0, 0 );
MSYS_SetBtnUserData(giGIODifficultyButton[1],0, 1 );
iCurrentDifficulty = max( 0, gGameOptions.ubDifficultyLevel - 1);
///////////////////////////////////////////////////////////////////////////////////////////////////////
// MAX IMP NUMBER SETTING
giGIOIMPNumberButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ],-1,0,-1,1,-1 );
giGIOIMPNumberButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ],-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOIMPNumberButton[ 0 ] = QuickCreateButton( giGIOIMPNumberButtonImage[ 0 ], GIO_IMP_SETTING_X + 39, GIO_IMP_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOIMPNumberSelectionLeftCallback );
// right button - increment difficulty level
giGIOIMPNumberButton[ 1 ] = QuickCreateButton( giGIOIMPNumberButtonImage[ 1 ], GIO_IMP_SETTING_X + 158, GIO_IMP_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOIMPNumberSelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOIMPNumberButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOIMPNumberButton[1],0, 1 );
iCurrentIMPNumberSetting = gGameOptions.ubMaxIMPCharacters;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OLD/NEW TARITS SETTING
guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
guiTraitsOptionToggles[ GIO_TRAITS_OLD ] = CreateIconAndTextButton( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], gzGIOScreenText[ GIO_TRAITS_OLD_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TRAITS_SETTING_X + 74), (GIO_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOldTraitsCallback);
guiTraitsOptionTogglesImage[ GIO_TRAITS_NEW ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiTraitsOptionToggles[ GIO_TRAITS_NEW ] = CreateIconAndTextButton( guiTraitsOptionTogglesImage[ GIO_TRAITS_NEW ], gzGIOScreenText[ GIO_TRAITS_NEW_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONewTraitsCallback );
SpecifyButtonSoundScheme( guiTraitsOptionToggles[ GIO_TRAITS_OLD ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiTraitsOptionToggles[ GIO_TRAITS_OLD ],0, 0 );
MSYS_SetBtnUserData(guiTraitsOptionToggles[ GIO_TRAITS_NEW ],0, 1 );
if( gGameOptions.fNewTraitSystem )
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_NEW ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_OLD ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// GAME SETTING ( realistic, sci fi )
guiGameTextTogglesImage[ GIO_TEXT_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameTextToggles[ GIO_TEXT_OFF ] = CreateIconAndTextButton( guiGameTextTogglesImage[ GIO_TEXT_OFF ], gzGIOScreenText[ GIO_REALISTIC_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GAME_SETTING_X + 74), (GIO_GAME_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOffStyleCallback);
guiGameTextTogglesImage[ GIO_TEXT_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameTextToggles[ GIO_TEXT_ON ] = CreateIconAndTextButton( guiGameTextTogglesImage[ GIO_TEXT_ON ], gzGIOScreenText[ GIO_SCI_FI_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOnStyleCallback );
SpecifyButtonSoundScheme( guiGameTextToggles[ GIO_TEXT_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGameTextToggles[ GIO_TEXT_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGameTextToggles[ GIO_TEXT_OFF ],0, 0 );
MSYS_SetBtnUserData(guiGameTextToggles[ GIO_TEXT_ON ],0, 1 );
if( gGameUBOptions.fRandomManuelText )
ButtonList[ guiGameTextToggles[ GIO_TEXT_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGameTextToggles[ GIO_TEXT_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// IRON MAN SETTING
guiGameSaveTogglesImage[ GIO_CAN_SAVE ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameSaveToggles[ GIO_CAN_SAVE ] = CreateIconAndTextButton( guiGameSaveTogglesImage[ GIO_CAN_SAVE ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOIronManOffCallback);
guiGameSaveTogglesImage[ GIO_IRON_MAN ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameSaveToggles[ GIO_IRON_MAN ] = CreateIconAndTextButton( guiGameSaveTogglesImage[ GIO_IRON_MAN ], gzGIOScreenText[ GIO_IRON_MAN_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IRON_MAN_SETTING_X + 74), (GIO_IRON_MAN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOIronManOnCallback );
SpecifyButtonSoundScheme( guiGameSaveToggles[ GIO_CAN_SAVE ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGameSaveToggles[ GIO_IRON_MAN ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGameSaveToggles[ GIO_CAN_SAVE ],0, 0 );
MSYS_SetBtnUserData(guiGameSaveToggles[ GIO_IRON_MAN ],0, 1 );
if( gGameOptions.fIronManMode )
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// NUMBER OF TERRORISTS SETTING
guiRpcOptionTogglesImage[ GIO_TEX_JOHN_RANDOM ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ] = CreateIconAndTextButton( guiRpcOptionTogglesImage[ GIO_TEX_JOHN_RANDOM ], gzGIOScreenText[ GIO_TERRORISTS_RANDOM_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TERRORISTS_SETTING_X), (GIO_TERRORISTS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIORpcRandomCallback);
guiRpcOptionTogglesImage[ GIO_TEX_AND_JOHN ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiRpcOptionToggles[ GIO_TEX_AND_JOHN ] = CreateIconAndTextButton( guiRpcOptionTogglesImage[ GIO_TEX_AND_JOHN ], gzGIOScreenText[ GIO_TERRORISTS_ALL_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TERRORISTS_SETTING_X + 74), (GIO_TERRORISTS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIORpcAllCallback );
SpecifyButtonSoundScheme( guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiRpcOptionToggles[ GIO_TEX_AND_JOHN ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ],0, 0 );
MSYS_SetBtnUserData(guiRpcOptionToggles[ GIO_TEX_AND_JOHN ],0, 1 );
if( gGameUBOptions.fTexAndJohn )
ButtonList[ guiRpcOptionToggles[ GIO_TEX_AND_JOHN ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// BOBBY RAY SETTING
giGIOBRSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 );
giGIOBRSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 );
// left button - decrement BR level
giGIOBRSettingButton[ 0 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 0 ], GIO_BR_SETTING_X + 39, GIO_BR_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingLeftCallback );
// right button - increment BR level
giGIOBRSettingButton[ 1 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 1 ], GIO_BR_SETTING_X + 158, GIO_BR_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOBRSettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOBRSettingButton[1],0, 1 );
// set initial value
switch ( gGameOptions.ubBobbyRay )
{
case BR_GOOD:
iCurrentBRSetting = GIO_BR_GOOD;
break;
case BR_GREAT:
iCurrentBRSetting = GIO_BR_GREAT;
break;
case BR_EXCELLENT:
iCurrentBRSetting = GIO_BR_EXCELLENT;
break;
case BR_AWESOME:
iCurrentBRSetting = GIO_BR_AWESOME;
break;
default:
iCurrentBRSetting = GIO_BR_GOOD; // optimistically assume, we have selected the normal one
break;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// ITEM PROGRESS SETTING
giGIOProgressSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 );
giGIOProgressSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 );
// left button - decrement BR level
giGIOProgressSettingButton[ 0 ] = QuickCreateButton( giGIOProgressSettingButtonImage[ 0 ], GIO_PROGRESS_SETTING_X + 39, GIO_PROGRESS_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOProgressSettingLeftCallback );
// right button - increment BR level
giGIOProgressSettingButton[ 1 ] = QuickCreateButton( giGIOProgressSettingButtonImage[ 1 ], GIO_PROGRESS_SETTING_X + 158, GIO_PROGRESS_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOProgressSettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOProgressSettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOProgressSettingButton[1],0, 1 );
// set initial value
iCurrentProgressSetting = gGameOptions.ubProgressSpeedOfItemsChoices;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OLD/NEW INVENTORY SETTING
if (IsNIVModeValid(true) == TRUE )
{
giGIOInventorySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ],-1,0,-1,1,-1 );
giGIOInventorySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ],-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOInventorySettingButton[ 0 ] = QuickCreateButton( giGIOInventorySettingButtonImage[ 0 ], GIO_INV_SETTING_X + 39, GIO_INV_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOInventorySettingLeftCallback );
// right button - increment difficulty level
giGIOInventorySettingButton[ 1 ] = QuickCreateButton( giGIOInventorySettingButtonImage[ 1 ], GIO_INV_SETTING_X + 158, GIO_INV_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOInventorySettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOInventorySettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOInventorySettingButton[1],0, 1 );
if (UsingNewInventorySystem()==true &&
UsingNewAttachmentSystem()==true)
{
iCurrentInventorySetting = GIO_INV_NEW_NAS;
}
else
{
// set initial value
switch ( gGameOptions.ubInventorySystem )
{
case INVENTORY_OLD:
iCurrentInventorySetting = GIO_INV_OLD;
break;
case INVENTORY_NEW:
iCurrentInventorySetting = GIO_INV_NEW;
break;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DROP ALL ON/OFF SETTING
guiDropAllOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiDropAllOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiDropAllOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODropAllOffCallback);
guiDropAllOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiDropAllOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiDropAllOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_DROPALL_SETTING_X + 74), (GIO_DROPALL_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODropAllOnCallback );
SpecifyButtonSoundScheme( guiDropAllOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiDropAllOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiDropAllOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiDropAllOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fEnemiesDropAllItems )
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// GUN SETTING
guiGunOptionTogglesImage[ GIO_REDUCED_GUNS ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGunOptionToggles[ GIO_REDUCED_GUNS ] = CreateIconAndTextButton( guiGunOptionTogglesImage[ GIO_REDUCED_GUNS ], gzGIOScreenText[ GIO_REDUCED_GUNS_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GUN_SETTING_X + 74), (GIO_GUN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOGunSettingReducedCallback);
guiGunOptionTogglesImage[ GIO_GUN_NUT ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGunOptionToggles[ GIO_GUN_NUT ] = CreateIconAndTextButton( guiGunOptionTogglesImage[ GIO_GUN_NUT ], gzGIOScreenText[ GIO_GUN_NUT_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOGunSettingToGCallback );
SpecifyButtonSoundScheme( guiGunOptionToggles[ GIO_REDUCED_GUNS ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGunOptionToggles[ GIO_GUN_NUT ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGunOptionToggles[ GIO_REDUCED_GUNS ],0, 0 );
MSYS_SetBtnUserData(guiGunOptionToggles[ GIO_GUN_NUT ],0, 1 );
if( gGameOptions.fGunNut )
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// SQUAD SIZE
if (iResolution > _640x480)
{
giGIOSquadSizeButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
giGIOSquadSizeButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOSquadSizeButton[ 0 ] = QuickCreateButton( giGIOSquadSizeButtonImage[ 0 ], GIO_SQUAD_SIZE_SETTING_X + 39, GIO_SQUAD_SIZE_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOSquadSizeSelectionLeftCallback );
// right button - increment difficulty level
giGIOSquadSizeButton[ 1 ] = QuickCreateButton( giGIOSquadSizeButtonImage[ 1 ], GIO_SQUAD_SIZE_SETTING_X + 158, GIO_SQUAD_SIZE_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOSquadSizeSelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOSquadSizeButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOSquadSizeButton[1],0, 1 );
switch (gGameOptions.ubSquadSize)
{
case 6:
iCurrentSquadSize = GIO_SQUAD_SIZE_6;
break;
case 8:
iCurrentSquadSize = GIO_SQUAD_SIZE_8;
break;
case 10:
iCurrentSquadSize = GIO_SQUAD_SIZE_10;
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// INVENTORY AP COST ON/OFF SETTING
guiInventoryAPOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiInventoryAPOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOInventoryAPOffCallback);
guiInventoryAPOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiInventoryAPOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_INVENTORY_AP_SETTING_X + 74), (GIO_INVENTORY_AP_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOInventoryAPOnCallback );
SpecifyButtonSoundScheme( guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiInventoryAPOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiInventoryAPOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fInventoryCostsAP )
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// NCTH ON/OFF SETTING
guiNCTHOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiNCTHOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiNCTHOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONCTHOffCallback);
guiNCTHOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiNCTHOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiNCTHOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_NCTH_SETTING_X + 74), (GIO_NCTH_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONCTHOnCallback );
SpecifyButtonSoundScheme( guiNCTHOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiNCTHOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiNCTHOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiNCTHOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fUseNCTH )
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPROVED INTERRUPT SYSTEM ON/OFF SETTING
guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOImprovedInterruptOffCallback);
guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IIS_SETTING_X + 74), (GIO_IIS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOImprovedInterruptOnCallback );
SpecifyButtonSoundScheme( guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fImprovedInterruptSystem )
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OVERHEATING WEAPONS ON/OFF SETTING
guiOverheatingOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiOverheatingOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOverheatingOffCallback);
guiOverheatingOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiOverheatingOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiOverheatingOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_OVERHEATING_SETTING_X + 74), (GIO_OVERHEATING_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOverheatingOnCallback );
SpecifyButtonSoundScheme( guiOverheatingOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiOverheatingOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiOverheatingOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiOverheatingOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fWeaponOverheating )
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
//Reset the exit screen
gubGIOExitScreen = GAME_INIT_OPTIONS_SCREEN;
//REnder the screen once so we can blt ot to ths save buffer
RenderGIOScreen();
BlitBufferToBuffer(guiRENDERBUFFER, guiSAVEBUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
gfGIOButtonsAllocated = TRUE;
return( TRUE );
}
void BtnGIODifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentDifficulty > 0 )
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentDifficulty > 0 )
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentDifficulty < 2 )
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentDifficulty < 2 )
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentBRSetting > 0 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentBRSetting > 0 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentBRSetting < 3 )
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentBRSetting < 3 )
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentIMPNumberSetting > 1 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentIMPNumberSetting > 1 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentIMPNumberSetting < (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount) )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentIMPNumberSetting < (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount) )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventorySettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentInventorySetting > GIO_INV_OLD )
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentInventorySetting > GIO_INV_OLD )
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventorySettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentInventorySetting < GIO_INV_NEW_NAS )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentInventorySetting < GIO_INV_NEW_NAS )
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOProgressSettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentProgressSetting > 0 )
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentProgressSetting > 0 )
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOProgressSettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentProgressSetting < GIO_PROGRESS_VERY_FAST )
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentProgressSetting < GIO_PROGRESS_VERY_FAST )
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOOldTraitsCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_NEW ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_OLD ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONewTraitsCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
if (!gGameExternalOptions.fReadProfileDataFromXML)
{
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_DISABLED_CLICK );
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioNewTraitsImpossibleText[0], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_OK, NewTraitsNotPossibleMessageBoxCallBack );
}
else
{
RestoreExternBackgroundRect( (GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_OLD ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_CLICKED_ON );
}
}
}
void NewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue )
{
/*if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_NOTHING;
}*/
}
void BtnGIOOffStyleCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameTextToggles[ GIO_TEXT_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameTextToggles[ GIO_TEXT_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOOnStyleCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameTextToggles[ GIO_TEXT_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameTextToggles[ GIO_TEXT_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOIronManOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_CAN_SAVE ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOIronManOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_IRON_MAN ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIORpcRandomCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_TERRORISTS_SETTING_X), (GIO_TERRORISTS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiRpcOptionToggles[ GIO_TEX_AND_JOHN ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIORpcAllCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_TERRORISTS_SETTING_X), (GIO_TERRORISTS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiRpcOptionToggles[ GIO_TEX_JOHN_RANDOM ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiRpcOptionToggles[ GIO_TEX_AND_JOHN ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIODropAllOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), 230, 40 );
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiDropAllOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIODropAllOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), 230, 40 );
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiDropAllOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOGunSettingReducedCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGunOptionToggles[ GIO_REDUCED_GUNS ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOGunSettingToGCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGunOptionToggles[ GIO_GUN_NUT ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentSquadSize > GIO_SQUAD_SIZE_6 )
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentSquadSize > GIO_SQUAD_SIZE_6 )
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
UINT8 maxSquadSize = GIO_SQUAD_SIZE_10;
if (iResolution >= _800x600 && iResolution < _1024x768)
maxSquadSize = GIO_SQUAD_SIZE_8;
if ( iCurrentSquadSize < maxSquadSize )
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
UINT8 maxSquadSize = GIO_SQUAD_SIZE_10;
if (iResolution >= _800x600 && iResolution < _1024x768)
maxSquadSize = GIO_SQUAD_SIZE_8;
if ( iCurrentSquadSize < maxSquadSize )
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventoryAPOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), 230, 40 );
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOInventoryAPOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), 230, 40 );
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiInventoryAPOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONCTHOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), 230, 40 );
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiNCTHOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONCTHOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), 230, 40 );
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiNCTHOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOImprovedInterruptOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOImprovedInterruptOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOOverheatingOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), 230, 40 );
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiOverheatingOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOOverheatingOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), 230, 40 );
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiOverheatingOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
BOOLEAN ExitGIOScreen()
{
UINT16 cnt;
if( !gfGIOButtonsAllocated )
return( TRUE );
//Delete the main options screen background
DeleteVideoObjectFromIndex( guiGIOMainBackGroundImage );
DeleteVideoObjectFromIndex( guiGIOSMALLFRAME );
// Destroy Basic buttons
RemoveButton( guiGIOCancelButton );
RemoveButton( guiGIODoneButton );
UnloadButtonImage( giGIOCancelBtnImage );
UnloadButtonImage( giGIODoneBtnImage );
// Destroy Difficulty setting buttons
RemoveButton( giGIODifficultyButton[0] );
RemoveButton( giGIODifficultyButton[1] );
UnloadButtonImage( giGIODifficultyButtonImage[0] );
UnloadButtonImage( giGIODifficultyButtonImage[1] );
// Destroy IMP Number setting buttons
RemoveButton( giGIOIMPNumberButton[0] );
RemoveButton( giGIOIMPNumberButton[1] );
UnloadButtonImage( giGIOIMPNumberButtonImage[0] );
UnloadButtonImage( giGIOIMPNumberButtonImage[1] );
// Destroy BR setting buttons
RemoveButton( giGIOBRSettingButton[0] );
RemoveButton( giGIOBRSettingButton[1] );
UnloadButtonImage( giGIOBRSettingButtonImage[0] );
UnloadButtonImage( giGIOBRSettingButtonImage[1] );
// Destroy Progress setting buttons
RemoveButton( giGIOProgressSettingButton[0] );
RemoveButton( giGIOProgressSettingButton[1] );
UnloadButtonImage( giGIOProgressSettingButtonImage[0] );
UnloadButtonImage( giGIOProgressSettingButtonImage[1] );
// Destroy Traits setting buttons
for( cnt=0; cnt<NUM_TRAIT_OPTIONS; cnt++)
{
RemoveButton( guiTraitsOptionToggles[ cnt ] );
UnloadButtonImage( guiTraitsOptionTogglesImage[ cnt ] );
}
// Destroy Game setting buttons
for( cnt=0; cnt<NUM_TEXT_STYLES; cnt++)
{
RemoveButton( guiGameTextToggles[ cnt ] );
UnloadButtonImage( guiGameTextTogglesImage[ cnt ] );
}
// Destroy Iron Man setting buttons
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{
RemoveButton( guiGameSaveToggles[ cnt ] );
UnloadButtonImage( guiGameSaveTogglesImage[ cnt ] );
}
// Destroy Terrorists setting buttons
for( cnt=0; cnt<NUM_RPC_UB_OPTIONS; cnt++)
{
RemoveButton( guiRpcOptionToggles[ cnt ] );
UnloadButtonImage( guiRpcOptionTogglesImage[ cnt ] );
}
// Destroy Inventory setting buttons
if(IsNIVModeValid(true) == TRUE)
{
// Destroy Inventory settings
RemoveButton( giGIOInventorySettingButton[0] );
RemoveButton( giGIOInventorySettingButton[1] );
UnloadButtonImage( giGIOInventorySettingButtonImage[0] );
UnloadButtonImage( giGIOInventorySettingButtonImage[1] );
}
// Destroy Drop All setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiDropAllOptionToggles[ cnt ] );
UnloadButtonImage( guiDropAllOptionTogglesImage[ cnt ] );
}
// Destroy Gun setting buttons
for( cnt=0; cnt<NUM_GUN_OPTIONS; cnt++)
{
RemoveButton( guiGunOptionToggles[ cnt ] );
UnloadButtonImage( guiGunOptionTogglesImage[ cnt ] );
}
// Destroy Squad size setting buttons
if (iResolution > _640x480)
{
RemoveButton( giGIOSquadSizeButton[0] );
RemoveButton( giGIOSquadSizeButton[1] );
UnloadButtonImage( giGIOSquadSizeButtonImage[0] );
UnloadButtonImage( giGIOSquadSizeButtonImage[1] );
}
// Destroy Inventory AP Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiInventoryAPOptionToggles[ cnt ] );
UnloadButtonImage( guiInventoryAPOptionTogglesImage[ cnt ] );
}
// Destroy NCTH Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiNCTHOptionToggles[ cnt ] );
UnloadButtonImage( guiNCTHOptionTogglesImage[ cnt ] );
}
// Destroy IIS Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiImprovedInterruptOptionToggles[ cnt ] );
UnloadButtonImage( guiImprovedInterruptOptionTogglesImage[ cnt ] );
}
// Destroy Overheating Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiOverheatingOptionToggles[ cnt ] );
UnloadButtonImage( guiOverheatingOptionTogglesImage[ cnt ] );
}
gfGIOButtonsAllocated = FALSE;
//If we are starting the game stop playing the music
if( gubGameOptionScreenHandler == GIO_EXIT )
SetMusicMode( MUSIC_NONE );
gfGIOScreenExit = FALSE;
gfGIOScreenEntry = TRUE;
return( TRUE );
}
void HandleGIOScreen()
{
if( gubGameOptionScreenHandler != GIO_NOTHING )
{
switch( gubGameOptionScreenHandler )
{
case GIO_CANCEL:
gubGIOExitScreen = MAINMENU_SCREEN;
gfGIOScreenExit = TRUE;
break;
case MP_LOAD:
gubGIOExitScreen = SAVE_LOAD_SCREEN;
gfSaveGame = FALSE;
gfGIOScreenExit = TRUE;
guiPreviousOptionScreen = GAME_INIT_OPTIONS_SCREEN;
break;
case GIO_EXIT:
{
//if we are already fading out, get out of here
if( gFadeOutDoneCallback != DoneFadeOutForExitGameInitOptionScreen )
{
//Disable the ok button
DisableButton( guiGIODoneButton );
gFadeOutDoneCallback = DoneFadeOutForExitGameInitOptionScreen;
FadeOutNextFrame( );
}
break;
}
case GIO_IRON_MAN_MODE:
DisplayMessageToUserAboutGameDifficulty();
break;
}
gubGameOptionScreenHandler = GIO_NOTHING;
}
if( gfReRenderGIOScreen )
{
RenderGIOScreen();
gfReRenderGIOScreen = FALSE;
}
}
BOOLEAN RenderGIOScreen()
{
HVOBJECT hPixHandle;
RestoreExternBackgroundRect( GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_DIF_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_IMP_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_PROGRESS_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_INV_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_SQUAD_SIZE_SETTING_Y-3, 120, 20 );
//Get the main background screen graphic and blt it
GetVideoObject(&hPixHandle, guiGIOMainBackGroundImage );
BltVideoObject(FRAME_BUFFER, hPixHandle, 0,xResOffset,yResOffset, VO_BLT_SRCTRANSPARENCY,NULL);
//Shade the background
ShadowVideoSurfaceRect( FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset, iScreenWidthOffset + 640, iScreenHeightOffset + 480 );
//Display the title
DrawTextToScreen( gzGIOScreenText[ GIO_INITIAL_GAME_SETTINGS ], GIO_MAIN_TITLE_X, GIO_MAIN_TITLE_Y, GIO_MAIN_TITLE_WIDTH, GIO_TITLE_FONT, GIO_TITLE_COLOR, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Dif Settings Title Text
RenderGIOSmallSelectionFrame( (GIO_DIF_SETTING_X + 36), (GIO_DIF_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_DIF_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_DIF_LEVEL_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_DIF_SETTING_Y+6), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentDifficulty + 9 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the IMP number Title Text
RenderGIOSmallSelectionFrame( (GIO_IMP_SETTING_X + 36), (GIO_IMP_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_IMP_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_IMP_NUMBER_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
if ( iCurrentIMPNumberSetting <= 6 )
{
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentIMPNumberSetting + 32 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
}
else
{
CHAR16 sStartLevelString[16];
swprintf(sStartLevelString, L"%i", iCurrentIMPNumberSetting );
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, sStartLevelString, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
}
// Display BR Setting texts
RenderGIOSmallSelectionFrame( (GIO_BR_SETTING_X + 36), (GIO_BR_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_SETTING_Y+6), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentBRSetting + 20 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Display Progress Setting texts
RenderGIOSmallSelectionFrame( (GIO_PROGRESS_SETTING_X + 36), (GIO_PROGRESS_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT - 6), (UINT16)(GIO_PROGRESS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_PROGRESS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_PROGRESS_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_PROGRESS_SETTING_Y+6), GIO_PROGRESS_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentProgressSetting + 49 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Old/new traits system
DisplayWrappedString( (GIO_TRAITS_SETTING_X - 6), (UINT16)(GIO_TRAITS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_TRAITS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_TRAITS_TEXT], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Game Settings Title Text
DisplayWrappedString( (GIO_GAME_SETTING_X - 6), (UINT16)(GIO_GAME_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_GAME_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// JA2Gold: Display the iron man Settings Title Text
DisplayWrappedString( (GIO_IRON_MAN_SETTING_X - 6), (UINT16)(GIO_IRON_MAN_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_IRON_MAN_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Terrorists Settings Title Text
DisplayWrappedString( (GIO_TERRORISTS_SETTING_X - 6), (UINT16)(GIO_TERRORISTS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_TERRORISTS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_TERRORISTS_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Display Inventory Settings text
RenderGIOSmallSelectionFrame( (GIO_INV_SETTING_X + 36), (GIO_INV_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_INV_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_INV_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_INV_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_INV_SETTING_Y+5), GIO_INV_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentInventorySetting + 54 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Drop All Settings Title Text
DisplayWrappedString( (GIO_DROPALL_SETTING_X - 6), (UINT16)(GIO_DROPALL_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_DROPALL_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_DROPALL_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Gun Settings Title Text
DisplayWrappedString( (GIO_GUN_SETTING_X - 6), (UINT16)(GIO_GUN_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_GUN_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Squad size Title Text
RenderGIOSmallSelectionFrame( (GIO_SQUAD_SIZE_SETTING_X + 36), (GIO_SQUAD_SIZE_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_SQUAD_SIZE_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_SQUAD_SIZE_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_SQUAD_SIZE_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_SQUAD_SIZE_SETTING_Y+6), GIO_SQUAD_SIZE_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentSquadSize + (GIO_SQUAD_SIZE_TITLE_TEXT + 1) ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Inventory AP Cost Settings Title Text
DisplayWrappedString( (GIO_INVENTORY_AP_SETTING_X - 6), (UINT16)(GIO_INVENTORY_AP_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_INVENTORY_AP_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_INVENTORY_AP_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the NCTH Settings Title Text
DisplayWrappedString( (GIO_NCTH_SETTING_X - 6), (UINT16)(GIO_NCTH_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_NCTH_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_NCTH_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Improved Interrupt System Settings Title Text
DisplayWrappedString( (GIO_IIS_SETTING_X - 6), (UINT16)(GIO_IIS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_IIS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_IIS_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Weapon Overheating Settings Title Text
DisplayWrappedString( (GIO_OVERHEATING_SETTING_X - 6), (UINT16)(GIO_OVERHEATING_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_OVERHEATING_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_OVERHEATING_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
return( TRUE );
}
void GetGIOScreenUserInput()
{
InputAtom Event;
while (DequeueSpecificEvent(&Event, KEY_DOWN|KEY_UP|KEY_REPEAT))
{
if( Event.usEvent == KEY_DOWN )
{
switch( Event.usParam )
{
case ESC:
//Exit out of the screen
gubGameOptionScreenHandler = GIO_CANCEL;
break;
#ifdef JA2TESTVERSION
case 'r':
gfReRenderGIOScreen=TRUE;
break;
case 'i':
InvalidateRegion( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
break;
#endif
case ENTER:
gubGameOptionScreenHandler = GIO_EXIT;
break;
}
}
}
}
void BtnGIODoneCallback(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 );
//if the user doesnt have IRON MAN mode selected
if( !DisplayMessageToUserAboutIronManMode() )
{
//Confirm the difficulty setting
DisplayMessageToUserAboutGameDifficulty();
}
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
void BtnGIOCancelCallback(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_CANCEL;
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 )
{
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 = MP_LOAD;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
UINT8 GetCurrentTraitsOptionButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_TRAIT_OPTIONS; cnt++)
{
if( ButtonList[ guiTraitsOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentTextStyleButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_TEXT_STYLES; cnt++)
{
if( ButtonList[ guiGameTextToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentGameSaveButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{
if( ButtonList[ guiGameSaveToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentTexAndJohnButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_RPC_UB_OPTIONS; cnt++)
{
if( ButtonList[ guiRpcOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentDropAllButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_GAME_STYLES; cnt++)
{
if( ButtonList[ guiDropAllOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentGunButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_GUN_OPTIONS; cnt++)
{
if( ButtonList[ guiGunOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentTimedTurnsButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_TIMED_TURN_OPTIONS; cnt++)
{
if( ButtonList[ guiTimedTurnToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentInventoryAPButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiInventoryAPOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentNCTHButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiNCTHOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentIISButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiImprovedInterruptOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentOverheatingButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiOverheatingOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
void DoneFadeOutForExitGameInitOptionScreen( void )
{
// loop through and get the status of all the buttons
gGameOptions.fGunNut = GetCurrentGunButtonSetting();
gGameOptions.ubGameStyle = FALSE;
gGameUBOptions.fRandomManuelText = GetCurrentTextStyleButtonSetting();
gGameOptions.ubDifficultyLevel = min( NUM_DIFF_SETTINGS-1, ( max( 1, (iCurrentDifficulty + 1)) ));
gGameOptions.fTurnTimeLimit = FALSE;
// iron man
gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting();
switch ( iCurrentBRSetting )
{
case GIO_BR_GOOD:
gGameOptions.ubBobbyRay = BR_GOOD;
break;
case GIO_BR_GREAT:
gGameOptions.ubBobbyRay = BR_GREAT;
break;
case GIO_BR_EXCELLENT:
gGameOptions.ubBobbyRay = BR_EXCELLENT;
break;
case GIO_BR_AWESOME:
gGameOptions.ubBobbyRay = BR_AWESOME;
break;
}
// CHRISL:
if(IsNIVModeValid(true) == TRUE)
{
switch ( iCurrentInventorySetting)
{
case GIO_INV_OLD:
gGameOptions.ubInventorySystem = INVENTORY_OLD;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
case GIO_INV_NEW:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
case GIO_INV_NEW_NAS:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_NEW;
}
}
// Squad size
switch (iCurrentSquadSize)
{
case GIO_SQUAD_SIZE_6:
gGameOptions.ubSquadSize = 6;
break;
case GIO_SQUAD_SIZE_8:
gGameOptions.ubSquadSize = 8;
break;
case GIO_SQUAD_SIZE_10:
gGameOptions.ubSquadSize = 10;
break;
}
// WANNE: Not needed
/*if (gGameOptions.ubSquadSize > 6)
gGameExternalOptions.ubGameMaximumNumberOfPlayerMercs = gGameOptions.ubSquadSize;*/
// SANDRO - added following:
gGameOptions.ubMaxIMPCharacters = min( (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount), ( max( 1, iCurrentIMPNumberSetting) ));
gGameOptions.fNewTraitSystem = GetCurrentTraitsOptionButtonSetting();
gGameUBOptions.fTexAndJohn = GetCurrentTexAndJohnButtonSetting();
gGameOptions.fEnemiesDropAllItems = GetCurrentDropAllButtonSetting();
gGameOptions.ubProgressSpeedOfItemsChoices = min( GIO_PROGRESS_VERY_FAST, iCurrentProgressSetting );
gGameOptions.fInventoryCostsAP = GetCurrentInventoryAPButtonSetting();
gGameOptions.fUseNCTH = GetCurrentNCTHButtonSetting();
gGameOptions.fImprovedInterruptSystem = GetCurrentIISButtonSetting();
gGameOptions.fWeaponOverheating = GetCurrentOverheatingButtonSetting();
gubGIOExitScreen = INIT_SCREEN;
//set the fact that we should do the intro videos
// gbIntroScreenMode = INTRO_BEGINNING;
#ifdef JA2TESTVERSION
if( gfKeyState[ ALT ] )
{
if( gfKeyState[ CTRL ] )
{
gMercProfiles[ MIGUEL ].bMercStatus = MERC_IS_DEAD;
gMercProfiles[ SKYRIDER ].bMercStatus = MERC_IS_DEAD;
}
SetIntroType( INTRO_ENDING );
}
else
#endif
ExitGIOScreen();
gFadeInDoneCallback = DoneFadeInForExitGameInitOptionScreen;
FadeInNextFrame( );
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
}
void DoneFadeInForExitGameInitOptionScreen( void )
{
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
}
BOOLEAN DoGioMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback )
{
SGPRect CenteringRect= {0 + xResOffset, 0, SCREEN_WIDTH - xResOffset, SCREEN_HEIGHT };
// do message box and return
giGioMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT16 ) ( usFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, &CenteringRect );
// send back return state
return( ( giGioMessageBox != -1 ) );
}
void DisplayMessageToUserAboutGameDifficulty()
{
UINT8 ubDiffLevel = iCurrentDifficulty;
switch( ubDiffLevel )
{
case 0:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_NOVICE], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 1:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_EXPERIENCED], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 2:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_EXPERT], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 3:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_INSANE], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
}
}
void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue )
{
if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_EXIT;
}
}
BOOLEAN DisplayMessageToUserAboutIronManMode()
{
// Madd
UINT8 ubIronManMode = GetCurrentGameSaveButtonSetting(); //FALSE;
//if the user has selected IRON MAN mode
if( ubIronManMode )
{
DoGioMessageBox( MSG_BOX_BASIC_STYLE, gzIronManModeWarningText[ IMM__IRON_MAN_MODE_WARNING_TEXT ], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioIronManMessageBoxCallBack );
return( TRUE );
}
return( FALSE );
}
void ConfirmGioIronManMessageBoxCallBack( UINT8 bExitValue )
{
if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_IRON_MAN_MODE;
}
else
{
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON;
}
}
void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY)
{
HVOBJECT hHandle;
// get the video object
GetVideoObject(&hHandle, guiGIOSMALLFRAME);
// blt to sX, sY relative to upper left corner
BltVideoObject(FRAME_BUFFER, hHandle, 0, sX, sY , VO_BLT_SRCTRANSPARENCY,NULL);
return;
}
#else
// *********************************
// JA2 - 1.13: Initial Game Screen
// *********************************
//////////////////////////////////////////////////////////////
// SANDRO - the start-new-game screen has been changed a lot
//////////////////////////////////////////////////////////////
////////////////////////////////////////////
//
// Global Defines
//
///////////////////////////////////////////
#define GIO_TITLE_FONT FONT14ARIAL
#define GIO_TITLE_COLOR FONT_MCOLOR_WHITE
#define GIO_TOGGLE_TEXT_FONT FONT10ARIAL
#define GIO_TOGGLE_TEXT_COLOR FONT_MCOLOR_WHITE
//buttons
#define GIO_CANCEL_X iScreenWidthOffset + ((320 - 115) / 2)
#define GIO_BTN_START_X iScreenWidthOffset + 320 + 105
#define GIO_BTN_START_Y iScreenHeightOffset + 435
//main title
#define GIO_MAIN_TITLE_X 0
#define GIO_MAIN_TITLE_Y iScreenHeightOffset + 10
#define GIO_MAIN_TITLE_WIDTH SCREEN_WIDTH
//radio box locations
#define GIO_GAP_BN_SETTINGS 35
#define GIO_OFFSET_TO_TEXT 36
#define GIO_OFFSET_TO_TOGGLE_BOX 180
#define GIO_OFFSET_TO_TOGGLE_BOX_Y 9
#define GIO_TITLE_DISTANCE 30 // higher means closer
// ---------------------------------
// Y-Offset for Combo-Controls
#define COMBO_Y_OFFSET 63
// Y-Offset for Check-Controls
#define CHECK_Y_OFFSET 50
#define CORRECTION_Y_OFFSET (COMBO_Y_OFFSET - CHECK_Y_OFFSET)
// X-Offset for Checkbox-Controls
#define CHECK_X_OFFSET 36
#define COMBO_X_OFFSET 0
#define CHECK_WIDTH (GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT)
#define COMBO_WIDTH (GIO_OFFSET_TO_TOGGLE_BOX - GIO_OFFSET_TO_TEXT)
/*********************************
FIRST COLUMN
**********************************/
#define FIRST_COLUMN_X iScreenWidthOffset + 10
#define FIRST_COLUMN_Y iScreenHeightOffset + 75
#define GIO_DIF_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
#define GIO_DIF_SETTING_Y FIRST_COLUMN_Y
#define GIO_DIF_SETTING_WIDTH COMBO_WIDTH
#define GIO_IMP_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
#define GIO_IMP_SETTING_Y GIO_DIF_SETTING_Y + COMBO_Y_OFFSET
#define GIO_IMP_SETTING_WIDTH COMBO_WIDTH
#define GIO_TRAITS_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_TRAITS_SETTING_Y GIO_IMP_SETTING_Y + CHECK_Y_OFFSET
#define GIO_TRAITS_SETTING_WIDTH CHECK_WIDTH
#define GIO_GAME_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_GAME_SETTING_Y GIO_TRAITS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_GAME_SETTING_WIDTH CHECK_WIDTH
#define GIO_IRON_MAN_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
#define GIO_IRON_MAN_SETTING_Y GIO_GAME_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_IRON_MAN_SETTING_WIDTH CHECK_WIDTH
/*********************************
SECOND COLUMN
**********************************/
#define SECOND_COLUMN_X iScreenWidthOffset + 210
#define SECOND_COLUMN_Y FIRST_COLUMN_Y
#define GIO_INV_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
#define GIO_INV_SETTING_Y SECOND_COLUMN_Y
#define GIO_INV_SETTING_WIDTH COMBO_WIDTH
#define GIO_PROGRESS_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
#define GIO_PROGRESS_SETTING_Y GIO_INV_SETTING_Y + COMBO_Y_OFFSET
#define GIO_PROGRESS_SETTING_WIDTH COMBO_WIDTH
#define GIO_GUN_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_GUN_SETTING_Y GIO_PROGRESS_SETTING_Y + CHECK_Y_OFFSET
#define GIO_GUN_SETTING_WIDTH CHECK_WIDTH
#define GIO_DROPALL_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_DROPALL_SETTING_Y GIO_GUN_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_DROPALL_SETTING_WIDTH CHECK_WIDTH
#define GIO_OVERHEATING_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
#define GIO_OVERHEATING_SETTING_Y GIO_DROPALL_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_OVERHEATING_SETTING_WIDTH CHECK_WIDTH
/*********************************
THIRD COLUMN
**********************************/
#define THIRD_COLUMN_X iScreenWidthOffset + 413
#define THIRD_COLUMN_Y FIRST_COLUMN_Y
#define GIO_SQUAD_SIZE_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
#define GIO_SQUAD_SIZE_SETTING_Y THIRD_COLUMN_Y
#define GIO_SQUAD_SIZE_SETTING_WIDTH COMBO_WIDTH
#define GIO_BR_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
#define GIO_BR_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET
#define GIO_BR_SETTING_WIDTH COMBO_WIDTH
#define GIO_NCTH_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_NCTH_SETTING_Y GIO_BR_SETTING_Y + CHECK_Y_OFFSET
#define GIO_NCTH_SETTING_WIDTH CHECK_WIDTH
#define GIO_IIS_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_IIS_SETTING_Y GIO_NCTH_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_IIS_SETTING_WIDTH CHECK_WIDTH
#define GIO_INVENTORY_AP_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
#define GIO_INVENTORY_AP_SETTING_Y GIO_IIS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
#define GIO_INVENTORY_AP_SETTING_WIDTH CHECK_WIDTH
// INI File
#define JA2SP_INI_FILENAME "ja2_sp.ini"
// INI Section
#define JA2SP_INI_INITIAL_SECTION "JA2 Singleplayer Initial Settings"
// INI Properties
#define JA2SP_DIFFICULTY_LEVEL "DIFFICULTY_LEVEL"
#define JA2SP_BOBBY_RAY_SELECTION "BOBBY_RAY_SELECTION"
#define JA2SP_MAX_IMP_CHARACTERS "MAX_IMP_CHARACTERS"
#define JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES "PROGRESS_SPEED_OF_ITEM_CHOICES"
#define JA2SP_SKILL_TRAITS "SKILL_TRAITS"
#define JA2SP_INVENTORY_ATTACHMENTS "INVENTORY_ATTACHMENTS"
#define JA2SP_GAME_STYLE "GAME_STYLE"
#define JA2SP_ENEMIES_DROP_ALL_ITEMS "ENEMIES_DROP_ALL_ITEMS"
#define JA2SP_EXTRA_DIFFICULTY "EXTRA_DIFFICULTY"
#define JA2SP_AVAILABLE_ARSENAL "AVAILABLE_ARSENAL"
//#define JA2SP_NUMBER_OF_TERRORISTS "NUMBER_OF_TERRORISTS"
//#define JA2SP_SECRET_WEAPON_CACHES "SECRET_WEAPON_CACHES"
#define JA2SP_SQUAD_SIZE "SQUAD_SIZE"
//#define JA2SP_FAST_BR "FAST_BOBBY_RAY"
#define JA2SP_INVENTORY_AP "INVENTORY_USE_AP"
#define JA2SP_USE_NCTH "USE_NCTH"
#define JA2SP_USE_IIS "IMPROVED_INTERRUPT_SYSTEM"
#define JA2SP_OVERHEATING "WEAPON_OVERHEATING"
//Difficulty settings
enum
{
GIO_DIFF_EASY,
GIO_DIFF_MED,
GIO_DIFF_HARD,
GIO_DIFF_INSANE,
NUM_DIFF_SETTINGS,
};
enum
{
GIO_TRAITS_OLD,
GIO_TRAITS_NEW,
NUM_TRAIT_OPTIONS,
};
// Game Settings options
enum
{
GIO_REALISTIC,
GIO_SCI_FI,
NUM_GAME_STYLES,
};
// Iron man mode
enum
{
GIO_CAN_SAVE,
GIO_IRON_MAN,
NUM_SAVE_OPTIONS,
};
// BR options
enum
{
GIO_BR_GOOD,
GIO_BR_GREAT,
GIO_BR_EXCELLENT,
GIO_BR_AWESOME,
NUM_BR_OPTIONS,
};
enum
{
GIO_PROGRESS_VERY_SLOW,
GIO_PROGRESS_SLOW,
GIO_PROGRESS_NORMAL,
GIO_PROGRESS_FAST,
GIO_PROGRESS_VERY_FAST,
NUM_PROGRESS_OPTIONS,
};
// New inventory options
enum
{
GIO_INV_OLD,
GIO_INV_NEW,
GIO_INV_NEW_NAS, // WANNE: Added NAS to the start new game screen
NUM_INV_OPTIONS,
};
enum
{
GIO_SQUAD_SIZE_6,
GIO_SQUAD_SIZE_8,
GIO_SQUAD_SIZE_10,
NUM_SQUAD_SIZE_OPTIONS,
};
enum
{
GIO_BUTTON_OFF,
GIO_BUTTON_ON,
GIO_NUM_ONOFF_BUTTONS,
};
// Gun options
enum
{
GIO_REDUCED_GUNS,
GIO_GUN_NUT,
NUM_GUN_OPTIONS,
};
// Timed turns setting (Multiplayer exclusive)
enum
{
GIO_NO_TIMED_TURNS,
GIO_TIMED_TURNS,
GIO_NUM_TIMED_TURN_OPTIONS,
};
//enum for different states of game
enum
{
GIO_NOTHING,
GIO_CANCEL,
GIO_EXIT,
GIO_IRON_MAN_MODE,
MP_LOAD
};
////////////////////////////////////////////
//
// Global Variables
//
///////////////////////////////////////////
BOOLEAN gfGIOScreenEntry = TRUE;
BOOLEAN gfGIOScreenExit = FALSE;
BOOLEAN gfReRenderGIOScreen=TRUE;
BOOLEAN gfGIOButtonsAllocated = FALSE;
UINT8 gubGameOptionScreenHandler=GIO_NOTHING;
UINT32 gubGIOExitScreen = GAME_INIT_OPTIONS_SCREEN;
UINT32 guiGIOMainBackGroundImage;
INT32 giGioMessageBox = -1;
INT8 iCurrentDifficulty;
INT8 iCurrentBRSetting;
INT8 iCurrentIMPNumberSetting;
INT8 iCurrentProgressSetting;
INT8 iCurrentInventorySetting;
INT8 iCurrentSquadSize;
UINT32 guiGIOSMALLFRAME;
// Done Button
void BtnGIODoneCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIODoneButton;
INT32 giGIODoneBtnImage;
// Cancel Button
void BtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiGIOCancelButton;
INT32 giGIOCancelBtnImage;
// MP LOAD Button
void MPBtnGIOCancelCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 MPguiGIOCancelButton;
INT32 MPgiGIOCancelBtnImage;
UINT32 giGIODifficultyButton[ 2 ];
INT32 giGIODifficultyButtonImage[ 2 ];
void BtnGIODifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOIMPNumberButton[ 2 ];
INT32 giGIOIMPNumberButtonImage[ 2 ];
void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOBRSettingButton[ 2 ];
INT32 giGIOBRSettingButtonImage[ 2 ];
void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOProgressSettingButton[ 2 ];
INT32 giGIOProgressSettingButtonImage[ 2 ];
void BtnGIOProgressSettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOProgressSettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 giGIOInventorySettingButton [ 2 ];
INT32 giGIOInventorySettingButtonImage [ 2 ];
void BtnGIOInventorySettingLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOInventorySettingRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 guiTraitsOptionTogglesImage[ NUM_TRAIT_OPTIONS ];
UINT32 guiTraitsOptionToggles[ NUM_TRAIT_OPTIONS ];
void BtnGIOOldTraitsCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIONewTraitsCallback(GUI_BUTTON *btn,INT32 reason);
void NewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue );
//checkbox to toggle Game style
UINT32 guiGameStyleTogglesImage[ NUM_GAME_STYLES ];
UINT32 guiGameStyleToggles[ NUM_GAME_STYLES ];
void BtnGIORealisticStyleCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOScifiStyleCallback(GUI_BUTTON *btn,INT32 reason);
//checkbox to toggle Save style
UINT32 guiGameSaveTogglesImage[ NUM_SAVE_OPTIONS ];
UINT32 guiGameSaveToggles[ NUM_SAVE_OPTIONS ];
void BtnGIOIronManOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOIronManOnCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiDropAllOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiDropAllOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIODropAllOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIODropAllOnCallback(GUI_BUTTON *btn,INT32 reason);
//checkbox to toggle Gun options
UINT32 guiGunOptionTogglesImage[ NUM_GUN_OPTIONS ];
UINT32 guiGunOptionToggles[ NUM_GUN_OPTIONS ];
void BtnGIOGunSettingReducedCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOGunSettingToGCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 giGIOSquadSizeButton[ 2 ];
INT32 giGIOSquadSizeButtonImage[ 2 ];
void BtnGIOSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
void BtnGIOSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
UINT32 guiInventoryAPOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiInventoryAPOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOInventoryAPOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOInventoryAPOnCallback(GUI_BUTTON *btn,INT32 reason);
// NCTH
UINT32 guiNCTHOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiNCTHOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIONCTHOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIONCTHOnCallback(GUI_BUTTON *btn,INT32 reason);
// IIS
UINT32 guiImprovedInterruptOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiImprovedInterruptOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOImprovedInterruptOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOImprovedInterruptOnCallback(GUI_BUTTON *btn,INT32 reason);
// Overheating
UINT32 guiOverheatingOptionTogglesImage[ GIO_NUM_ONOFF_BUTTONS ];
UINT32 guiOverheatingOptionToggles[ GIO_NUM_ONOFF_BUTTONS ];
void BtnGIOOverheatingOffCallback(GUI_BUTTON *btn,INT32 reason);
void BtnGIOOverheatingOnCallback(GUI_BUTTON *btn,INT32 reason);
UINT32 guiTimedTurnToggles[ GIO_NUM_TIMED_TURN_OPTIONS ];
void BtnTimedTurnsTogglesCallback(GUI_BUTTON *btn,INT32 reason);
void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY);
////////////////////////////////////////////
//
// Local Function Prototypes
//
///////////////////////////////////////////
extern void ClearMainMenu();
BOOLEAN EnterGIOScreen();
BOOLEAN ExitGIOScreen();
void HandleGIOScreen();
BOOLEAN RenderGIOScreen();
void GetGIOScreenUserInput();
UINT8 GetCurrentGunButtonSetting();
// JA2Gold: added save (iron man) button setting
UINT8 GetCurrentGameSaveButtonSetting();
UINT8 GetCurrentGameStyleButtonSetting();
UINT8 GetCurrentTraitsOptionButtonSetting();
UINT8 GetCurrentDropAllButtonSetting();
UINT8 GetCurrentInventoryAPButtonSetting();
UINT8 GetCurrentNCTHButtonSetting();
UINT8 GetCurrentIISButtonSetting();
UINT8 GetCurrentOverheatingButtonSetting();
void DoneFadeOutForExitGameInitOptionScreen( void );
void DoneFadeInForExitGameInitOptionScreen( void );
UINT8 GetCurrentTimedTurnsButtonSetting();
BOOLEAN DoGioMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DisplayMessageToUserAboutGameDifficulty();
void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue );
BOOLEAN DisplayMessageToUserAboutIronManMode();
BOOLEAN DisplayMessageToUserAboutOIVandNASincompatibility();
void ConfirmGioIronManMessageBoxCallBack( UINT8 bExitValue );
BOOLEAN SpIniExists()
{
BOOLEAN exists = TRUE;
if(!getVFS()->fileExists(JA2SP_INI_FILENAME))
exists = FALSE;
return exists;
}
UINT32 GameInitOptionsScreenInit( void )
{
memset( &gGameOptions, 0, sizeof( GAME_OPTIONS ) );
// WANNE: Read initial game settings from ja2_sp.ini
vfs::PropertyContainer props;
if (SpIniExists())
props.initFromIniFile(JA2SP_INI_FILENAME);
// Difficulty Level (Default: Experienced = 1)
gGameOptions.ubDifficultyLevel = ((UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_DIFFICULTY_LEVEL, 1)) + 1;
// Bobby Ray's Selection (Default: Great = 1)
UINT8 ubBobbyRay = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_SELECTION, 1);
switch (ubBobbyRay)
{
// Normal
case 0:
gGameOptions.ubBobbyRay = BR_GOOD;
break;
// Great
case 1:
gGameOptions.ubBobbyRay = BR_GREAT;
break;
// Excellent
case 2:
gGameOptions.ubBobbyRay = BR_EXCELLENT;
break;
// Awesome
case 3:
gGameOptions.ubBobbyRay = BR_AWESOME;
break;
}
// Max. IMP Characters
UINT8 maxIMPCharacterCount = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_MAX_IMP_CHARACTERS, 1);
gGameOptions.ubMaxIMPCharacters = min( (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount), ( max( 1, maxIMPCharacterCount) ));
// Progress Speed of Item Choices (Default: Normal)
gGameOptions.ubProgressSpeedOfItemsChoices = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES, ITEM_PROGRESS_NORMAL);
// Skill Traits
UINT8 ubTraitSystem = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_SKILL_TRAITS, 1);
if (!gGameExternalOptions.fReadProfileDataFromXML)
ubTraitSystem = 0;
gGameOptions.fNewTraitSystem = ubTraitSystem;
// Inventory Attachments (Default: New/New = 2)
UINT8 ubInventoryAttachmentSystem = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_INVENTORY_ATTACHMENTS, 2);
// NIV is not allowed
if (!IsNIVModeValid(true))
ubInventoryAttachmentSystem = 0;
switch (ubInventoryAttachmentSystem)
{
// Old / Old
case 0:
gGameOptions.ubInventorySystem = INVENTORY_OLD;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
// New / Old
case 1:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
// New / New
case 2:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_NEW;
break;
}
// Game Style (Default: Sci Fi = 0)
gGameOptions.ubGameStyle = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_GAME_STYLE, STYLE_SCIFI);
// Enemies Drop All Items (Default: Off = 0)
gGameOptions.fEnemiesDropAllItems = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_ENEMIES_DROP_ALL_ITEMS, 0);
// Extra Difficulty (Default: Save Anytime = 0)
gGameOptions.fIronManMode = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_EXTRA_DIFFICULTY, 0);
// Available Arsenal (Default: Tons of Guns = 1)
gGameOptions.fGunNut = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_AVAILABLE_ARSENAL, 1);
// Inventory manipulation costs AP (Default: Off = 0)
gGameOptions.fInventoryCostsAP = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_INVENTORY_AP, 0);
// Squad size (Default: 8)
UINT8 ubSquadSize = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_SQUAD_SIZE, 8);
if (iResolution >= _640x480 && iResolution < _800x600)
ubSquadSize = 6;
gGameOptions.ubSquadSize = ubSquadSize;
gGameOptions.fUseNCTH = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_USE_NCTH, 0);
gGameOptions.fImprovedInterruptSystem = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_USE_IIS, 0);
gGameOptions.fWeaponOverheating = (BOOLEAN)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_OVERHEATING, 0);
// Air strikes
gGameOptions.fAirStrikes = FALSE;
// Turn limit
gGameOptions.fTurnTimeLimit = FALSE;
return (1);
}
UINT32 GameInitOptionsScreenHandle( void )
{
StartFrameBufferRender();
if( gfGIOScreenEntry )
{
GameInitOptionsScreenInit();
EnterGIOScreen();
gfGIOScreenEntry = FALSE;
gfGIOScreenExit = FALSE;
InvalidateRegion( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
}
GetGIOScreenUserInput();
HandleGIOScreen();
// render buttons marked dirty
MarkButtonsDirty( );
RenderButtons( );
ExecuteBaseDirtyRectQueue();
EndFrameBufferRender();
if ( HandleFadeOutCallback( ) )
{
ClearMainMenu();
return( gubGIOExitScreen );
}
if ( HandleBeginFadeOut( gubGIOExitScreen ) )
{
return( gubGIOExitScreen );
}
if( gfGIOScreenExit )
{
ExitGIOScreen();
}
if ( HandleFadeInCallback( ) )
{
// Re-render the scene!
RenderGIOScreen();
}
if ( HandleBeginFadeIn( gubGIOExitScreen ) )
{
}
return( gubGIOExitScreen );
}
UINT32 GameInitOptionsScreenShutdown( void )
{
return( 1 );
}
BOOLEAN EnterGIOScreen()
{
VOBJECT_DESC VObjectDesc, VObjectDesc2;
if( gfGIOButtonsAllocated )
return( TRUE );
SetCurrentCursorFromDatabase( CURSOR_NORMAL );
// load the Main trade screen backgroiund image
ColorFillVideoSurfaceArea( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, Get16BPPColor( FROMRGB( 0, 0, 0 ) ) );
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
if (iResolution >= _640x480 && iResolution < _800x600)
FilenameForBPP("INTERFACE\\OptionsScreenBackGround.sti", VObjectDesc.ImageFile);
else if (iResolution < _1024x768)
FilenameForBPP("INTERFACE\\OptionsScreenBackGround_800x600.sti", VObjectDesc.ImageFile);
else
FilenameForBPP("INTERFACE\\OptionsScreenBackGround_1024x768.sti", VObjectDesc.ImageFile);
CHECKF(AddVideoObject(&VObjectDesc, &guiGIOMainBackGroundImage ));
VObjectDesc2.fCreateFlags=VOBJECT_CREATE_FROMFILE;
FilenameForBPP("INTERFACE\\GIOSmallFrame.sti", VObjectDesc2.ImageFile);
CHECKF(AddVideoObject(&VObjectDesc2, &guiGIOSMALLFRAME));
//Ok button
giGIODoneBtnImage = LoadButtonImage("INTERFACE\\PreferencesButtons.sti", -1,0,-1,2,-1 );
guiGIODoneButton = CreateIconAndTextButton( giGIODoneBtnImage, gzGIOScreenText[GIO_START_TEXT], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_BTN_START_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODoneCallback);
SpecifyButtonSoundScheme( guiGIODoneButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyDisabledButtonStyle( guiGIODoneButton, DISABLED_STYLE_NONE );
//Cancel button
giGIOCancelBtnImage = UseLoadedButtonImage( giGIODoneBtnImage, -1,1,-1,3,-1 );
guiGIOCancelButton = CreateIconAndTextButton( giGIOCancelBtnImage, gzGIOScreenText[GIO_CANCEL_TEXT], OPT_BUTTON_FONT,
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
GIO_CANCEL_X, GIO_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOCancelCallback );
SpecifyButtonSoundScheme( guiGIOCancelButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DIFFICULTY SETTING
giGIODifficultyButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
giGIODifficultyButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIODifficultyButton[ 0 ] = QuickCreateButton( giGIODifficultyButtonImage[ 0 ], GIO_DIF_SETTING_X + 39, GIO_DIF_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIODifficultySelectionLeftCallback );
// right button - increment difficulty level
giGIODifficultyButton[ 1 ] = QuickCreateButton( giGIODifficultyButtonImage[ 1 ], GIO_DIF_SETTING_X + 158, GIO_DIF_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIODifficultySelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIODifficultyButton[0],0, 0 );
MSYS_SetBtnUserData(giGIODifficultyButton[1],0, 1 );
iCurrentDifficulty = max( 0, gGameOptions.ubDifficultyLevel - 1);
///////////////////////////////////////////////////////////////////////////////////////////////////////
// MAX IMP NUMBER SETTING
giGIOIMPNumberButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ],-1,0,-1,1,-1 );
giGIOIMPNumberButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ],-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOIMPNumberButton[ 0 ] = QuickCreateButton( giGIOIMPNumberButtonImage[ 0 ], GIO_IMP_SETTING_X + 39, GIO_IMP_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOIMPNumberSelectionLeftCallback );
// right button - increment difficulty level
giGIOIMPNumberButton[ 1 ] = QuickCreateButton( giGIOIMPNumberButtonImage[ 1 ], GIO_IMP_SETTING_X + 158, GIO_IMP_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOIMPNumberSelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOIMPNumberButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOIMPNumberButton[1],0, 1 );
iCurrentIMPNumberSetting = gGameOptions.ubMaxIMPCharacters;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OLD/NEW TARITS SETTING
guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
guiTraitsOptionToggles[ GIO_TRAITS_OLD ] = CreateIconAndTextButton( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], gzGIOScreenText[ GIO_TRAITS_OLD_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TRAITS_SETTING_X + 74), (GIO_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOldTraitsCallback);
guiTraitsOptionTogglesImage[ GIO_TRAITS_NEW ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiTraitsOptionToggles[ GIO_TRAITS_NEW ] = CreateIconAndTextButton( guiTraitsOptionTogglesImage[ GIO_TRAITS_NEW ], gzGIOScreenText[ GIO_TRAITS_NEW_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONewTraitsCallback );
SpecifyButtonSoundScheme( guiTraitsOptionToggles[ GIO_TRAITS_OLD ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiTraitsOptionToggles[ GIO_TRAITS_OLD ],0, 0 );
MSYS_SetBtnUserData(guiTraitsOptionToggles[ GIO_TRAITS_NEW ],0, 1 );
if( gGameOptions.fNewTraitSystem )
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_NEW ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_OLD ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// GAME SETTING ( realistic, sci fi )
guiGameStyleTogglesImage[ GIO_REALISTIC ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameStyleToggles[ GIO_REALISTIC ] = CreateIconAndTextButton( guiGameStyleTogglesImage[ GIO_REALISTIC ], gzGIOScreenText[ GIO_REALISTIC_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GAME_SETTING_X + 74), (GIO_GAME_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIORealisticStyleCallback);
guiGameStyleTogglesImage[ GIO_SCI_FI ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameStyleToggles[ GIO_SCI_FI ] = CreateIconAndTextButton( guiGameStyleTogglesImage[ GIO_SCI_FI ], gzGIOScreenText[ GIO_SCI_FI_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOScifiStyleCallback );
SpecifyButtonSoundScheme( guiGameStyleToggles[ GIO_REALISTIC ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGameStyleToggles[ GIO_SCI_FI ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGameStyleToggles[ GIO_REALISTIC ],0, 0 );
MSYS_SetBtnUserData(guiGameStyleToggles[ GIO_SCI_FI ],0, 1 );
if( gGameOptions.ubGameStyle == STYLE_SCIFI )
ButtonList[ guiGameStyleToggles[ GIO_SCI_FI ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGameStyleToggles[ GIO_REALISTIC ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// IRON MAN SETTING
guiGameSaveTogglesImage[ GIO_CAN_SAVE ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameSaveToggles[ GIO_CAN_SAVE ] = CreateIconAndTextButton( guiGameSaveTogglesImage[ GIO_CAN_SAVE ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOIronManOffCallback);
guiGameSaveTogglesImage[ GIO_IRON_MAN ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGameSaveToggles[ GIO_IRON_MAN ] = CreateIconAndTextButton( guiGameSaveTogglesImage[ GIO_IRON_MAN ], gzGIOScreenText[ GIO_IRON_MAN_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IRON_MAN_SETTING_X + 74), (GIO_IRON_MAN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOIronManOnCallback );
SpecifyButtonSoundScheme( guiGameSaveToggles[ GIO_CAN_SAVE ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGameSaveToggles[ GIO_IRON_MAN ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGameSaveToggles[ GIO_CAN_SAVE ],0, 0 );
MSYS_SetBtnUserData(guiGameSaveToggles[ GIO_IRON_MAN ],0, 1 );
if( gGameOptions.fIronManMode )
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// BOBBY RAY SETTING
giGIOBRSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 );
giGIOBRSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 );
// left button - decrement BR level
giGIOBRSettingButton[ 0 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 0 ], GIO_BR_SETTING_X + 39, GIO_BR_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingLeftCallback );
// right button - increment BR level
giGIOBRSettingButton[ 1 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 1 ], GIO_BR_SETTING_X + 158, GIO_BR_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOBRSettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOBRSettingButton[1],0, 1 );
// set initial value
switch ( gGameOptions.ubBobbyRay )
{
case BR_GOOD:
iCurrentBRSetting = GIO_BR_GOOD;
break;
case BR_GREAT:
iCurrentBRSetting = GIO_BR_GREAT;
break;
case BR_EXCELLENT:
iCurrentBRSetting = GIO_BR_EXCELLENT;
break;
case BR_AWESOME:
iCurrentBRSetting = GIO_BR_AWESOME;
break;
default:
iCurrentBRSetting = GIO_BR_GOOD; // optimistically assume, we have selected the normal one
break;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// ITEM PROGRESS SETTING
giGIOProgressSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 );
giGIOProgressSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 );
// left button - decrement BR level
giGIOProgressSettingButton[ 0 ] = QuickCreateButton( giGIOProgressSettingButtonImage[ 0 ], GIO_PROGRESS_SETTING_X + 39, GIO_PROGRESS_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOProgressSettingLeftCallback );
// right button - increment BR level
giGIOProgressSettingButton[ 1 ] = QuickCreateButton( giGIOProgressSettingButtonImage[ 1 ], GIO_PROGRESS_SETTING_X + 158, GIO_PROGRESS_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOProgressSettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOProgressSettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOProgressSettingButton[1],0, 1 );
// set initial value
iCurrentProgressSetting = gGameOptions.ubProgressSpeedOfItemsChoices;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OLD/NEW INVENTORY SETTING
if (IsNIVModeValid(true) == TRUE )
{
giGIOInventorySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ],-1,0,-1,1,-1 );
giGIOInventorySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ],-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOInventorySettingButton[ 0 ] = QuickCreateButton( giGIOInventorySettingButtonImage[ 0 ], GIO_INV_SETTING_X + 39, GIO_INV_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOInventorySettingLeftCallback );
// right button - increment difficulty level
giGIOInventorySettingButton[ 1 ] = QuickCreateButton( giGIOInventorySettingButtonImage[ 1 ], GIO_INV_SETTING_X + 158, GIO_INV_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOInventorySettingRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOInventorySettingButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOInventorySettingButton[1],0, 1 );
if (UsingNewInventorySystem()==true &&
UsingNewAttachmentSystem()==true)
{
iCurrentInventorySetting = GIO_INV_NEW_NAS;
}
else
{
// set initial value
switch ( gGameOptions.ubInventorySystem )
{
case INVENTORY_OLD:
iCurrentInventorySetting = GIO_INV_OLD;
break;
case INVENTORY_NEW:
iCurrentInventorySetting = GIO_INV_NEW;
break;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// DROP ALL ON/OFF SETTING
guiDropAllOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiDropAllOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiDropAllOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODropAllOffCallback);
guiDropAllOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiDropAllOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiDropAllOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_DROPALL_SETTING_X + 74), (GIO_DROPALL_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIODropAllOnCallback );
SpecifyButtonSoundScheme( guiDropAllOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiDropAllOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiDropAllOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiDropAllOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fEnemiesDropAllItems )
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// GUN SETTING
guiGunOptionTogglesImage[ GIO_REDUCED_GUNS ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGunOptionToggles[ GIO_REDUCED_GUNS ] = CreateIconAndTextButton( guiGunOptionTogglesImage[ GIO_REDUCED_GUNS ], gzGIOScreenText[ GIO_REDUCED_GUNS_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GUN_SETTING_X + 74), (GIO_GUN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOGunSettingReducedCallback);
guiGunOptionTogglesImage[ GIO_GUN_NUT ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiGunOptionToggles[ GIO_GUN_NUT ] = CreateIconAndTextButton( guiGunOptionTogglesImage[ GIO_GUN_NUT ], gzGIOScreenText[ GIO_GUN_NUT_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOGunSettingToGCallback );
SpecifyButtonSoundScheme( guiGunOptionToggles[ GIO_REDUCED_GUNS ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiGunOptionToggles[ GIO_GUN_NUT ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiGunOptionToggles[ GIO_REDUCED_GUNS ],0, 0 );
MSYS_SetBtnUserData(guiGunOptionToggles[ GIO_GUN_NUT ],0, 1 );
if( gGameOptions.fGunNut )
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// INVENTORY AP COST ON/OFF SETTING
guiInventoryAPOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiInventoryAPOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOInventoryAPOffCallback);
guiInventoryAPOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiInventoryAPOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_INVENTORY_AP_SETTING_X + 74), (GIO_INVENTORY_AP_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOInventoryAPOnCallback );
SpecifyButtonSoundScheme( guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiInventoryAPOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiInventoryAPOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fInventoryCostsAP )
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// SQUAD SIZE
if (iResolution > _640x480)
{
giGIOSquadSizeButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
giGIOSquadSizeButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
// left button - decrement difficulty level
giGIOSquadSizeButton[ 0 ] = QuickCreateButton( giGIOSquadSizeButtonImage[ 0 ], GIO_SQUAD_SIZE_SETTING_X + 39, GIO_SQUAD_SIZE_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOSquadSizeSelectionLeftCallback );
// right button - increment difficulty level
giGIOSquadSizeButton[ 1 ] = QuickCreateButton( giGIOSquadSizeButtonImage[ 1 ], GIO_SQUAD_SIZE_SETTING_X + 158, GIO_SQUAD_SIZE_SETTING_Y ,
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOSquadSizeSelectionRightCallback );
// set user data
MSYS_SetBtnUserData(giGIOSquadSizeButton[0],0, 0 );
MSYS_SetBtnUserData(giGIOSquadSizeButton[1],0, 1 );
switch (gGameOptions.ubSquadSize)
{
case 6:
iCurrentSquadSize = GIO_SQUAD_SIZE_6;
break;
case 8:
iCurrentSquadSize = GIO_SQUAD_SIZE_8;
break;
case 10:
iCurrentSquadSize = GIO_SQUAD_SIZE_10;
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
// NCTH ON/OFF SETTING
guiNCTHOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiNCTHOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiNCTHOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONCTHOffCallback);
guiNCTHOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiNCTHOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiNCTHOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_NCTH_SETTING_X + 74), (GIO_NCTH_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIONCTHOnCallback );
SpecifyButtonSoundScheme( guiNCTHOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiNCTHOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiNCTHOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiNCTHOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fUseNCTH )
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPROVED INTERRUPT SYSTEM ON/OFF SETTING
guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOImprovedInterruptOffCallback);
guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiImprovedInterruptOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_IIS_SETTING_X + 74), (GIO_IIS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOImprovedInterruptOnCallback );
SpecifyButtonSoundScheme( guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fImprovedInterruptSystem )
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
// OVERHEATING WEAPONS ON/OFF SETTING
guiOverheatingOptionTogglesImage[ GIO_BUTTON_OFF ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] = CreateIconAndTextButton( guiOverheatingOptionTogglesImage[ GIO_BUTTON_OFF ], gzGIOScreenText[ GIO_DROPALL_OFF_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOverheatingOffCallback);
guiOverheatingOptionTogglesImage[ GIO_BUTTON_ON ] = UseLoadedButtonImage( guiTraitsOptionTogglesImage[ GIO_TRAITS_OLD ], -1,1,-1,3,-1 );
guiOverheatingOptionToggles[ GIO_BUTTON_ON ] = CreateIconAndTextButton( guiOverheatingOptionTogglesImage[ GIO_BUTTON_ON ], gzGIOScreenText[ GIO_DROPALL_ON_TEXT ], GIO_TOGGLE_TEXT_FONT,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
GIO_TOGGLE_TEXT_COLOR, NO_SHADOW,
TEXT_CJUSTIFIED,
(GIO_OVERHEATING_SETTING_X + 74), (GIO_OVERHEATING_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
DEFAULT_MOVE_CALLBACK, BtnGIOOverheatingOnCallback );
SpecifyButtonSoundScheme( guiOverheatingOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
SpecifyButtonSoundScheme( guiOverheatingOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
MSYS_SetBtnUserData(guiOverheatingOptionToggles[ GIO_BUTTON_OFF ],0, 0 );
MSYS_SetBtnUserData(guiOverheatingOptionToggles[ GIO_BUTTON_ON ],0, 1 );
if( gGameOptions.fWeaponOverheating )
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags |= BUTTON_CLICKED_ON;
else
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags |= BUTTON_CLICKED_ON;
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
//Reset the exit screen
gubGIOExitScreen = GAME_INIT_OPTIONS_SCREEN;
//REnder the screen once so we can blt ot to ths save buffer
RenderGIOScreen();
BlitBufferToBuffer(guiRENDERBUFFER, guiSAVEBUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
gfGIOButtonsAllocated = TRUE;
return( TRUE );
}
void BtnGIODifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentDifficulty > 0 )
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentDifficulty > 0 )
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentDifficulty < 3 )
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentDifficulty < 3 )
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentDifficulty++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIODifficultyButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentBRSetting > 0 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentBRSetting > 0 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentBRSetting < 3 )
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentBRSetting < 3 )
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentBRSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentIMPNumberSetting > 1 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentIMPNumberSetting > 1 )
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentIMPNumberSetting < (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount) )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentIMPNumberSetting < (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount) )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentIMPNumberSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventorySettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentInventorySetting > GIO_INV_OLD )
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentInventorySetting > GIO_INV_OLD )
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventorySettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentInventorySetting < GIO_INV_NEW_NAS )
{
PlayButtonSound( giGIOIMPNumberButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentInventorySetting < GIO_INV_NEW_NAS )
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentInventorySetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOInventorySettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOProgressSettingLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentProgressSetting > 0 )
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentProgressSetting > 0 )
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOProgressSettingRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentProgressSetting < GIO_PROGRESS_VERY_FAST )
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentProgressSetting < GIO_PROGRESS_VERY_FAST )
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentProgressSetting++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOProgressSettingButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOOldTraitsCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_NEW ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_OLD ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONewTraitsCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
if (!gGameExternalOptions.fReadProfileDataFromXML)
{
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_DISABLED_CLICK );
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioNewTraitsImpossibleText[0], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_OK, NewTraitsNotPossibleMessageBoxCallBack );
}
else
{
RestoreExternBackgroundRect( (GIO_TRAITS_SETTING_X), (GIO_TRAITS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiTraitsOptionToggles[ GIO_TRAITS_OLD ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiTraitsOptionToggles[ GIO_TRAITS_NEW ], BUTTON_SOUND_CLICKED_ON );
}
}
}
void NewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue )
{
/*if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_NOTHING;
}*/
}
void BtnGIORealisticStyleCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameStyleToggles[ GIO_SCI_FI ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_REALISTIC ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOScifiStyleCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GAME_SETTING_X), (GIO_GAME_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameStyleToggles[ GIO_REALISTIC ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_SCI_FI ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOIronManOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_CAN_SAVE ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOIronManOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IRON_MAN_SETTING_X), (GIO_IRON_MAN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGameStyleToggles[ GIO_IRON_MAN ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIODropAllOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), 230, 40 );
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiDropAllOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIODropAllOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_DROPALL_SETTING_X), (GIO_DROPALL_SETTING_Y + 10), 230, 40 );
ButtonList[ guiDropAllOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiDropAllOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOGunSettingReducedCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGunOptionToggles[ GIO_GUN_NUT ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGunOptionToggles[ GIO_REDUCED_GUNS ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOGunSettingToGCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_GUN_SETTING_X), (GIO_GUN_SETTING_Y + 10), 230, 40 );
ButtonList[ guiGunOptionToggles[ GIO_REDUCED_GUNS ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiGunOptionToggles[ GIO_GUN_NUT ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
if ( iCurrentSquadSize > GIO_SQUAD_SIZE_6 )
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
if ( iCurrentSquadSize > GIO_SQUAD_SIZE_6 )
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize--;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[0], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
{
UINT8 maxSquadSize = GIO_SQUAD_SIZE_10;
if (iResolution >= _800x600 && iResolution < _1024x768)
maxSquadSize = GIO_SQUAD_SIZE_8;
if ( iCurrentSquadSize < maxSquadSize )
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
UINT8 maxSquadSize = GIO_SQUAD_SIZE_10;
if (iResolution >= _800x600 && iResolution < _1024x768)
maxSquadSize = GIO_SQUAD_SIZE_8;
if ( iCurrentSquadSize < maxSquadSize )
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_CLICKED_ON );
iCurrentSquadSize++;
gfReRenderGIOScreen =TRUE;
}
else
{
PlayButtonSound( giGIOSquadSizeButton[1], BUTTON_SOUND_DISABLED_CLICK );
}
}
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
}
}
}
void BtnGIOInventoryAPOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), 230, 40 );
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOInventoryAPOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_INVENTORY_AP_SETTING_X), (GIO_INVENTORY_AP_SETTING_Y + 10), 230, 40 );
ButtonList[ guiInventoryAPOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiInventoryAPOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONCTHOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), 230, 40 );
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiNCTHOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIONCTHOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_NCTH_SETTING_X), (GIO_NCTH_SETTING_Y + 10), 230, 40 );
ButtonList[ guiNCTHOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiNCTHOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOImprovedInterruptOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOImprovedInterruptOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_IIS_SETTING_X), (GIO_IIS_SETTING_Y + 10), 230, 40 );
ButtonList[ guiImprovedInterruptOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiImprovedInterruptOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOOverheatingOffCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), 230, 40 );
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_ON ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiOverheatingOptionToggles[ GIO_BUTTON_OFF ], BUTTON_SOUND_CLICKED_ON );
}
}
void BtnGIOOverheatingOnCallback(GUI_BUTTON *btn,INT32 reason)
{
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
RestoreExternBackgroundRect( (GIO_OVERHEATING_SETTING_X), (GIO_OVERHEATING_SETTING_Y + 10), 230, 40 );
ButtonList[ guiOverheatingOptionToggles[ GIO_BUTTON_OFF ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
btn->uiFlags|=(BUTTON_CLICKED_ON);
PlayButtonSound( guiOverheatingOptionToggles[ GIO_BUTTON_ON ], BUTTON_SOUND_CLICKED_ON );
}
}
BOOLEAN ExitGIOScreen()
{
UINT16 cnt;
if( !gfGIOButtonsAllocated )
return( TRUE );
//Delete the main options screen background
DeleteVideoObjectFromIndex( guiGIOMainBackGroundImage );
DeleteVideoObjectFromIndex( guiGIOSMALLFRAME );
// Destroy Basic buttons
RemoveButton( guiGIOCancelButton );
RemoveButton( guiGIODoneButton );
UnloadButtonImage( giGIOCancelBtnImage );
UnloadButtonImage( giGIODoneBtnImage );
// Destroy Difficulty setting buttons
RemoveButton( giGIODifficultyButton[0] );
RemoveButton( giGIODifficultyButton[1] );
UnloadButtonImage( giGIODifficultyButtonImage[0] );
UnloadButtonImage( giGIODifficultyButtonImage[1] );
// Destroy IMP Number setting buttons
RemoveButton( giGIOIMPNumberButton[0] );
RemoveButton( giGIOIMPNumberButton[1] );
UnloadButtonImage( giGIOIMPNumberButtonImage[0] );
UnloadButtonImage( giGIOIMPNumberButtonImage[1] );
// Destroy BR setting buttons
RemoveButton( giGIOBRSettingButton[0] );
RemoveButton( giGIOBRSettingButton[1] );
UnloadButtonImage( giGIOBRSettingButtonImage[0] );
UnloadButtonImage( giGIOBRSettingButtonImage[1] );
// Destroy Progress setting buttons
RemoveButton( giGIOProgressSettingButton[0] );
RemoveButton( giGIOProgressSettingButton[1] );
UnloadButtonImage( giGIOProgressSettingButtonImage[0] );
UnloadButtonImage( giGIOProgressSettingButtonImage[1] );
// Destroy Traits setting buttons
for( cnt=0; cnt<NUM_TRAIT_OPTIONS; cnt++)
{
RemoveButton( guiTraitsOptionToggles[ cnt ] );
UnloadButtonImage( guiTraitsOptionTogglesImage[ cnt ] );
}
// Destroy Game setting buttons
for( cnt=0; cnt<NUM_GAME_STYLES; cnt++)
{
RemoveButton( guiGameStyleToggles[ cnt ] );
UnloadButtonImage( guiGameStyleTogglesImage[ cnt ] );
}
// Destroy Iron Man setting buttons
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{
RemoveButton( guiGameSaveToggles[ cnt ] );
UnloadButtonImage( guiGameSaveTogglesImage[ cnt ] );
}
// Destroy Inventory setting buttons
if(IsNIVModeValid(true) == TRUE)
{
// Destroy Inventory settings
RemoveButton( giGIOInventorySettingButton[0] );
RemoveButton( giGIOInventorySettingButton[1] );
UnloadButtonImage( giGIOInventorySettingButtonImage[0] );
UnloadButtonImage( giGIOInventorySettingButtonImage[1] );
}
// Destroy Drop All setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiDropAllOptionToggles[ cnt ] );
UnloadButtonImage( guiDropAllOptionTogglesImage[ cnt ] );
}
// Destroy Gun setting buttons
for( cnt=0; cnt<NUM_GUN_OPTIONS; cnt++)
{
RemoveButton( guiGunOptionToggles[ cnt ] );
UnloadButtonImage( guiGunOptionTogglesImage[ cnt ] );
}
// Destroy Squad size setting buttons
if (iResolution > _640x480)
{
RemoveButton( giGIOSquadSizeButton[0] );
RemoveButton( giGIOSquadSizeButton[1] );
UnloadButtonImage( giGIOSquadSizeButtonImage[0] );
UnloadButtonImage( giGIOSquadSizeButtonImage[1] );
}
// Destroy Fast Bobby Ray setting buttons
//for( cnt=0; cnt<NUM_FAST_BR_OPTIONS; cnt++)
//{
// RemoveButton( guiFastBROptionToggles[ cnt ] );
// UnloadButtonImage( guiFastBROptionTogglesImage[ cnt ] );
//}
// Destroy Inventory AP Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiInventoryAPOptionToggles[ cnt ] );
UnloadButtonImage( guiInventoryAPOptionTogglesImage[ cnt ] );
}
// Destroy NCTH Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiNCTHOptionToggles[ cnt ] );
UnloadButtonImage( guiNCTHOptionTogglesImage[ cnt ] );
}
// Destroy IIS Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiImprovedInterruptOptionToggles[ cnt ] );
UnloadButtonImage( guiImprovedInterruptOptionTogglesImage[ cnt ] );
}
// Destroy Overheating Cost setting buttons
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
RemoveButton( guiOverheatingOptionToggles[ cnt ] );
UnloadButtonImage( guiOverheatingOptionTogglesImage[ cnt ] );
}
gfGIOButtonsAllocated = FALSE;
//If we are starting the game stop playing the music
if( gubGameOptionScreenHandler == GIO_EXIT )
SetMusicMode( MUSIC_NONE );
gfGIOScreenExit = FALSE;
gfGIOScreenEntry = TRUE;
return( TRUE );
}
void HandleGIOScreen()
{
if( gubGameOptionScreenHandler != GIO_NOTHING )
{
switch( gubGameOptionScreenHandler )
{
case GIO_CANCEL:
gubGIOExitScreen = MAINMENU_SCREEN;
gfGIOScreenExit = TRUE;
break;
case MP_LOAD:
gubGIOExitScreen = SAVE_LOAD_SCREEN;
gfSaveGame = FALSE;
gfGIOScreenExit = TRUE;
guiPreviousOptionScreen = GAME_INIT_OPTIONS_SCREEN;
break;
case GIO_EXIT:
{
//if we are already fading out, get out of here
if( gFadeOutDoneCallback != DoneFadeOutForExitGameInitOptionScreen )
{
//Disable the ok button
DisableButton( guiGIODoneButton );
gFadeOutDoneCallback = DoneFadeOutForExitGameInitOptionScreen;
FadeOutNextFrame( );
}
break;
}
case GIO_IRON_MAN_MODE:
DisplayMessageToUserAboutGameDifficulty();
break;
}
gubGameOptionScreenHandler = GIO_NOTHING;
}
if( gfReRenderGIOScreen )
{
RenderGIOScreen();
gfReRenderGIOScreen = FALSE;
}
}
BOOLEAN RenderGIOScreen()
{
HVOBJECT hPixHandle;
RestoreExternBackgroundRect( GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_DIF_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_IMP_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_PROGRESS_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_INV_SETTING_Y-3, 120, 20 );
RestoreExternBackgroundRect( GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_SQUAD_SIZE_SETTING_Y-3, 120, 20 );
//Get the main background screen graphic and blt it
GetVideoObject(&hPixHandle, guiGIOMainBackGroundImage );
BltVideoObject(FRAME_BUFFER, hPixHandle, 0,xResOffset,yResOffset, VO_BLT_SRCTRANSPARENCY,NULL);
//Shade the background
ShadowVideoSurfaceRect( FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset, iScreenWidthOffset + 640, iScreenHeightOffset + 480 );
//Display the title
DrawTextToScreen( gzGIOScreenText[ GIO_INITIAL_GAME_SETTINGS ], GIO_MAIN_TITLE_X, GIO_MAIN_TITLE_Y, GIO_MAIN_TITLE_WIDTH, GIO_TITLE_FONT, GIO_TITLE_COLOR, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Dif Settings Title Text
RenderGIOSmallSelectionFrame( (GIO_DIF_SETTING_X + 36), (GIO_DIF_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_DIF_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_DIF_LEVEL_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_DIF_SETTING_Y+6), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentDifficulty + 9 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the IMP number Title Text
RenderGIOSmallSelectionFrame( (GIO_IMP_SETTING_X + 36), (GIO_IMP_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_IMP_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_DIF_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_IMP_NUMBER_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
if ( iCurrentIMPNumberSetting <= 6 )
{
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentIMPNumberSetting + 32 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
}
else
{
CHAR16 sStartLevelString[16];
swprintf(sStartLevelString, L"%i", iCurrentIMPNumberSetting );
DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, sStartLevelString, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
}
// Display BR Setting texts
RenderGIOSmallSelectionFrame( (GIO_BR_SETTING_X + 36), (GIO_BR_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_SETTING_Y+6), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentBRSetting + 20 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Display Progress Setting texts
RenderGIOSmallSelectionFrame( (GIO_PROGRESS_SETTING_X + 36), (GIO_PROGRESS_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT - 6), (UINT16)(GIO_PROGRESS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_PROGRESS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_PROGRESS_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_PROGRESS_SETTING_Y+6), GIO_PROGRESS_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentProgressSetting + 49 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Old/new traits system
DisplayWrappedString( (GIO_TRAITS_SETTING_X - 6), (UINT16)(GIO_TRAITS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_TRAITS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_TRAITS_TEXT], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Game Settings Title Text
DisplayWrappedString( (GIO_GAME_SETTING_X - 6), (UINT16)(GIO_GAME_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_GAME_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// JA2Gold: Display the iron man Settings Title Text
DisplayWrappedString( (GIO_IRON_MAN_SETTING_X - 6), (UINT16)(GIO_IRON_MAN_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_IRON_MAN_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
// Display Inventory Settings text
RenderGIOSmallSelectionFrame( (GIO_INV_SETTING_X + 36), (GIO_INV_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_INV_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_INV_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_INV_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_INV_SETTING_Y+5), GIO_INV_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentInventorySetting + 54 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Drop All Settings Title Text
DisplayWrappedString( (GIO_DROPALL_SETTING_X - 6), (UINT16)(GIO_DROPALL_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_DROPALL_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_DROPALL_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Fast Bobby Ray Settings Title Text
// DisplayWrappedString( (GIO_FAST_BR_SETTING_X - 6), (UINT16)(GIO_FAST_BR_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_FAST_BR_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_FAST_BR_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Inventory AP Cost Settings Title Text
DisplayWrappedString( (GIO_INVENTORY_AP_SETTING_X - 6), (UINT16)(GIO_INVENTORY_AP_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_INVENTORY_AP_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_INVENTORY_AP_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Gun Settings Title Text
DisplayWrappedString( (GIO_GUN_SETTING_X - 6), (UINT16)(GIO_GUN_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_GUN_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_GUN_OPTIONS_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Squad size Title Text
RenderGIOSmallSelectionFrame( (GIO_SQUAD_SIZE_SETTING_X + 36), (GIO_SQUAD_SIZE_SETTING_Y - 3) );
DisplayWrappedString( (UINT16)(GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_SQUAD_SIZE_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_SQUAD_SIZE_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_SQUAD_SIZE_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
DisplayWrappedString( (UINT16)(GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_SQUAD_SIZE_SETTING_Y+6), GIO_SQUAD_SIZE_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentSquadSize + (GIO_SQUAD_SIZE_TITLE_TEXT + 1) ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the NCTH Settings Title Text
DisplayWrappedString( (GIO_NCTH_SETTING_X - 6), (UINT16)(GIO_NCTH_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_NCTH_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_NCTH_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Improved Interrupt System Settings Title Text
DisplayWrappedString( (GIO_IIS_SETTING_X - 6), (UINT16)(GIO_IIS_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_IIS_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_IIS_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
//Display the Weapon Overheating Settings Title Text
DisplayWrappedString( (GIO_OVERHEATING_SETTING_X - 6), (UINT16)(GIO_OVERHEATING_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE), GIO_OVERHEATING_SETTING_WIDTH + 14, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_OVERHEATING_TITLE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
return( TRUE );
}
void GetGIOScreenUserInput()
{
InputAtom Event;
while (DequeueSpecificEvent(&Event, KEY_DOWN|KEY_UP|KEY_REPEAT))
{
if( Event.usEvent == KEY_DOWN )
{
switch( Event.usParam )
{
case ESC:
//Exit out of the screen
gubGameOptionScreenHandler = GIO_CANCEL;
break;
#ifdef JA2TESTVERSION
case 'r':
gfReRenderGIOScreen=TRUE;
break;
case 'i':
InvalidateRegion( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
break;
#endif
case ENTER:
gubGameOptionScreenHandler = GIO_EXIT;
break;
}
}
}
}
void BtnGIODoneCallback(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 );
//if the user doesnt have IRON MAN mode selected
if( !DisplayMessageToUserAboutIronManMode() )
{
//Confirm the difficulty setting
DisplayMessageToUserAboutGameDifficulty();
}
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
void BtnGIOCancelCallback(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_CANCEL;
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 )
{
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 = MP_LOAD;
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
}
}
UINT8 GetCurrentTraitsOptionButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_TRAIT_OPTIONS; cnt++)
{
if( ButtonList[ guiTraitsOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentGameStyleButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_GAME_STYLES; cnt++)
{
if( ButtonList[ guiGameStyleToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentGameSaveButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_SAVE_OPTIONS; cnt++)
{
if( ButtonList[ guiGameSaveToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentDropAllButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_GAME_STYLES; cnt++)
{
if( ButtonList[ guiDropAllOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentInventoryAPButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiInventoryAPOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentGunButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<NUM_GUN_OPTIONS; cnt++)
{
if( ButtonList[ guiGunOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentTimedTurnsButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_TIMED_TURN_OPTIONS; cnt++)
{
if( ButtonList[ guiTimedTurnToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentNCTHButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiNCTHOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentIISButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiImprovedInterruptOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
UINT8 GetCurrentOverheatingButtonSetting()
{
UINT8 cnt;
for( cnt=0; cnt<GIO_NUM_ONOFF_BUTTONS; cnt++)
{
if( ButtonList[ guiOverheatingOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
{
return( cnt );
}
}
return( 0 );
}
void DoneFadeOutForExitGameInitOptionScreen( void )
{
// loop through and get the status of all the buttons
gGameOptions.fGunNut = GetCurrentGunButtonSetting();
gGameOptions.ubGameStyle = GetCurrentGameStyleButtonSetting();
gGameOptions.ubDifficultyLevel = min( NUM_DIFF_SETTINGS, ( max( 1, (iCurrentDifficulty + 1)) ));
gGameOptions.fTurnTimeLimit = FALSE;
// iron man
gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting();
switch ( iCurrentBRSetting )
{
case GIO_BR_GOOD:
gGameOptions.ubBobbyRay = BR_GOOD;
break;
case GIO_BR_GREAT:
gGameOptions.ubBobbyRay = BR_GREAT;
break;
case GIO_BR_EXCELLENT:
gGameOptions.ubBobbyRay = BR_EXCELLENT;
break;
case GIO_BR_AWESOME:
gGameOptions.ubBobbyRay = BR_AWESOME;
break;
}
// CHRISL:
if(IsNIVModeValid(true) == TRUE)
{
switch ( iCurrentInventorySetting)
{
case GIO_INV_OLD:
gGameOptions.ubInventorySystem = INVENTORY_OLD;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
case GIO_INV_NEW:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_OLD;
break;
case GIO_INV_NEW_NAS:
gGameOptions.ubInventorySystem = INVENTORY_NEW;
gGameOptions.ubAttachmentSystem = ATTACHMENT_NEW;
}
}
// Squad size
switch (iCurrentSquadSize)
{
case GIO_SQUAD_SIZE_6:
gGameOptions.ubSquadSize = 6;
break;
case GIO_SQUAD_SIZE_8:
gGameOptions.ubSquadSize = 8;
break;
case GIO_SQUAD_SIZE_10:
gGameOptions.ubSquadSize = 10;
break;
}
// SANDRO - added following:
gGameOptions.ubMaxIMPCharacters = min( (gGameExternalOptions.iIMPMaleCharacterCount + gGameExternalOptions.iIMPFemaleCharacterCount), ( max( 1, iCurrentIMPNumberSetting) ));
gGameOptions.fNewTraitSystem = GetCurrentTraitsOptionButtonSetting();
gGameOptions.fEnemiesDropAllItems = GetCurrentDropAllButtonSetting();
gGameOptions.ubProgressSpeedOfItemsChoices = min( GIO_PROGRESS_VERY_FAST, iCurrentProgressSetting );
gGameOptions.fInventoryCostsAP = GetCurrentInventoryAPButtonSetting();
gGameOptions.fUseNCTH = GetCurrentNCTHButtonSetting();
gGameOptions.fImprovedInterruptSystem = GetCurrentIISButtonSetting();
gGameOptions.fWeaponOverheating = GetCurrentOverheatingButtonSetting();
// gubGIOExitScreen = INIT_SCREEN;
gubGIOExitScreen = INTRO_SCREEN;
#ifdef JA2TESTVERSION
if( gfKeyState[ ALT ] )
{
if( gfKeyState[ CTRL ] )
{
gMercProfiles[ MIGUEL ].bMercStatus = MERC_IS_DEAD;
gMercProfiles[ SKYRIDER ].bMercStatus = MERC_IS_DEAD;
}
SetIntroType( INTRO_ENDING );
}
else
#endif
SetIntroType( INTRO_BEGINNING );
ExitGIOScreen();
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
}
void DoneFadeInForExitGameInitOptionScreen( void )
{
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
}
BOOLEAN DoGioMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback )
{
SGPRect CenteringRect= {0 + xResOffset, 0, SCREEN_WIDTH - xResOffset, SCREEN_HEIGHT };
// do message box and return
giGioMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT16 ) ( usFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, &CenteringRect );
// send back return state
return( ( giGioMessageBox != -1 ) );
}
void DisplayMessageToUserAboutGameDifficulty()
{
UINT8 ubDiffLevel = iCurrentDifficulty;
switch( ubDiffLevel )
{
case 0:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_NOVICE], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 1:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_EXPERIENCED], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 2:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_EXPERT], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
case 3:
DoGioMessageBox( MSG_BOX_BASIC_STYLE, zGioDifConfirmText[GIO_CFS_INSANE], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioDifSettingMessageBoxCallBack );
break;
}
}
void ConfirmGioDifSettingMessageBoxCallBack( UINT8 bExitValue )
{
if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_EXIT;
}
}
BOOLEAN DisplayMessageToUserAboutIronManMode()
{
// Madd
UINT8 ubIronManMode = GetCurrentGameSaveButtonSetting(); //FALSE;
//if the user has selected IRON MAN mode
if( ubIronManMode )
{
DoGioMessageBox( MSG_BOX_BASIC_STYLE, gzIronManModeWarningText[ IMM__IRON_MAN_MODE_WARNING_TEXT ], GAME_INIT_OPTIONS_SCREEN, MSG_BOX_FLAG_YESNO, ConfirmGioIronManMessageBoxCallBack );
return( TRUE );
}
return( FALSE );
}
void ConfirmGioIronManMessageBoxCallBack( UINT8 bExitValue )
{
if( bExitValue == MSG_BOX_RETURN_YES )
{
gubGameOptionScreenHandler = GIO_IRON_MAN_MODE;
}
else
{
ButtonList[ guiGameSaveToggles[ GIO_IRON_MAN ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
ButtonList[ guiGameSaveToggles[ GIO_CAN_SAVE ] ]->uiFlags |= BUTTON_CLICKED_ON;
}
}
void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY)
{
HVOBJECT hHandle;
// get the video object
GetVideoObject(&hHandle, guiGIOSMALLFRAME);
// blt to sX, sY relative to upper left corner
BltVideoObject(FRAME_BUFFER, hHandle, 0, sX, sY , VO_BLT_SRCTRANSPARENCY,NULL);
return;
}
#endif