mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
o This makes the code more easy to maintain o Highspeed timer seems to run fine (after months of tests) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5643 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2867 lines
102 KiB
C++
2867 lines
102 KiB
C++
#ifdef PRECOMPILEDHEADERS
|
|
#include "JA2 All.h"
|
|
#include "Intro.h"
|
|
#else
|
|
#include "Types.h"
|
|
#include "MPHostScreen.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 "Text Input.h"
|
|
#include "_Ja25EnglishText.h"
|
|
#include "Soldier Profile.h"
|
|
#endif
|
|
|
|
#include "gameloop.h"
|
|
#include "connect.h"
|
|
#include "network.h"
|
|
#include "saveloadscreen.h"
|
|
|
|
#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>
|
|
#include "MPJoinScreen.h"
|
|
#include "MainMenuScreen.h"
|
|
#include "Init.h"
|
|
#include "xml.h"
|
|
|
|
////////////////////////////////////////////
|
|
//
|
|
// Global Defines
|
|
//
|
|
///////////////////////////////////////////
|
|
|
|
INT32 giMPHMessageBox = -1; // message box handle
|
|
|
|
#define MPH_TITLE_FONT FONT14ARIAL
|
|
#define MPH_TITLE_COLOR FONT_MCOLOR_WHITE
|
|
|
|
#define MPH_LABEL_TEXT_FONT FONT10ARIAL
|
|
#define MPH_LABEL_TEXT_COLOR FONT_MCOLOR_WHITE
|
|
|
|
#define MPH_TOGGLE_TEXT_FONT FONT10ARIAL
|
|
#define MPH_TOGGLE_TEXT_COLOR FONT_MCOLOR_WHITE
|
|
|
|
//buttons
|
|
#define MPH_CANCEL_X iScreenWidthOffset + ((320 - 115) / 2)
|
|
|
|
#define MPH_BTN_START_X iScreenWidthOffset + 320 + 105
|
|
#define MPH_BTN_START_Y iScreenHeightOffset + 435
|
|
|
|
//main title
|
|
#define MPH_MAIN_TITLE_X 0
|
|
#define MPH_MAIN_TITLE_Y iScreenHeightOffset + 10
|
|
#define MPH_MAIN_TITLE_WIDTH SCREEN_WIDTH
|
|
|
|
#define MPH_TITLE_DISTANCE 30 // higher means closer
|
|
|
|
#define MPH_GAP_BN_SETTINGS 35
|
|
#define MPH_OFFSET_TO_TEXT 36
|
|
#define MPH_OFFSET_TO_TOGGLE_BOX 180
|
|
#define MPH_OFFSET_TO_TOGGLE_BOX_Y 9
|
|
|
|
// ---------------------------------
|
|
// 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 (MPH_OFFSET_TO_TOGGLE_BOX - MPH_OFFSET_TO_TEXT)
|
|
#define COMBO_WIDTH (MPH_OFFSET_TO_TOGGLE_BOX - MPH_OFFSET_TO_TEXT)
|
|
// ---------------------------------
|
|
|
|
/*********************************
|
|
FIRST COLUMN
|
|
**********************************/
|
|
|
|
#define FIRST_COLUMN_X iScreenWidthOffset + 10
|
|
#define FIRST_COLUMN_Y iScreenHeightOffset + 75
|
|
|
|
#define MPH_SYNC_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_SYNC_SETTING_Y FIRST_COLUMN_Y - CORRECTION_Y_OFFSET
|
|
#define MPH_SYNC_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_SQUADSIZE_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_SQUADSIZE_SETTING_Y MPH_SYNC_SETTING_Y + COMBO_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_SQUADSIZE_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_TIMETURNS_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_TIMETURNS_SETTING_Y MPH_SQUADSIZE_SETTING_Y + COMBO_Y_OFFSET
|
|
#define MPH_TIMETURNS_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_INVENTORY_SETTING_X FIRST_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_INVENTORY_SETTING_Y MPH_TIMETURNS_SETTING_Y + COMBO_Y_OFFSET
|
|
#define MPH_INVENTORY_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_BOBBYRAY_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_BOBBYRAY_SETTING_Y MPH_INVENTORY_SETTING_Y + CHECK_Y_OFFSET
|
|
#define MPH_BOBBYRAY_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_REPORTMERC_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_REPORTMERC_SETTING_Y MPH_BOBBYRAY_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_REPORTMERC_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
|
|
/*********************************
|
|
SECOND COLUMN
|
|
**********************************/
|
|
|
|
#define SECOND_COLUMN_X iScreenWidthOffset + 210
|
|
#define SECOND_COLUMN_Y FIRST_COLUMN_Y
|
|
|
|
#define MPH_MAXPLAYERS_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_MAXPLAYERS_SETTING_Y SECOND_COLUMN_Y
|
|
#define MPH_MAXPLAYERS_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_STARTINGTIME_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_STARTINGTIME_SETTING_Y MPH_MAXPLAYERS_SETTING_Y + COMBO_Y_OFFSET
|
|
#define MPH_STARTINGTIME_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_WEAPONDAMAGE_SETTING_X SECOND_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_WEAPONDAMAGE_SETTING_Y MPH_STARTINGTIME_SETTING_Y + COMBO_Y_OFFSET
|
|
#define MPH_WEAPONDAMAGE_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_TRAITS_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_TRAITS_SETTING_Y MPH_WEAPONDAMAGE_SETTING_Y + CHECK_Y_OFFSET
|
|
#define MPH_TRAITS_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_HIREMERC_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_HIREMERC_SETTING_Y MPH_TRAITS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_HIREMERC_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_CIVS_SETTING_X SECOND_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_CIVS_SETTING_Y MPH_HIREMERC_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_CIVS_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
/*********************************
|
|
THIRD COLUMN
|
|
**********************************/
|
|
|
|
#define THIRD_COLUMN_X iScreenWidthOffset + 413
|
|
#define THIRD_COLUMN_Y FIRST_COLUMN_Y
|
|
|
|
#define MPH_GAMETYPE_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_GAMETYPE_SETTING_Y THIRD_COLUMN_Y
|
|
#define MPH_GAMETYPE_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_STARTINGCASH_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_STARTINGCASH_SETTING_Y MPH_GAMETYPE_SETTING_Y + COMBO_Y_OFFSET
|
|
#define MPH_STARTINGCASH_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_SECTOREDGE_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_SECTOREDGE_SETTING_Y MPH_STARTINGCASH_SETTING_Y + CHECK_Y_OFFSET
|
|
#define MPH_SECTOREDGE_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_DIFFICULTY_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET
|
|
#define MPH_DIFFICULTY_SETTING_Y MPH_SECTOREDGE_SETTING_Y + COMBO_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_DIFFICULTY_SETTING_WIDTH COMBO_WIDTH
|
|
|
|
#define MPH_MAXENEMIES_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_MAXENEMIES_SETTING_Y MPH_DIFFICULTY_SETTING_Y + CHECK_Y_OFFSET
|
|
#define MPH_MAXENEMIES_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
#define MPH_SAMEMERC_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET
|
|
#define MPH_SAMEMERC_SETTING_Y MPH_MAXENEMIES_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET
|
|
#define MPH_SAMEMERC_SETTING_WIDTH CHECK_WIDTH
|
|
|
|
///////////////////////////////////////////
|
|
//
|
|
// Global Variables
|
|
//
|
|
///////////////////////////////////////////
|
|
|
|
BOOLEAN gfMPHScreenEntry = TRUE;
|
|
BOOLEAN gfMPHScreenExit = FALSE;
|
|
BOOLEAN gfReRenderMPHScreen=TRUE;
|
|
BOOLEAN gfMPHButtonsAllocated = FALSE;
|
|
|
|
// RW:
|
|
UINT32 guiMPHSMALLFRAME;
|
|
|
|
void RenderMPHSmallSelectionFrame(INT16 sX, INT16 sY);
|
|
|
|
// ----------------
|
|
// Traits
|
|
enum
|
|
{
|
|
MPH_TRAITS_OLD = 0,
|
|
MPH_TRAITS_NEW = 1,
|
|
|
|
MPH_NUM_TRAITS_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHTraitsOptionTogglesImage[ MPH_NUM_TRAITS_OPTIONS ];
|
|
UINT32 guiMPHTraitsOptionToggles[ MPH_NUM_TRAITS_OPTIONS ];
|
|
void BtnMPHOldTraitsCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHNewTraitsCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void MTHNewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue );
|
|
|
|
void BtnMPHOldTraitsCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_TRAITS_SETTING_X), (MPH_TRAITS_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
BOOLEAN DoMPHMessageBox( 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
|
|
giMPHMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT16 ) ( usFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, &CenteringRect );
|
|
|
|
// send back return state
|
|
return( ( giMPHMessageBox != -1 ) );
|
|
}
|
|
|
|
UINT8 GetMPHCurrentTraitsOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_TRAITS_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHTraitsOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
void BtnMPHNewTraitsCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if (!gGameExternalOptions.fReadProfileDataFromXML)
|
|
{
|
|
PlayButtonSound( guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ], BUTTON_SOUND_DISABLED_CLICK );
|
|
|
|
DoMPHMessageBox( MSG_BOX_BASIC_STYLE, zGioNewTraitsImpossibleText[0], MP_HOST_SCREEN, MSG_BOX_FLAG_OK, MTHNewTraitsNotPossibleMessageBoxCallBack );
|
|
}
|
|
else
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_TRAITS_SETTING_X), (MPH_TRAITS_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
}
|
|
|
|
void MTHNewTraitsNotPossibleMessageBoxCallBack( UINT8 bExitValue )
|
|
{
|
|
}
|
|
|
|
// ----------------
|
|
|
|
// -------------
|
|
// Sync
|
|
enum
|
|
{
|
|
MPH_SYNC_NO = 0,
|
|
MPH_SYNC_YES = 1,
|
|
|
|
MPH_NUM_SYNC_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHSyncOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHSyncOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHNoSyncCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHYesSyncCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHNoSyncCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SYNC_SETTING_X), (MPH_SYNC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSyncOptionToggles[ MPH_SYNC_YES ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSyncOptionToggles[ MPH_SYNC_NO ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
void BtnMPHYesSyncCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SYNC_SETTING_X), (MPH_SYNC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSyncOptionToggles[ MPH_SYNC_NO ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSyncOptionToggles[ MPH_SYNC_YES ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentSyncOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_SYNC_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHSyncOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// MaxEnemies
|
|
enum
|
|
{
|
|
MPH_MAXENEMIES_NO = 0,
|
|
MPH_MAXENEMIES_YES = 1,
|
|
|
|
MPH_NUM_MAXENEMIES_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHMaxEnemiesOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHMaxEnemiesOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHNoMaxEnemiesCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHYesMaxEnemiesCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHNoMaxEnemiesCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_MAXENEMIES_SETTING_X), (MPH_MAXENEMIES_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHYesMaxEnemiesCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_MAXENEMIES_SETTING_X), (MPH_MAXENEMIES_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentMaxEnemiesOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_MAXENEMIES_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHMaxEnemiesOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// Civs
|
|
enum
|
|
{
|
|
MPH_CIVS_NO = 0,
|
|
MPH_CIVS_YES = 1,
|
|
|
|
MPH_NUM_CIVS_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHCivsOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHCivsOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHNoCivsCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHYesCivsCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHNoCivsCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_CIVS_SETTING_X), (MPH_CIVS_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHCivsOptionToggles[ MPH_CIVS_YES ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHCivsOptionToggles[ MPH_CIVS_NO ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHYesCivsCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_CIVS_SETTING_X), (MPH_CIVS_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHCivsOptionToggles[ MPH_CIVS_NO ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHCivsOptionToggles[ MPH_CIVS_YES ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentCivsOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_CIVS_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHCivsOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// ReportMerc
|
|
enum
|
|
{
|
|
MPH_REPORTMERC_NO = 0,
|
|
MPH_REPORTMERC_YES = 1,
|
|
|
|
MPH_NUM_REPORTMERC_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHReportMercOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHReportMercOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHNoReportMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHYesReportMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHNoReportMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_REPORTMERC_SETTING_X), (MPH_REPORTMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHYesReportMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_REPORTMERC_SETTING_X), (MPH_REPORTMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentReportMercOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_REPORTMERC_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHReportMercOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// HireMerc
|
|
enum
|
|
{
|
|
MPH_HIREMERC_NORMAL = 0,
|
|
MPH_HIREMERC_RANDOM = 1,
|
|
|
|
MPH_NUM_HIREMERC_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHHireMercOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHHireMercOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHRandomHireMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHNormalHireMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHRandomHireMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_HIREMERC_SETTING_X), (MPH_HIREMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHNormalHireMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_HIREMERC_SETTING_X), (MPH_HIREMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentHireMercOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_HIREMERC_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHHireMercOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// SectorEdge
|
|
enum
|
|
{
|
|
MPH_SECTOREDGE_SELECTABLE = 0,
|
|
MPH_SECTOREDGE_RANDOM = 1,
|
|
|
|
MPH_NUM_SECTOREDGE_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHSectorEdgeOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHSectorEdgeOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHRandomSectorEdgeCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHSelectableSectorEdgeCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHRandomSectorEdgeCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SECTOREDGE_SETTING_X), (MPH_SECTOREDGE_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHSelectableSectorEdgeCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SECTOREDGE_SETTING_X), (MPH_SECTOREDGE_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentSectorEdgeOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_SECTOREDGE_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHSectorEdgeOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// BobbyRay
|
|
enum
|
|
{
|
|
MPH_BOBBYRAY_ALLOW = 0,
|
|
MPH_BOBBYRAY_DISABLE = 1,
|
|
|
|
MPH_NUM_BOBBYRAY_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHBobbyRayOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHBobbyRayOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHDisableBobbyRayCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHAllowBobbyRayCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHDisableBobbyRayCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_BOBBYRAY_SETTING_X), (MPH_BOBBYRAY_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHAllowBobbyRayCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_BOBBYRAY_SETTING_X), (MPH_BOBBYRAY_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentBobbyRayOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_BOBBYRAY_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHBobbyRayOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// SameMerc
|
|
enum
|
|
{
|
|
MPH_SAMEMERC_DISABLE = 0,
|
|
MPH_SAMEMERC_ALLOW = 1,
|
|
|
|
MPH_NUM_SAMEMERC_OPTIONS,
|
|
};
|
|
|
|
UINT32 guiMPHSameMercOptionTogglesImage[ MPH_NUM_SYNC_OPTIONS ];
|
|
UINT32 guiMPHSameMercOptionToggles[ MPH_NUM_SYNC_OPTIONS ];
|
|
void BtnMPHDisableSameMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void BtnMPHAllowSameMercCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
void BtnMPHDisableSameMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SAMEMERC_SETTING_X), (MPH_SAMEMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
void BtnMPHAllowSameMercCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
RestoreExternBackgroundRect( (MPH_SAMEMERC_SETTING_X), (MPH_SAMEMERC_SETTING_Y + 10), 230, 40 );
|
|
|
|
ButtonList[ guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
|
|
PlayButtonSound( guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ], BUTTON_SOUND_CLICKED_ON );
|
|
}
|
|
}
|
|
|
|
UINT8 GetCurrentSameMercOptionButtonSetting()
|
|
{
|
|
UINT8 cnt;
|
|
|
|
for( cnt=0; cnt<MPH_NUM_SAMEMERC_OPTIONS; cnt++)
|
|
{
|
|
if( ButtonList[ guiMPHSameMercOptionToggles[ cnt ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
return( cnt );
|
|
}
|
|
}
|
|
return( 0 );
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// Difficulty
|
|
enum
|
|
{
|
|
MPH_DIFF_EASY = 0,
|
|
MPH_DIFF_MED = 1,
|
|
MPH_DIFF_HARD = 2,
|
|
MPH_DIFF_INSANE = 3,
|
|
|
|
MPH_NUM_DIFF_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHDifficulty;
|
|
|
|
UINT32 giMPHDifficultyButton[ 2 ];
|
|
INT32 giMPHDifficultyButtonImage[ 2 ];
|
|
void BtnMPHDifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHDifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHDifficultySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHDifficulty > 0 )
|
|
{
|
|
PlayButtonSound( giMPHDifficultyButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHDifficulty--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHDifficultyButton[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 BtnMPHDifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if ( iMPHDifficulty < 3 )
|
|
{
|
|
PlayButtonSound( giMPHDifficultyButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHDifficulty++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHDifficultyButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// GameType
|
|
enum
|
|
{
|
|
MPH_GT_DEATHMATCH = 0,
|
|
MPH_GT_TEAM_DEATHMATCH = 1,
|
|
MPH_GT_COOP = 2,
|
|
|
|
MPH_NUM_GAMETYPE_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHGameType;
|
|
|
|
UINT32 giMPHGameTypeButton[ 2 ];
|
|
INT32 giMPHGameTypeButtonImage[ 2 ];
|
|
void BtnMPHGameTypeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHGameTypeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHGameTypeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHGameType > MPH_GT_DEATHMATCH )
|
|
{
|
|
PlayButtonSound( giMPHGameTypeButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHGameType--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHGameTypeButton[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 BtnMPHGameTypeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHGameType < MPH_GT_COOP )
|
|
{
|
|
PlayButtonSound( giMPHGameTypeButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHGameType++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHGameTypeButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// MaxPlayers
|
|
enum
|
|
{
|
|
MPH_MAXPLAYERS_2 = 2,
|
|
MPH_MAXPLAYERS_3 = 3,
|
|
MPH_MAXPLAYERS_4 = 4,
|
|
|
|
MPH_NUM_MAXPLAYERS_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHMaxPlayers;
|
|
|
|
UINT32 giMPHMaxPlayersButton[ 2 ];
|
|
INT32 giMPHMaxPlayersButtonImage[ 2 ];
|
|
void BtnMPHMaxPlayersSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHMaxPlayersSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHMaxPlayersSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHMaxPlayers > MPH_MAXPLAYERS_2 )
|
|
{
|
|
PlayButtonSound( giMPHMaxPlayersButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHMaxPlayers--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHMaxPlayersButton[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 BtnMPHMaxPlayersSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHMaxPlayers < MPH_MAXPLAYERS_4 )
|
|
{
|
|
PlayButtonSound( giMPHMaxPlayersButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHMaxPlayers++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHMaxPlayersButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// Inventory
|
|
enum
|
|
{
|
|
MPH_INV_OLD = 0,
|
|
MPH_INV_NEW = 1,
|
|
MPH_INV_NEW_NAS = 2,
|
|
|
|
MPH_NUM_INV_OPTIONS,
|
|
};
|
|
|
|
INT8 iMPHInventory;
|
|
|
|
UINT32 giMPHInventoryButton[ 2 ];
|
|
INT32 giMPHInventoryButtonImage[ 2 ];
|
|
void BtnMPHInventorySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHInventorySelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHInventorySelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHInventory > MPH_INV_OLD )
|
|
{
|
|
PlayButtonSound( giMPHInventoryButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHInventory--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHInventoryButton[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 BtnMPHInventorySelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHInventory < MPH_INV_NEW_NAS )
|
|
{
|
|
PlayButtonSound( giMPHInventoryButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHInventory++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHInventoryButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// StartingTime
|
|
enum
|
|
{
|
|
MPH_STARTINGTIME_MORNING = 0,
|
|
MPH_STARTINGTIME_AFTERNOON = 1,
|
|
MPH_STARTINGTIME_NIGHT = 2,
|
|
|
|
MPH_NUM_STARTINGTIME_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHStartingTime;
|
|
|
|
UINT32 giMPHStartingTimeButton[ 2 ];
|
|
INT32 giMPHStartingTimeButtonImage[ 2 ];
|
|
void BtnMPHStartingTimeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHStartingTimeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHStartingTimeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHStartingTime > MPH_STARTINGTIME_MORNING )
|
|
{
|
|
PlayButtonSound( giMPHStartingTimeButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHStartingTime--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHStartingTimeButton[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 BtnMPHStartingTimeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHStartingTime < MPH_STARTINGTIME_NIGHT )
|
|
{
|
|
PlayButtonSound( giMPHStartingTimeButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHStartingTime++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHStartingTimeButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// StartingCash
|
|
enum
|
|
{
|
|
MPH_STARTINGCASH_LOW = 0,
|
|
MPH_STARTINGCASH_MEDIUM = 1,
|
|
MPH_STARTINGCASH_HIGH = 2,
|
|
MPH_STARTINGCASH_UNLIMITED = 3,
|
|
|
|
MPH_NUM_STARTINGCASH_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHStartingCash;
|
|
|
|
UINT32 giMPHStartingCashButton[ 2 ];
|
|
INT32 giMPHStartingCashButtonImage[ 2 ];
|
|
void BtnMPHStartingCashSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHStartingCashSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHStartingCashSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHStartingCash > MPH_STARTINGCASH_LOW )
|
|
{
|
|
PlayButtonSound( giMPHStartingCashButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHStartingCash--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHStartingCashButton[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 BtnMPHStartingCashSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHStartingCash < MPH_STARTINGCASH_UNLIMITED )
|
|
{
|
|
PlayButtonSound( giMPHStartingCashButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHStartingCash++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHStartingCashButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// WeaponDamage
|
|
enum
|
|
{
|
|
MPH_WEAPONDAMAGE_VERYLOW = 0,
|
|
MPH_WEAPONDAMAGE_LOW = 1,
|
|
MPH_WEAPONDAMAGE_NORMAL = 2,
|
|
|
|
MPH_NUM_WEAPONDAMAGE_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHWeaponDamage;
|
|
|
|
UINT32 giMPHWeaponDamageButton[ 2 ];
|
|
INT32 giMPHWeaponDamageButtonImage[ 2 ];
|
|
void BtnMPHWeaponDamageSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHWeaponDamageSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHWeaponDamageSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHWeaponDamage > MPH_WEAPONDAMAGE_VERYLOW )
|
|
{
|
|
PlayButtonSound( giMPHWeaponDamageButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHWeaponDamage--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHWeaponDamageButton[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 BtnMPHWeaponDamageSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHWeaponDamage < MPH_WEAPONDAMAGE_NORMAL )
|
|
{
|
|
PlayButtonSound( giMPHWeaponDamageButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHWeaponDamage++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHWeaponDamageButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// TimeTurns
|
|
enum
|
|
{
|
|
MPH_TIMETURNS_NEVER = 0,
|
|
MPH_TIMETURNS_SLOW = 1,
|
|
MPH_TIMETURNS_MEDIUM = 2,
|
|
MPH_TIMETURNS_FAST = 3,
|
|
|
|
MPH_NUM_TIMETURNS_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHTimeTurns;
|
|
|
|
UINT32 giMPHTimeTurnsButton[ 2 ];
|
|
INT32 giMPHTimeTurnsButtonImage[ 2 ];
|
|
void BtnMPHTimeTurnsSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHTimeTurnsSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHTimeTurnsSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHTimeTurns > MPH_TIMETURNS_NEVER )
|
|
{
|
|
PlayButtonSound( giMPHTimeTurnsButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHTimeTurns--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHTimeTurnsButton[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 BtnMPHTimeTurnsSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHTimeTurns < MPH_TIMETURNS_FAST )
|
|
{
|
|
PlayButtonSound( giMPHTimeTurnsButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHTimeTurns++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHTimeTurnsButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
// -------------
|
|
// SquadSize
|
|
enum
|
|
{
|
|
MPH_SQUADSIZE_1 = 1,
|
|
MPH_SQUADSIZE_2 = 2,
|
|
MPH_SQUADSIZE_3 = 3,
|
|
MPH_SQUADSIZE_4 = 4,
|
|
MPH_SQUADSIZE_5 = 5,
|
|
MPH_SQUADSIZE_6 = 6,
|
|
|
|
MPH_NUM_SQUADSIZE_SETTINGS,
|
|
};
|
|
|
|
INT8 iMPHSquadSize;
|
|
|
|
UINT32 giMPHSquadSizeButton[ 2 ];
|
|
INT32 giMPHSquadSizeButtonImage[ 2 ];
|
|
void BtnMPHSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
|
void BtnMPHSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
|
|
|
void BtnMPHSquadSizeSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHSquadSize > MPH_SQUADSIZE_1 )
|
|
{
|
|
PlayButtonSound( giMPHSquadSizeButton[0], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHSquadSize--;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHSquadSizeButton[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 BtnMPHSquadSizeSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT || reason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
|
|
{
|
|
if ( iMPHSquadSize < MPH_SQUADSIZE_6 )
|
|
{
|
|
PlayButtonSound( giMPHSquadSizeButton[1], BUTTON_SOUND_CLICKED_ON );
|
|
|
|
iMPHSquadSize++;
|
|
gfReRenderMPHScreen =TRUE;
|
|
}
|
|
else
|
|
{
|
|
PlayButtonSound( giMPHSquadSizeButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
|
}
|
|
}
|
|
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
}
|
|
|
|
// -------------
|
|
|
|
//enum for different states of screen
|
|
enum
|
|
{
|
|
MPH_NOTHING,
|
|
MPH_CANCEL,
|
|
MPH_START
|
|
};
|
|
|
|
UINT8 gubMPHScreenHandler=MPH_NOTHING; // State changer for HandleMPHScreen()
|
|
|
|
UINT32 gubMPHExitScreen = MP_HOST_SCREEN; // The screen that is in control next iteration of the game_loop
|
|
|
|
UINT32 guiMPHMainBackGroundImage;
|
|
|
|
// ------------
|
|
// String fields
|
|
// Wide-char strings that will hold the variables until they are transferred to the CHAR ascii fields
|
|
CHAR16 gzServerNameField[ 30 ] = {0} ;
|
|
CHAR16 gzFileTransferDirectory[ 100 ] = {0} ;
|
|
CHAR16 gzKitBag[ 100 ] = {0};
|
|
|
|
// ------------
|
|
// Controls with Multi Selection!
|
|
UINT8 guiMPHGameType;
|
|
UINT8 guiMPHDifficultLevel;
|
|
UINT8 guiMPHMaxPlayers;
|
|
UINT8 guiMPHSquadSize;
|
|
UINT8 guiMPHStartingTime;
|
|
UINT8 guiMPHStartingCash;
|
|
UINT8 guiMPHTimeTurns;
|
|
UINT8 guiMPHWeaponDamage;
|
|
UINT8 guiMPHInventory;
|
|
// ------------
|
|
|
|
// ------------
|
|
// Controls with YES/NO
|
|
UINT8 guiMPHMaxEnemies;
|
|
UINT8 guiMPHSendFiles;
|
|
UINT8 guiMPHHireMerc;
|
|
UINT8 guiMPHSectorEdge;
|
|
UINT8 guiMPHBobbyRay;
|
|
UINT8 guiMPHSameMerc;
|
|
UINT8 guiMPHReportMerc;
|
|
UINT8 guiMPHCivs;
|
|
UINT8 guiMPHNewTraits;
|
|
// ------------
|
|
|
|
////////////////////////////////////////////
|
|
//
|
|
// Screen Controls
|
|
//
|
|
///////////////////////////////////////////
|
|
|
|
// Start Button
|
|
void BtnMPHStartCallback(GUI_BUTTON *btn,INT32 reason);
|
|
UINT32 guiMPHStartButton;
|
|
INT32 giMPHStartBtnImage;
|
|
|
|
// Cancel Button
|
|
void BtnMPHCancelCallback(GUI_BUTTON *btn,INT32 reason);
|
|
UINT32 guiMPHCancelButton;
|
|
INT32 giMPHCancelBtnImage;
|
|
|
|
////////////////////////////////////////////
|
|
//
|
|
// Local Function Prototypes
|
|
//
|
|
///////////////////////////////////////////
|
|
|
|
extern void ClearMainMenu();
|
|
|
|
BOOLEAN EnterMPHScreen();
|
|
BOOLEAN ExitMPHScreen();
|
|
void HandleMPHScreen();
|
|
BOOLEAN RenderMPHScreen();
|
|
void GetMPHScreenUserInput();
|
|
bool ValidateMPSettings();
|
|
void SaveMPSettings();
|
|
UINT8 GetMPHGameTypeButtonSetting();
|
|
BOOLEAN DoMPHMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback );
|
|
void DoneFadeOutForExitMPHScreen( void );
|
|
void DoneFadeInForExitMPHScreen( void );
|
|
|
|
////////////////////////////////////////////
|
|
//
|
|
// Functions
|
|
//
|
|
///////////////////////////////////////////
|
|
|
|
void SaveMPSettings()
|
|
{
|
|
MpIniExists();
|
|
vfs::PropertyContainer props;
|
|
props.initFromIniFile(JA2MP_INI_FILENAME);
|
|
|
|
guiMPHMaxPlayers = iMPHMaxPlayers;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_MAX_CLIENTS, guiMPHMaxPlayers);
|
|
|
|
guiMPHSquadSize = iMPHSquadSize;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_MAX_MERCS, guiMPHSquadSize);
|
|
|
|
guiMPHStartingCash = iMPHStartingCash;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_STARTING_BALANCE, guiMPHStartingCash);
|
|
|
|
guiMPHWeaponDamage = iMPHWeaponDamage;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_DAMAGE_MULTIPLIER, guiMPHWeaponDamage);
|
|
|
|
guiMPHTimeTurns = iMPHTimeTurns;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_TIMED_TURN_SECS_PER_TICK, guiMPHTimeTurns);
|
|
|
|
guiMPHGameType = iMPHGameType;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_GAME_MODE, guiMPHGameType);
|
|
|
|
guiMPHStartingTime = iMPHStartingTime;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_TIME, guiMPHStartingTime);
|
|
|
|
guiMPHMaxEnemies = GetCurrentMaxEnemiesOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_OVERRIDE_MAX_AI, guiMPHMaxEnemies);
|
|
|
|
guiMPHHireMerc = GetCurrentHireMercOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_RANDOM_MERCS, guiMPHHireMerc);
|
|
|
|
guiMPHSameMerc = GetCurrentSameMercOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_SAME_MERC, guiMPHSameMerc);
|
|
|
|
guiMPHBobbyRay = GetCurrentBobbyRayOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_DISABLE_BOBBY_RAYS, guiMPHBobbyRay);
|
|
|
|
guiMPHReportMerc = GetCurrentReportMercOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_REPORT_NAME, guiMPHReportMerc);
|
|
|
|
guiMPHSectorEdge = GetCurrentSectorEdgeOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_RANDOM_EDGES, guiMPHSectorEdge);
|
|
|
|
guiMPHCivs = GetCurrentCivsOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_CIV_ENABLED, guiMPHCivs);
|
|
|
|
guiMPHInventory = iMPHInventory;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_ALLOW_CUSTOM_NIV, guiMPHInventory);
|
|
|
|
guiMPHSendFiles = GetCurrentSyncOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_SYNC_CLIENTS_MP_DIR, guiMPHSendFiles);
|
|
|
|
guiMPHNewTraits = GetMPHCurrentTraitsOptionButtonSetting();
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_NEW_TRAITS, guiMPHNewTraits);
|
|
|
|
guiMPHDifficultLevel = iMPHDifficulty + 1;
|
|
props.setIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_DIFFICULT_LEVEL, guiMPHDifficultLevel - 1);
|
|
|
|
// This writes the data back (from the GUI) to the Profiles/UserProfile/ja2_mp.ini
|
|
props.writeToIniFile(JA2MP_INI_FILENAME, false);
|
|
}
|
|
|
|
bool ValidateMPSettings()
|
|
{
|
|
vfs::Path sUserDir(gzFileTransferDirectory);
|
|
if(!vfs::OS::checkRealDirectory(sUserDir))
|
|
{
|
|
DoMPHMessageBox( MSG_BOX_BASIC_STYLE, gzMPHScreenText[MPH_FILE_TRANSFER_DIR_NOT_EXIST], MP_HOST_SCREEN, MSG_BOX_FLAG_OK, NULL );
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
UINT32 MPHostScreenInit( void )
|
|
{
|
|
memset( &gGameOptions, 0, sizeof( GAME_OPTIONS ) );
|
|
|
|
// this is wrong as ScreenInit is called at game start, but the settigs can change anytime
|
|
// has be called in ScreenEnter for example
|
|
std::vector<CHAR16> szTime(6,0);
|
|
|
|
// read settings from JA2_mp.ini
|
|
MpIniExists();
|
|
vfs::PropertyContainer props;
|
|
props.initFromIniFile(JA2MP_INI_FILENAME);
|
|
|
|
// ------------
|
|
// Get the data from ja2_mp.ini
|
|
// ------------
|
|
|
|
props.getStringProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_SERVER_NAME, gzServerNameField, 30, L"My JA2 Server");
|
|
|
|
guiMPHMaxPlayers = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_MAX_CLIENTS, 4);
|
|
|
|
guiMPHSquadSize = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_MAX_MERCS, 6);
|
|
|
|
guiMPHStartingCash = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_STARTING_BALANCE, 1);
|
|
|
|
guiMPHWeaponDamage = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_DAMAGE_MULTIPLIER, 1);
|
|
|
|
guiMPHTimeTurns = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_TIMED_TURN_SECS_PER_TICK, 2);
|
|
|
|
props.getStringProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_FILE_TRANSFER_DIRECTORY, gzFileTransferDirectory, 100, L"MULTIPLAYER/Servers/My Server");
|
|
|
|
props.getStringProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_KIT_BAG, gzKitBag, 100, L"");
|
|
|
|
guiMPHStartingTime = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_TIME, 1);
|
|
|
|
guiMPHMaxEnemies = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_OVERRIDE_MAX_AI, 0);
|
|
|
|
guiMPHNewTraits = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_NEW_TRAITS, 0);
|
|
|
|
// It is not allowed to play with new traits
|
|
if (!gGameExternalOptions.fReadProfileDataFromXML)
|
|
guiMPHNewTraits = 0;
|
|
|
|
|
|
guiMPHHireMerc = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_RANDOM_MERCS, 0);
|
|
|
|
guiMPHSameMerc = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_SAME_MERC, 1);
|
|
|
|
guiMPHReportMerc = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_REPORT_NAME, 1);
|
|
|
|
guiMPHBobbyRay = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_DISABLE_BOBBY_RAYS, 0);
|
|
|
|
guiMPHSectorEdge = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_RANDOM_EDGES, 0);
|
|
|
|
guiMPHCivs = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_CIV_ENABLED, 0);
|
|
|
|
guiMPHInventory = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION, JA2MP_ALLOW_CUSTOM_NIV, 0);
|
|
|
|
// It is not allowed to play with NIV
|
|
if (!IsNIVModeValid(true))
|
|
guiMPHInventory = 0;
|
|
|
|
guiMPHSendFiles = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_SYNC_CLIENTS_MP_DIR, 1);
|
|
|
|
guiMPHGameType = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_GAME_MODE, MP_TYPE_DEATHMATCH);
|
|
|
|
guiMPHDifficultLevel = (UINT8)props.getIntProperty(JA2MP_INI_INITIAL_SECTION,JA2MP_DIFFICULT_LEVEL, 3) + 1;
|
|
|
|
return( 1 );
|
|
}
|
|
|
|
|
|
UINT32 MPHostScreenHandle( void )
|
|
{
|
|
StartFrameBufferRender();
|
|
|
|
if( gfMPHScreenEntry )
|
|
{
|
|
// need to reload ja2_mp.ini
|
|
MPHostScreenInit();
|
|
|
|
EnterMPHScreen();
|
|
gfMPHScreenEntry = FALSE;
|
|
gfMPHScreenExit = FALSE;
|
|
InvalidateRegion( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
|
|
}
|
|
|
|
GetMPHScreenUserInput();
|
|
|
|
HandleMPHScreen();
|
|
|
|
// render buttons marked dirty
|
|
MarkButtonsDirty( );
|
|
RenderButtons( );
|
|
|
|
// render text boxes
|
|
RenderAllTextFields(); // textbox system call
|
|
|
|
ExecuteBaseDirtyRectQueue();
|
|
EndFrameBufferRender();
|
|
|
|
// handle fades in and out
|
|
if ( HandleFadeOutCallback( ) )
|
|
{
|
|
ClearMainMenu();
|
|
return( gubMPHExitScreen );
|
|
}
|
|
|
|
if ( HandleBeginFadeOut( gubMPHExitScreen ) )
|
|
{
|
|
return( gubMPHExitScreen );
|
|
}
|
|
|
|
if ( HandleFadeInCallback( ) )
|
|
{
|
|
// Re-render the scene!
|
|
RenderMPHScreen();
|
|
}
|
|
|
|
if ( HandleBeginFadeIn( gubMPHExitScreen ) )
|
|
{
|
|
}
|
|
|
|
if( gfMPHScreenExit ) // we are exiting this screen
|
|
{
|
|
ExitMPHScreen(); // perform destruction
|
|
}
|
|
|
|
return( gubMPHExitScreen );
|
|
}
|
|
|
|
|
|
UINT32 MPHostScreenShutdown( void )
|
|
{
|
|
return( 1 );
|
|
}
|
|
|
|
BOOLEAN EnterMPHScreen()
|
|
{
|
|
VOBJECT_DESC VObjectDesc, VObjectDesc2;
|
|
|
|
if( gfMPHButtonsAllocated )
|
|
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, &guiMPHMainBackGroundImage ));
|
|
|
|
VObjectDesc2.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("INTERFACE\\GIOSmallFrame.sti", VObjectDesc2.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc2, &guiMPHSMALLFRAME));
|
|
|
|
//Join button
|
|
giMPHStartBtnImage = LoadButtonImage("INTERFACE\\PreferencesButtons.sti", -1,0,-1,2,-1 );
|
|
guiMPHStartButton = CreateIconAndTextButton( giMPHStartBtnImage, gzMPHScreenText[MPH_START_TEXT], OPT_BUTTON_FONT,
|
|
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
|
|
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
MPH_BTN_START_X, MPH_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHStartCallback);
|
|
|
|
SpecifyButtonSoundScheme( guiMPHStartButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyDisabledButtonStyle( guiMPHStartButton, DISABLED_STYLE_NONE );
|
|
|
|
//Cancel button
|
|
giMPHCancelBtnImage = UseLoadedButtonImage( giMPHStartBtnImage, -1,1,-1,3,-1 );
|
|
guiMPHCancelButton = CreateIconAndTextButton( giMPHCancelBtnImage, gzMPHScreenText[MPH_CANCEL_TEXT], OPT_BUTTON_FONT,
|
|
OPT_BUTTON_ON_COLOR, DEFAULT_SHADOW,
|
|
OPT_BUTTON_OFF_COLOR, DEFAULT_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
MPH_CANCEL_X, MPH_BTN_START_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHCancelCallback );
|
|
SpecifyButtonSoundScheme( guiMPHCancelButton, BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
|
|
// Initialise Text Boxes
|
|
InitTextInputMode(); // API call to initialise text input mode for this screen
|
|
// does not mean we are inputting text right away
|
|
|
|
// Player Name field
|
|
SetTextInputCursor( CUROSR_IBEAM_WHITE );
|
|
SetTextInputFont( (UINT16) FONT12ARIALFIXEDWIDTH ); //FONT12ARIAL //FONT12ARIALFIXEDWIDTH
|
|
Set16BPPTextFieldColor( Get16BPPColor(FROMRGB( 0, 0, 0) ) );
|
|
SetBevelColors( Get16BPPColor(FROMRGB(136, 138, 135)), Get16BPPColor(FROMRGB(24, 61, 81)) );
|
|
SetTextInputRegularColors( FONT_WHITE, 2 );
|
|
SetTextInputHilitedColors( 2, FONT_WHITE, FONT_WHITE );
|
|
SetCursorColor( Get16BPPColor(FROMRGB(255, 255, 255) ) );
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// MAX PLAYERS
|
|
|
|
giMPHMaxPlayersButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHMaxPlayersButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHMaxPlayersButton[ 0 ] = QuickCreateButton( giMPHMaxPlayersButtonImage[ 0 ], MPH_MAXPLAYERS_SETTING_X + 39, MPH_MAXPLAYERS_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHMaxPlayersSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHMaxPlayersButton[ 1 ] = QuickCreateButton( giMPHMaxPlayersButtonImage[ 1 ], MPH_MAXPLAYERS_SETTING_X + 158, MPH_MAXPLAYERS_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHMaxPlayersSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHMaxPlayersButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHMaxPlayersButton[1],0, 1 );
|
|
|
|
iMPHMaxPlayers = guiMPHMaxPlayers;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// SQUAD SIZE
|
|
|
|
giMPHSquadSizeButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHSquadSizeButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHSquadSizeButton[ 0 ] = QuickCreateButton( giMPHSquadSizeButtonImage[ 0 ], MPH_SQUADSIZE_SETTING_X + 39, MPH_SQUADSIZE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHSquadSizeSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHSquadSizeButton[ 1 ] = QuickCreateButton( giMPHSquadSizeButtonImage[ 1 ], MPH_SQUADSIZE_SETTING_X + 158, MPH_SQUADSIZE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHSquadSizeSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHSquadSizeButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHSquadSizeButton[1],0, 1 );
|
|
|
|
iMPHSquadSize= guiMPHSquadSize;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// STARTING TIME
|
|
|
|
giMPHStartingTimeButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHStartingTimeButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHStartingTimeButton[ 0 ] = QuickCreateButton( giMPHStartingTimeButtonImage[ 0 ], MPH_STARTINGTIME_SETTING_X + 39, MPH_STARTINGTIME_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHStartingTimeSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHStartingTimeButton[ 1 ] = QuickCreateButton( giMPHStartingTimeButtonImage[ 1 ], MPH_STARTINGTIME_SETTING_X + 158, MPH_STARTINGTIME_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHStartingTimeSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHStartingTimeButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHStartingTimeButton[1],0, 1 );
|
|
|
|
iMPHStartingTime = guiMPHStartingTime;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// STARTING CASH
|
|
|
|
giMPHStartingCashButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHStartingCashButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHStartingCashButton[ 0 ] = QuickCreateButton( giMPHStartingCashButtonImage[ 0 ], MPH_STARTINGCASH_SETTING_X + 39, MPH_STARTINGCASH_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHStartingCashSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHStartingCashButton[ 1 ] = QuickCreateButton( giMPHStartingCashButtonImage[ 1 ], MPH_STARTINGCASH_SETTING_X + 158, MPH_STARTINGCASH_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHStartingCashSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHStartingCashButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHStartingCashButton[1],0, 1 );
|
|
|
|
iMPHStartingCash = guiMPHStartingCash;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// WEAPON DAMAGE
|
|
|
|
giMPHWeaponDamageButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHWeaponDamageButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHWeaponDamageButton[ 0 ] = QuickCreateButton( giMPHWeaponDamageButtonImage[ 0 ], MPH_WEAPONDAMAGE_SETTING_X + 39, MPH_WEAPONDAMAGE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHWeaponDamageSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHWeaponDamageButton[ 1 ] = QuickCreateButton( giMPHWeaponDamageButtonImage[ 1 ], MPH_WEAPONDAMAGE_SETTING_X + 158, MPH_WEAPONDAMAGE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHWeaponDamageSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHWeaponDamageButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHWeaponDamageButton[1],0, 1 );
|
|
|
|
iMPHWeaponDamage = guiMPHWeaponDamage;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// TIME TURNS
|
|
|
|
giMPHTimeTurnsButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHTimeTurnsButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHTimeTurnsButton[ 0 ] = QuickCreateButton( giMPHTimeTurnsButtonImage[ 0 ], MPH_TIMETURNS_SETTING_X + 39, MPH_TIMETURNS_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHTimeTurnsSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHTimeTurnsButton[ 1 ] = QuickCreateButton( giMPHTimeTurnsButtonImage[ 1 ], MPH_TIMETURNS_SETTING_X + 158, MPH_TIMETURNS_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHTimeTurnsSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHTimeTurnsButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHTimeTurnsButton[1],0, 1 );
|
|
|
|
iMPHTimeTurns = guiMPHTimeTurns;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// DIFFICULTY SETTING
|
|
|
|
giMPHDifficultyButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHDifficultyButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHDifficultyButton[ 0 ] = QuickCreateButton( giMPHDifficultyButtonImage[ 0 ], MPH_DIFFICULTY_SETTING_X + 39, MPH_DIFFICULTY_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHDifficultySelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHDifficultyButton[ 1 ] = QuickCreateButton( giMPHDifficultyButtonImage[ 1 ], MPH_DIFFICULTY_SETTING_X + 158, MPH_DIFFICULTY_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHDifficultySelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHDifficultyButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHDifficultyButton[1],0, 1 );
|
|
|
|
iMPHDifficulty = guiMPHDifficultLevel - 1;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// GAME TYPE
|
|
|
|
giMPHGameTypeButtonImage[ 0 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,0,-1,1,-1 );
|
|
giMPHGameTypeButtonImage[ 1 ]= LoadButtonImage( "INTERFACE\\GIO_SELECTION_ARROWS.STI" ,-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHGameTypeButton[ 0 ] = QuickCreateButton( giMPHGameTypeButtonImage[ 0 ], MPH_GAMETYPE_SETTING_X + 39, MPH_GAMETYPE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHGameTypeSelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHGameTypeButton[ 1 ] = QuickCreateButton( giMPHGameTypeButtonImage[ 1 ], MPH_GAMETYPE_SETTING_X + 158, MPH_GAMETYPE_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHGameTypeSelectionRightCallback );
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHGameTypeButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHGameTypeButton[1],0, 1 );
|
|
|
|
iMPHGameType = guiMPHGameType;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// MAX ENEMIES
|
|
|
|
guiMPHMaxEnemiesOptionTogglesImage[ MPH_MAXENEMIES_NO ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ] = CreateIconAndTextButton( guiMPHMaxEnemiesOptionTogglesImage[ MPH_MAXENEMIES_NO ], gzMPHScreenText[ MPH_NO ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_MAXENEMIES_SETTING_X + 74), (MPH_MAXENEMIES_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNoMaxEnemiesCallback);
|
|
|
|
guiMPHMaxEnemiesOptionTogglesImage[ MPH_MAXENEMIES_YES ] = UseLoadedButtonImage( guiMPHMaxEnemiesOptionTogglesImage[ MPH_MAXENEMIES_NO ], -1,1,-1,3,-1 );
|
|
guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ] = CreateIconAndTextButton( guiMPHMaxEnemiesOptionTogglesImage[ MPH_MAXENEMIES_YES ], gzMPHScreenText[ MPH_YES ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_MAXENEMIES_SETTING_X), (MPH_MAXENEMIES_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHYesMaxEnemiesCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ],0, 1 );
|
|
|
|
if( guiMPHMaxEnemies )
|
|
ButtonList[ guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_YES ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHMaxEnemiesOptionToggles[ MPH_MAXENEMIES_NO ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// HIRE MERC
|
|
|
|
guiMPHHireMercOptionTogglesImage[ MPH_HIREMERC_RANDOM ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ] = CreateIconAndTextButton( guiMPHHireMercOptionTogglesImage[ MPH_HIREMERC_RANDOM ], gzMPHScreenText[ MPH_HIRE_RANDOM ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_HIREMERC_SETTING_X + 74), (MPH_HIREMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHRandomHireMercCallback);
|
|
|
|
guiMPHHireMercOptionTogglesImage[ MPH_HIREMERC_NORMAL ] = UseLoadedButtonImage( guiMPHHireMercOptionTogglesImage[ MPH_HIREMERC_RANDOM ], -1,1,-1,3,-1 );
|
|
guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ] = CreateIconAndTextButton( guiMPHHireMercOptionTogglesImage[ MPH_HIREMERC_NORMAL ], gzMPHScreenText[ MPH_HIRE_NORMAL ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_HIREMERC_SETTING_X), (MPH_HIREMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNormalHireMercCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ],0, 1 );
|
|
|
|
if( guiMPHHireMerc )
|
|
ButtonList[ guiMPHHireMercOptionToggles[ MPH_HIREMERC_RANDOM ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHHireMercOptionToggles[ MPH_HIREMERC_NORMAL ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// SAME MERC
|
|
|
|
guiMPHSameMercOptionTogglesImage[ MPH_SAMEMERC_DISABLE ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ] = CreateIconAndTextButton( guiMPHSameMercOptionTogglesImage[ MPH_SAMEMERC_DISABLE ], gzMPHScreenText[ MPH_DISABLE ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SAMEMERC_SETTING_X + 74), (MPH_SAMEMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHDisableSameMercCallback);
|
|
|
|
guiMPHSameMercOptionTogglesImage[ MPH_SAMEMERC_ALLOW ] = UseLoadedButtonImage( guiMPHSameMercOptionTogglesImage[ MPH_SAMEMERC_DISABLE ], -1,1,-1,3,-1 );
|
|
guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ] = CreateIconAndTextButton( guiMPHSameMercOptionTogglesImage[ MPH_SAMEMERC_ALLOW ], gzMPHScreenText[ MPH_ALLOW ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SAMEMERC_SETTING_X), (MPH_SAMEMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHAllowSameMercCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ],0, 1 );
|
|
|
|
if( guiMPHSameMerc )
|
|
ButtonList[ guiMPHSameMercOptionToggles[ MPH_SAMEMERC_ALLOW ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHSameMercOptionToggles[ MPH_SAMEMERC_DISABLE ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// REPORT MERC
|
|
|
|
guiMPHReportMercOptionTogglesImage[ MPH_REPORTMERC_NO ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ] = CreateIconAndTextButton( guiMPHReportMercOptionTogglesImage[ MPH_REPORTMERC_NO ], gzMPHScreenText[ MPH_NO ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_REPORTMERC_SETTING_X + 74), (MPH_REPORTMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNoReportMercCallback);
|
|
|
|
guiMPHReportMercOptionTogglesImage[ MPH_REPORTMERC_YES ] = UseLoadedButtonImage( guiMPHReportMercOptionTogglesImage[ MPH_REPORTMERC_NO ], -1,1,-1,3,-1 );
|
|
guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ] = CreateIconAndTextButton( guiMPHReportMercOptionTogglesImage[ MPH_REPORTMERC_YES ], gzMPHScreenText[ MPH_YES ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_REPORTMERC_SETTING_X), (MPH_REPORTMERC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHYesReportMercCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ],0, 1 );
|
|
|
|
if( guiMPHReportMerc )
|
|
ButtonList[ guiMPHReportMercOptionToggles[ MPH_REPORTMERC_YES ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHReportMercOptionToggles[ MPH_REPORTMERC_NO ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// BOBBY RAY
|
|
|
|
guiMPHBobbyRayOptionTogglesImage[ MPH_BOBBYRAY_DISABLE ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ] = CreateIconAndTextButton( guiMPHBobbyRayOptionTogglesImage[ MPH_BOBBYRAY_DISABLE ], gzMPHScreenText[ MPH_DISABLE ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_BOBBYRAY_SETTING_X + 74), (MPH_BOBBYRAY_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHDisableBobbyRayCallback);
|
|
|
|
guiMPHBobbyRayOptionTogglesImage[ MPH_BOBBYRAY_ALLOW ] = UseLoadedButtonImage( guiMPHBobbyRayOptionTogglesImage[ MPH_BOBBYRAY_DISABLE ], -1,1,-1,3,-1 );
|
|
guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ] = CreateIconAndTextButton( guiMPHBobbyRayOptionTogglesImage[ MPH_BOBBYRAY_ALLOW ], gzMPHScreenText[ MPH_ALLOW ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_BOBBYRAY_SETTING_X), (MPH_BOBBYRAY_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHAllowBobbyRayCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ],0, 1 );
|
|
|
|
if( guiMPHBobbyRay )
|
|
ButtonList[ guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_DISABLE ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHBobbyRayOptionToggles[ MPH_BOBBYRAY_ALLOW ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// SECTOR EDGE
|
|
|
|
guiMPHSectorEdgeOptionTogglesImage[ MPH_SECTOREDGE_RANDOM ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ] = CreateIconAndTextButton( guiMPHSectorEdgeOptionTogglesImage[ MPH_SECTOREDGE_RANDOM ], gzMPHScreenText[ MPH_EDGE_RANDOM ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SECTOREDGE_SETTING_X + 74), (MPH_SECTOREDGE_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHRandomSectorEdgeCallback);
|
|
|
|
guiMPHSectorEdgeOptionTogglesImage[ MPH_SECTOREDGE_SELECTABLE ] = UseLoadedButtonImage( guiMPHSectorEdgeOptionTogglesImage[ MPH_SECTOREDGE_RANDOM ], -1,1,-1,3,-1 );
|
|
guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ] = CreateIconAndTextButton( guiMPHSectorEdgeOptionTogglesImage[ MPH_SECTOREDGE_SELECTABLE ], gzMPHScreenText[ MPH_EDGE_SELECTABLE ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SECTOREDGE_SETTING_X), (MPH_SECTOREDGE_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHSelectableSectorEdgeCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ],0, 1 );
|
|
|
|
if( guiMPHSectorEdge )
|
|
ButtonList[ guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_RANDOM ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHSectorEdgeOptionToggles[ MPH_SECTOREDGE_SELECTABLE ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// CIVS
|
|
|
|
guiMPHCivsOptionTogglesImage[ MPH_CIVS_NO ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHCivsOptionToggles[ MPH_CIVS_NO ] = CreateIconAndTextButton( guiMPHCivsOptionTogglesImage[ MPH_CIVS_NO ], gzMPHScreenText[ MPH_NO ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_CIVS_SETTING_X + 74), (MPH_CIVS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNoCivsCallback);
|
|
|
|
guiMPHCivsOptionTogglesImage[ MPH_CIVS_YES ] = UseLoadedButtonImage( guiMPHCivsOptionTogglesImage[ MPH_CIVS_NO ], -1,1,-1,3,-1 );
|
|
guiMPHCivsOptionToggles[ MPH_CIVS_YES ] = CreateIconAndTextButton( guiMPHCivsOptionTogglesImage[ MPH_CIVS_YES ], gzMPHScreenText[ MPH_YES ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_CIVS_SETTING_X), (MPH_CIVS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHYesCivsCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHCivsOptionToggles[ MPH_CIVS_NO ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHCivsOptionToggles[ MPH_CIVS_YES ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHCivsOptionToggles[ MPH_CIVS_NO ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHCivsOptionToggles[ MPH_CIVS_YES ],0, 1 );
|
|
|
|
if( guiMPHCivs )
|
|
ButtonList[ guiMPHCivsOptionToggles[ MPH_CIVS_YES ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHCivsOptionToggles[ MPH_CIVS_NO ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
// -------------------------------------------------
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// INVENTORY / ATTACHMENT
|
|
|
|
if (IsNIVModeValid(true))
|
|
{
|
|
giMPHInventoryButtonImage[ 0 ]= UseLoadedButtonImage( giMPHDifficultyButtonImage[ 0 ],-1,0,-1,1,-1 );
|
|
giMPHInventoryButtonImage[ 1 ]= UseLoadedButtonImage( giMPHDifficultyButtonImage[ 1 ],-1,2,-1,3,-1 );
|
|
|
|
// left button - decrement difficulty level
|
|
giMPHInventoryButton[ 0 ] = QuickCreateButton( giMPHInventoryButtonImage[ 0 ], MPH_INVENTORY_SETTING_X + 39, MPH_INVENTORY_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHInventorySelectionLeftCallback );
|
|
|
|
// right button - increment difficulty level
|
|
giMPHInventoryButton[ 1 ] = QuickCreateButton( giMPHInventoryButtonImage[ 1 ], MPH_INVENTORY_SETTING_X + 158, MPH_INVENTORY_SETTING_Y ,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
|
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnMPHInventorySelectionRightCallback );
|
|
|
|
|
|
// set user data
|
|
MSYS_SetBtnUserData(giMPHInventoryButton[0],0, 0 );
|
|
MSYS_SetBtnUserData(giMPHInventoryButton[1],0, 1 );
|
|
|
|
// set initial value
|
|
switch ( guiMPHInventory )
|
|
{
|
|
case INVENTORY_OLD:
|
|
iMPHInventory = MPH_INV_OLD;
|
|
break;
|
|
case INVENTORY_NEW:
|
|
iMPHInventory = MPH_INV_NEW;
|
|
break;
|
|
case 2: // New/New
|
|
iMPHInventory = 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// OLD/NEW TARITS SETTING
|
|
|
|
guiMPHTraitsOptionTogglesImage[ MPH_TRAITS_OLD ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ] = CreateIconAndTextButton( guiMPHTraitsOptionTogglesImage[ MPH_TRAITS_OLD ], gzGIOScreenText[ GIO_TRAITS_OLD_TEXT ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_TRAITS_SETTING_X + 74), (MPH_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHOldTraitsCallback);
|
|
|
|
guiMPHTraitsOptionTogglesImage[ MPH_TRAITS_NEW ] = UseLoadedButtonImage( guiMPHTraitsOptionTogglesImage[ MPH_TRAITS_OLD ], -1,1,-1,3,-1 );
|
|
guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ] = CreateIconAndTextButton( guiMPHTraitsOptionTogglesImage[ MPH_TRAITS_NEW ], gzGIOScreenText[ GIO_TRAITS_NEW_TEXT ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_TRAITS_SETTING_X), (MPH_TRAITS_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNewTraitsCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ],0, 1 );
|
|
|
|
if( guiMPHNewTraits )
|
|
ButtonList[ guiMPHTraitsOptionToggles[ MPH_TRAITS_NEW ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHTraitsOptionToggles[ MPH_TRAITS_OLD ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// SYNC GAME DIR
|
|
|
|
guiMPHSyncOptionTogglesImage[ MPH_SYNC_NO ] = LoadButtonImage( "INTERFACE\\GIOCheckButton.sti" ,-1,0,-1,2,-1 );
|
|
guiMPHSyncOptionToggles[ MPH_SYNC_NO ] = CreateIconAndTextButton( guiMPHSyncOptionTogglesImage[ MPH_SYNC_NO ], gzMPHScreenText[ MPH_NO ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SYNC_SETTING_X + 74), (MPH_SYNC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHNoSyncCallback);
|
|
|
|
guiMPHSyncOptionTogglesImage[ MPH_SYNC_YES ] = UseLoadedButtonImage( guiMPHSyncOptionTogglesImage[ MPH_SYNC_NO ], -1,1,-1,3,-1 );
|
|
guiMPHSyncOptionToggles[ MPH_SYNC_YES ] = CreateIconAndTextButton( guiMPHSyncOptionTogglesImage[ MPH_SYNC_YES ], gzMPHScreenText[ MPH_YES ], MPH_TOGGLE_TEXT_FONT,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
MPH_TOGGLE_TEXT_COLOR, NO_SHADOW,
|
|
TEXT_CJUSTIFIED,
|
|
(MPH_SYNC_SETTING_X), (MPH_SYNC_SETTING_Y + 10), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
DEFAULT_MOVE_CALLBACK, BtnMPHYesSyncCallback );
|
|
|
|
SpecifyButtonSoundScheme( guiMPHSyncOptionToggles[ MPH_SYNC_NO ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
SpecifyButtonSoundScheme( guiMPHSyncOptionToggles[ MPH_SYNC_YES ], BUTTON_SOUND_SCHEME_BIGSWITCH3 );
|
|
MSYS_SetBtnUserData(guiMPHSyncOptionToggles[ MPH_SYNC_NO ],0, 0 );
|
|
MSYS_SetBtnUserData(guiMPHSyncOptionToggles[ MPH_SYNC_YES ],0, 1 );
|
|
|
|
if( guiMPHSendFiles )
|
|
ButtonList[ guiMPHSyncOptionToggles[ MPH_SYNC_YES ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
else
|
|
ButtonList[ guiMPHSyncOptionToggles[ MPH_SYNC_NO ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
|
|
|
|
|
//Reset the exit screen - screen the main game loop will call next iteration
|
|
gubMPHExitScreen = MP_HOST_SCREEN;
|
|
|
|
//REnder the screen once so we can blt ot to ths save buffer
|
|
RenderMPHScreen();
|
|
|
|
BlitBufferToBuffer(guiRENDERBUFFER, guiSAVEBUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
|
|
|
|
gfMPHButtonsAllocated = TRUE;
|
|
|
|
return( TRUE );
|
|
|
|
}
|
|
|
|
BOOLEAN ExitMPHScreen()
|
|
{
|
|
UINT16 cnt;
|
|
|
|
if( !gfMPHButtonsAllocated )
|
|
return( TRUE );
|
|
|
|
//Delete the main options screen background
|
|
DeleteVideoObjectFromIndex( guiMPHMainBackGroundImage );
|
|
|
|
DeleteVideoObjectFromIndex( guiMPHSMALLFRAME );
|
|
|
|
RemoveButton( guiMPHStartButton );
|
|
RemoveButton( guiMPHCancelButton );
|
|
|
|
UnloadButtonImage( giMPHCancelBtnImage );
|
|
UnloadButtonImage( giMPHStartBtnImage );
|
|
|
|
// --------------
|
|
// MaxPlayers
|
|
RemoveButton( giMPHMaxPlayersButton[0] );
|
|
RemoveButton( giMPHMaxPlayersButton[1] );
|
|
UnloadButtonImage( giMPHMaxPlayersButtonImage[0] );
|
|
UnloadButtonImage( giMPHMaxPlayersButtonImage[1] );
|
|
// ----------
|
|
|
|
// ----------
|
|
// SquadSize
|
|
RemoveButton( giMPHSquadSizeButton[0] );
|
|
RemoveButton( giMPHSquadSizeButton[1] );
|
|
UnloadButtonImage( giMPHSquadSizeButtonImage[0] );
|
|
UnloadButtonImage( giMPHSquadSizeButtonImage[1] );
|
|
// ---------------
|
|
|
|
// --------------
|
|
// StartingTime
|
|
RemoveButton( giMPHStartingTimeButton[0] );
|
|
RemoveButton( giMPHStartingTimeButton[1] );
|
|
UnloadButtonImage( giMPHStartingTimeButtonImage[0] );
|
|
UnloadButtonImage( giMPHStartingTimeButtonImage[1] );
|
|
// ----------
|
|
|
|
// --------------
|
|
// StartingCash
|
|
RemoveButton( giMPHStartingCashButton[0] );
|
|
RemoveButton( giMPHStartingCashButton[1] );
|
|
UnloadButtonImage( giMPHStartingCashButtonImage[0] );
|
|
UnloadButtonImage( giMPHStartingCashButtonImage[1] );
|
|
// ----------
|
|
|
|
// --------------
|
|
// WeaponDamage
|
|
RemoveButton( giMPHWeaponDamageButton[0] );
|
|
RemoveButton( giMPHWeaponDamageButton[1] );
|
|
UnloadButtonImage( giMPHWeaponDamageButtonImage[0] );
|
|
UnloadButtonImage( giMPHWeaponDamageButtonImage[1] );
|
|
// ----------
|
|
|
|
// --------------
|
|
// TimeTurns
|
|
RemoveButton( giMPHTimeTurnsButton[0] );
|
|
RemoveButton( giMPHTimeTurnsButton[1] );
|
|
UnloadButtonImage( giMPHTimeTurnsButtonImage[0] );
|
|
UnloadButtonImage( giMPHTimeTurnsButtonImage[1] );
|
|
// ----------
|
|
|
|
// --------------
|
|
// Difficulty
|
|
RemoveButton( giMPHDifficultyButton[0] );
|
|
RemoveButton( giMPHDifficultyButton[1] );
|
|
UnloadButtonImage( giMPHDifficultyButtonImage[0] );
|
|
UnloadButtonImage( giMPHDifficultyButtonImage[1] );
|
|
// --------------
|
|
|
|
// --------------
|
|
// GameType
|
|
RemoveButton( giMPHGameTypeButton[0] );
|
|
RemoveButton( giMPHGameTypeButton[1] );
|
|
UnloadButtonImage( giMPHGameTypeButtonImage[0] );
|
|
UnloadButtonImage( giMPHGameTypeButtonImage[1] );
|
|
// --------------
|
|
|
|
// ---------------
|
|
// MaxEnemies
|
|
for (cnt = 0; cnt < MPH_NUM_MAXENEMIES_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHMaxEnemiesOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHMaxEnemiesOptionTogglesImage[cnt] );
|
|
}
|
|
// ------------------
|
|
|
|
// -----------
|
|
// HireMerc
|
|
for (cnt = 0; cnt < MPH_NUM_HIREMERC_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHHireMercOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHHireMercOptionTogglesImage[cnt] );
|
|
}
|
|
// ---------
|
|
|
|
// -----------
|
|
// SameMerc
|
|
for (cnt = 0; cnt < MPH_NUM_SAMEMERC_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHSameMercOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHSameMercOptionTogglesImage[cnt] );
|
|
}
|
|
// ---------
|
|
|
|
// -----------
|
|
// ReportMerc
|
|
for (cnt = 0; cnt < MPH_NUM_REPORTMERC_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHReportMercOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHReportMercOptionTogglesImage[cnt] );
|
|
}
|
|
// ------------------
|
|
|
|
// -------------------
|
|
// BobbyRay
|
|
for (cnt = 0; cnt < MPH_NUM_BOBBYRAY_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHBobbyRayOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHBobbyRayOptionTogglesImage[cnt] );
|
|
}
|
|
// ---------
|
|
|
|
// ------------
|
|
// SectorEdge
|
|
for (cnt = 0; cnt < MPH_NUM_SECTOREDGE_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHSectorEdgeOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHSectorEdgeOptionTogglesImage[cnt] );
|
|
}
|
|
// ---------
|
|
|
|
// ----------
|
|
// Civs
|
|
for (cnt = 0; cnt < MPH_NUM_CIVS_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHCivsOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHCivsOptionTogglesImage[cnt] );
|
|
}
|
|
// ------------------
|
|
|
|
// -----------------
|
|
// Inventory / Attachments
|
|
if (IsNIVModeValid(true))
|
|
{
|
|
RemoveButton( giMPHInventoryButton[0] );
|
|
RemoveButton( giMPHInventoryButton[1] );
|
|
UnloadButtonImage( giMPHInventoryButtonImage[0] );
|
|
UnloadButtonImage( giMPHInventoryButtonImage[1] );
|
|
}
|
|
// ------------
|
|
|
|
// ------------------
|
|
// Sync
|
|
for (cnt = 0; cnt < MPH_NUM_SYNC_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHSyncOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHSyncOptionTogglesImage[cnt] );
|
|
}
|
|
// ------------------
|
|
|
|
// ------------------
|
|
// Traits
|
|
for (cnt = 0; cnt < MPH_NUM_TRAITS_OPTIONS; cnt++)
|
|
{
|
|
RemoveButton(guiMPHTraitsOptionToggles[cnt] );
|
|
UnloadButtonImage(guiMPHTraitsOptionTogglesImage[cnt] );
|
|
}
|
|
// ------------------
|
|
|
|
// exit text input mode in this screen and clean up text boxes
|
|
KillAllTextInputModes();
|
|
SetTextInputCursor( CURSOR_IBEAM );
|
|
|
|
gfMPHButtonsAllocated = FALSE;
|
|
|
|
gfMPHScreenExit = FALSE;
|
|
gfMPHScreenEntry = TRUE;
|
|
|
|
return( TRUE );
|
|
|
|
}
|
|
|
|
|
|
void HandleMPHScreen()
|
|
{
|
|
if( gubMPHScreenHandler != MPH_NOTHING )
|
|
{
|
|
switch( gubMPHScreenHandler )
|
|
{
|
|
case MPH_CANCEL:
|
|
gubMPHExitScreen = MAINMENU_SCREEN;
|
|
gfMPHScreenExit = TRUE;
|
|
break;
|
|
case MPH_START:
|
|
{
|
|
//if we are already fading out, get out of here
|
|
if( gFadeOutDoneCallback != DoneFadeOutForExitMPHScreen )
|
|
{
|
|
//Disable the ok button
|
|
DisableButton( guiMPHStartButton );
|
|
|
|
gFadeOutDoneCallback = DoneFadeOutForExitMPHScreen;
|
|
|
|
FadeOutNextFrame( );
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
gubMPHScreenHandler = MPH_NOTHING;
|
|
}
|
|
|
|
if( gfReRenderMPHScreen )
|
|
{
|
|
RenderMPHScreen();
|
|
gfReRenderMPHScreen = FALSE;
|
|
}
|
|
}
|
|
|
|
BOOLEAN RenderMPHScreen()
|
|
{
|
|
HVOBJECT hPixHandle;
|
|
|
|
// --------------------------
|
|
// Difficulty
|
|
RestoreExternBackgroundRect( MPH_DIFFICULTY_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_DIFFICULTY_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// MaxPlayers
|
|
RestoreExternBackgroundRect( MPH_MAXPLAYERS_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_MAXPLAYERS_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// StartingTime
|
|
RestoreExternBackgroundRect( MPH_STARTINGTIME_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_STARTINGTIME_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// StartingCash
|
|
RestoreExternBackgroundRect( MPH_STARTINGCASH_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_STARTINGCASH_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// WeaponDamage
|
|
RestoreExternBackgroundRect( MPH_WEAPONDAMAGE_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_WEAPONDAMAGE_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// TimeTurns
|
|
RestoreExternBackgroundRect( MPH_TIMETURNS_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_TIMETURNS_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// SquadSize
|
|
RestoreExternBackgroundRect( MPH_SQUADSIZE_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_SQUADSIZE_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// GameType
|
|
RestoreExternBackgroundRect( MPH_GAMETYPE_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_GAMETYPE_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
// --------------------------
|
|
// Inventory
|
|
RestoreExternBackgroundRect( MPH_INVENTORY_SETTING_X+MPH_OFFSET_TO_TEXT + 20, MPH_INVENTORY_SETTING_Y-3, 120, 20 );
|
|
// --------------------------
|
|
|
|
//Get the main background screen graphic and blt it
|
|
GetVideoObject(&hPixHandle, guiMPHMainBackGroundImage );
|
|
|
|
BltVideoObject(FRAME_BUFFER, hPixHandle, 0,(SCREEN_WIDTH - xResSize)/2,(SCREEN_HEIGHT - yResSize)/2, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
//Shade the background
|
|
ShadowVideoSurfaceRect( FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset, iScreenWidthOffset + 640, iScreenHeightOffset + 480 );
|
|
|
|
//Display the title
|
|
DrawTextToScreen( gzMPHScreenText[ MPH_TITLE_TEXT ], MPH_MAIN_TITLE_X, MPH_MAIN_TITLE_Y, MPH_MAIN_TITLE_WIDTH, MPH_TITLE_FONT, MPH_TITLE_COLOR, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
|
|
// ---------
|
|
// MaxPlayers
|
|
RenderMPHSmallSelectionFrame( (MPH_MAXPLAYERS_SETTING_X + 36), (MPH_MAXPLAYERS_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_MAXPLAYERS_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_MAXPLAYERS_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_MAXPLAYERS_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_NUMPLAYERS_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_MAXPLAYERS_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_MAXPLAYERS_SETTING_Y+6), MPH_MAXPLAYERS_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ (MPH_1 - MPH_MAXPLAYERS_2 + 1) + iMPHMaxPlayers ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -----------------
|
|
|
|
// -----------------
|
|
// SquadSize
|
|
RenderMPHSmallSelectionFrame( (MPH_SQUADSIZE_SETTING_X + 36), (MPH_SQUADSIZE_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_SQUADSIZE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_SQUADSIZE_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_SQUADSIZE_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_SQUADSIZE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_SQUADSIZE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_SQUADSIZE_SETTING_Y+6), MPH_SQUADSIZE_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ (MPH_1 - MPH_SQUADSIZE_1) + iMPHSquadSize ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -----------------
|
|
|
|
// ----------
|
|
// StartingTime
|
|
RenderMPHSmallSelectionFrame( (MPH_STARTINGTIME_SETTING_X + 36), (MPH_STARTINGTIME_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_STARTINGTIME_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_STARTINGTIME_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_STARTINGTIME_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_TIME_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_STARTINGTIME_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_STARTINGTIME_SETTING_Y+6), MPH_STARTINGTIME_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_MORNING + iMPHStartingTime ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -----------------
|
|
|
|
// ------------------
|
|
// StartingCash
|
|
RenderMPHSmallSelectionFrame( (MPH_STARTINGCASH_SETTING_X + 36), (MPH_STARTINGCASH_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_STARTINGCASH_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_STARTINGCASH_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_STARTINGCASH_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_BALANCE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_STARTINGCASH_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_STARTINGCASH_SETTING_Y+6), MPH_STARTINGCASH_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_CASH_LOW + iMPHStartingCash ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -----------------
|
|
|
|
// ----------
|
|
// WeaponDamage
|
|
RenderMPHSmallSelectionFrame( (MPH_WEAPONDAMAGE_SETTING_X + 36), (MPH_WEAPONDAMAGE_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_WEAPONDAMAGE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_WEAPONDAMAGE_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_WEAPONDAMAGE_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_DMG_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_WEAPONDAMAGE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_WEAPONDAMAGE_SETTING_Y+6), MPH_STARTINGCASH_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_DAMAGE_VERYLOW + iMPHWeaponDamage ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// --------------
|
|
|
|
// -----------
|
|
// TurnTimes
|
|
RenderMPHSmallSelectionFrame( (MPH_TIMETURNS_SETTING_X + 36), (MPH_TIMETURNS_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_TIMETURNS_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_TIMETURNS_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_TIMETURNS_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_TIMER_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_TIMETURNS_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_TIMETURNS_SETTING_Y+6), MPH_TIMETURNS_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_TIME_NEVER + iMPHTimeTurns ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -----------------
|
|
|
|
// ---------------
|
|
// Difficulty
|
|
RenderMPHSmallSelectionFrame( (MPH_DIFFICULTY_SETTING_X + 36), (MPH_DIFFICULTY_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_DIFFICULTY_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_DIFFICULTY_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_DIFFICULTY_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_DIF_LEVEL_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_DIFFICULTY_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_DIFFICULTY_SETTING_Y+6), MPH_DIFFICULTY_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iMPHDifficulty + 9 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ---------------
|
|
|
|
// ---------------
|
|
// GameType
|
|
RenderMPHSmallSelectionFrame( (MPH_GAMETYPE_SETTING_X + 36), (MPH_GAMETYPE_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_GAMETYPE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_GAMETYPE_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_GAMETYPE_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_GAMETYPE_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_GAMETYPE_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_GAMETYPE_SETTING_Y+6), MPH_GAMETYPE_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_DEATHMATCH_TEXT + iMPHGameType], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ---------------
|
|
|
|
// ---------------
|
|
// MaxEnemies
|
|
DisplayWrappedString( (MPH_MAXENEMIES_SETTING_X - 6), (UINT16)(MPH_MAXENEMIES_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_MAXENEMIES_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_OVERRIDEMAXAI_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -------------
|
|
|
|
// ---------------
|
|
// Traits
|
|
DisplayWrappedString( (MPH_TRAITS_SETTING_X - 6), (UINT16)(MPH_TRAITS_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_TRAITS_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_TRAITS_TEXT], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -------------
|
|
|
|
// -----------
|
|
// HireMerc
|
|
DisplayWrappedString( (MPH_HIREMERC_SETTING_X - 6), (UINT16)(MPH_HIREMERC_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_HIREMERC_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_RANDOMMERCS_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ----------
|
|
|
|
// ------------
|
|
// SameMerc
|
|
DisplayWrappedString( (MPH_SAMEMERC_SETTING_X - 6), (UINT16)(MPH_SAMEMERC_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_SAMEMERC_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_SAMEMERC_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ----------
|
|
|
|
// -------------
|
|
// ReportMerc
|
|
DisplayWrappedString( (MPH_REPORTMERC_SETTING_X - 6), (UINT16)(MPH_REPORTMERC_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_REPORTMERC_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_RPTMERC_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -------------
|
|
|
|
// -----------------
|
|
// BobbyRay
|
|
DisplayWrappedString( (MPH_BOBBYRAY_SETTING_X - 6), (UINT16)(MPH_BOBBYRAY_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_BOBBYRAY_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_BOBBYRAY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ----------
|
|
|
|
// ------------------
|
|
// SectorEdge
|
|
DisplayWrappedString( (MPH_SECTOREDGE_SETTING_X - 6), (UINT16)(MPH_SECTOREDGE_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_SECTOREDGE_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_RNDMSTART_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ----------
|
|
|
|
// ------------
|
|
// Civs
|
|
DisplayWrappedString( (MPH_CIVS_SETTING_X - 6), (UINT16)(MPH_CIVS_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_CIVS_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_ENABLECIV_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// -------------
|
|
|
|
// --------------
|
|
// Inventory
|
|
RenderMPHSmallSelectionFrame( (MPH_INVENTORY_SETTING_X + 36), (MPH_INVENTORY_SETTING_Y - 3) );
|
|
DisplayWrappedString( (UINT16)(MPH_INVENTORY_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (UINT16)(MPH_INVENTORY_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE - 12), MPH_INVENTORY_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_INV_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
DisplayWrappedString( (UINT16)(MPH_INVENTORY_SETTING_X+MPH_OFFSET_TO_TEXT + 1), (MPH_INVENTORY_SETTING_Y+6), MPH_INVENTORY_SETTING_WIDTH, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iMPHInventory + 54 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// ----------------
|
|
|
|
// --------------------
|
|
// Sync
|
|
DisplayWrappedString( (MPH_SYNC_SETTING_X - 6), (UINT16)(MPH_SYNC_SETTING_Y-MPH_GAP_BN_SETTINGS + MPH_TITLE_DISTANCE), MPH_SYNC_SETTING_WIDTH + 14, 2, MPH_TOGGLE_TEXT_FONT, MPH_TOGGLE_TEXT_COLOR, gzMPHScreenText[ MPH_SYNC_GAME_DIRECTORY ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
|
// --------------------
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
|
|
|
|
void GetMPHScreenUserInput()
|
|
{
|
|
InputAtom Event;
|
|
// POINT MousePos;
|
|
|
|
// GetCursorPos(&MousePos);
|
|
|
|
while (DequeueSpecificEvent(&Event, KEY_DOWN|KEY_UP|KEY_REPEAT))
|
|
{
|
|
// check if this event is swallowed by text input, otherwise process key
|
|
if( !HandleTextInput( &Event ) && Event.usEvent == KEY_DOWN )
|
|
{
|
|
switch( Event.usParam )
|
|
{
|
|
|
|
case ESC:
|
|
//Exit out of the screen
|
|
gubMPHScreenHandler = MPH_CANCEL;
|
|
break;
|
|
|
|
case ENTER:
|
|
if (ValidateMPSettings())
|
|
{
|
|
SaveMPSettings(); // Update Profiles/UserProfile/ja2_mp.ini
|
|
SGP_TRYCATCH_RETHROW( ja2::mp::InitializeMultiplayerProfile(vfs::Path(gzFileTransferDirectory)), L"" );
|
|
gubMPHScreenHandler = MPH_START;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} // end of GetMPHScreenUserInput()
|
|
|
|
|
|
// CALLBACKS
|
|
|
|
void BtnMPHStartCallback(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 (ValidateMPSettings())
|
|
{
|
|
gubMPHScreenHandler = MPH_START;
|
|
SaveMPSettings(); // Update the Profiles/UserProfile/ja2_mp.ini
|
|
SGP_TRYCATCH_RETHROW( ja2::mp::InitializeMultiplayerProfile(vfs::Path(gzFileTransferDirectory)), L"" );
|
|
|
|
// The difficult level has to be set there. This is the only value so far, because it is used for initialization!
|
|
//gGameOptions.ubDifficultyLevel = GetMPHCurrentDifficultyButtonSetting();
|
|
gGameOptions.ubDifficultyLevel = iMPHDifficulty + 1;
|
|
|
|
// WANNE - MP: Reinit TableData folder and INIs
|
|
LoadExternalGameplayData(TABLEDATA_DIRECTORY);
|
|
InitDependingGameStyleOptions();
|
|
}
|
|
|
|
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
|
|
}
|
|
}
|
|
|
|
void BtnMPHCancelCallback(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 );
|
|
|
|
gubMPHScreenHandler = MPH_CANCEL;
|
|
|
|
InvalidateRegion(btn->Area.RegionTopLeftX, btn->Area.RegionTopLeftY, btn->Area.RegionBottomRightX, btn->Area.RegionBottomRightY);
|
|
}
|
|
}
|
|
|
|
void DoneFadeOutForExitMPHScreen( void )
|
|
{
|
|
// As we bypassed the GIO screen, set up some game options for multiplayer here
|
|
// <TODO> most things i have left as thier defaults here for testing.
|
|
is_networked = true;
|
|
is_host = true; // we want to be the host, not we ARE the host yet (is_server)
|
|
auto_retry = true;
|
|
giNumTries = 5;
|
|
|
|
if (is_networked)
|
|
gGameOptions.fTurnTimeLimit = TRUE;
|
|
else
|
|
gGameOptions.fTurnTimeLimit = FALSE;
|
|
|
|
// Bobby Rays - why would we want anything less than the best
|
|
gGameOptions.ubBobbyRayQuality = BR_AWESOME;
|
|
gGameOptions.ubBobbyRayQuantity = BR_AWESOME;
|
|
|
|
gubMPHExitScreen = INTRO_SCREEN;
|
|
|
|
#ifdef JA2UB
|
|
//SetIntroType( INTRO_BEGINNING );
|
|
#else
|
|
SetIntroType( INTRO_BEGINNING );
|
|
#endif
|
|
|
|
ExitMPHScreen(); // cleanup please, if we called a fadeout then we didnt do it above
|
|
|
|
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
|
|
}
|
|
|
|
void DoneFadeInForExitMPHScreen( void )
|
|
{
|
|
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
|
|
}
|
|
|
|
void RenderMPHSmallSelectionFrame(INT16 sX, INT16 sY)
|
|
{
|
|
|
|
HVOBJECT hHandle;
|
|
|
|
// get the video object
|
|
GetVideoObject(&hHandle, guiMPHSMALLFRAME);
|
|
|
|
// blt to sX, sY relative to upper left corner
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 0, sX, sY , VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
return;
|
|
} |