mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-27 16:53:43 +00:00
3034 lines
93 KiB
C++
3034 lines
93 KiB
C++
|
#include "common.h"
|
||
|
#ifdef PS2_MENU
|
||
|
#include "platform.h"
|
||
|
#include "main.h"
|
||
|
#include "Timer.h"
|
||
|
#include "Pad.h"
|
||
|
#include "Sprite2d.h"
|
||
|
#include "Text.h"
|
||
|
#include "Font.h"
|
||
|
#include "Hud.h"
|
||
|
#include "MBlur.h"
|
||
|
#include "DMAudio.h"
|
||
|
#include "Streaming.h"
|
||
|
#include "Camera.h"
|
||
|
#include "Credits.h"
|
||
|
#include "General.h"
|
||
|
#include "TxdStore.h"
|
||
|
#include "FileMgr.h"
|
||
|
#include "Messages.h"
|
||
|
#include "Frontend_PS2.h"
|
||
|
#include "Stats.h"
|
||
|
#include "Game.h"
|
||
|
#include "World.h"
|
||
|
#include "PlayerInfo.h"
|
||
|
#include "FrontendControls.h"
|
||
|
#include "MemoryCard.h"
|
||
|
|
||
|
#define CRect_SZ(x, y, w, h) CRect(x, y, x+w, y+h)
|
||
|
|
||
|
wchar MemoryCard_FileNames[8][100+1];
|
||
|
CMenuManager FrontEndMenuManager;
|
||
|
|
||
|
// TEMP: put into header
|
||
|
bool DoRWStuffStartOfFrame_Horizon(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
|
||
|
bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
|
||
|
void DoRWStuffEndOfFrame(void);
|
||
|
|
||
|
|
||
|
#define SCRW SCREEN_WIDTH
|
||
|
#define SCRH SCREEN_HEIGHT
|
||
|
//#define X SCREEN_STRETCH_X
|
||
|
//#define Y SCREEN_STRETCH_Y
|
||
|
#define X SCREEN_SCALE_X
|
||
|
#define Y SCREEN_SCALE_Y
|
||
|
|
||
|
#define YF(x) Y(float(x)*(float(DEFAULT_SCREEN_HEIGHT)/float(DEFAULT_SCREEN_HEIGHT_PAL)))
|
||
|
//#define X(x) ((x)/640.0f*SCRW)
|
||
|
//#define Y(y) ((y)/448.0f*SCRH)
|
||
|
|
||
|
|
||
|
static float MENU_TEXT_SIZE_X = 0.644f;
|
||
|
static float MENU_TEXT_SIZE_Y = 0.84f; //0.96f;
|
||
|
float BUTTONTAB_TEXT_SIZE_X = 0.35f;
|
||
|
float BUTTONTAB_TEXT_SIZE_Y = 0.7f; //0.8f;
|
||
|
float PANEL_TEXT_SIZE_X = 0.8f;
|
||
|
float PANEL_TEXT_SIZE_Y = 1.2f; //0.96f/0.7f; //??
|
||
|
float MEMCARD_ACCESS_MSG_SIZE_X = 0.84f;
|
||
|
float MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f; //1.28f;
|
||
|
|
||
|
CRGBA SELECTED_TEXT_COLOR(255, 182, 48, 255);
|
||
|
CRGBA BACKGROUND_SPLASH_COLOR(48, 48, 48, 255);
|
||
|
|
||
|
CVector2D CONTR_DESCR_NEW_TEXTSCALE(0.4564f, 0.63f); // 0.72
|
||
|
CVector2D CONFIGS_NEW_TEXTSCALE(0.49f, 0.7f); // 0.8
|
||
|
CVector2D AUDIO_OUTPUT_POS(0.0f, 0.0f);
|
||
|
CVector2D AUDIO_RSTATION_POS(154.0f, 0.0f);
|
||
|
CVector2D DISPLAY_BRIGHTNESS_POS(0.0f, 0.0f);
|
||
|
|
||
|
CRGBA TEXT_COLOR(150, 110, 30, 255);
|
||
|
CRGBA PAD_TEXT_COLOR(200, 200, 200, 255);
|
||
|
CRGBA CRIM_RATING_TEXT_COLOR(255, 182, 48, 255);
|
||
|
CRGBA SCROLL_TEXT_COLOR(150, 110, 30, 255);
|
||
|
CRGBA TITLE_TEXT_COLOR(170, 130, 50, 255);
|
||
|
CRGBA TEXT_SHADOW_COLOR(0, 0, 0, 255);
|
||
|
CVector2D SHADOW_VECTOR(1.0f, 1.0f);
|
||
|
CRGBA SLIDER_RIGHT_COLOR(20, 94, 136, 255);
|
||
|
CRGBA SLIDER_LEFT_COLOR(86, 196, 255, 255);
|
||
|
CRGBA MENU_SELECTED_COLOR(255, 212, 88, 255);
|
||
|
CRGBA rgbaATC(96, 96, 96, 255); // active text color. not constant
|
||
|
|
||
|
float BUTTONTAB_TEXT_X_SCALES[NUM_PAGES] = { 1.0f };
|
||
|
float PANEL_TEXT_X_SCALES[NUM_PAGES] = { 1.0f };
|
||
|
|
||
|
int32 MemoryCardSlotSelected;
|
||
|
uint32 TimeToStopPadShaking;
|
||
|
bool bFrontEnd_ReloadObrTxtGxt;
|
||
|
|
||
|
bool bMemoryCardStartUpMenus_ExitNow;
|
||
|
|
||
|
extern CMenuPage MenuPage_SaveBasic;
|
||
|
CMenuPage *pActiveMenuPage;
|
||
|
CMenuPage *pMenuSave = &MenuPage_SaveBasic;
|
||
|
bool bMemoryCardSpecialZone;
|
||
|
bool bIgnoreTriangleButton;
|
||
|
bool gErrorSampleTriggered;
|
||
|
|
||
|
bool gMusicPlaying;
|
||
|
|
||
|
CMenuPage MenuPage_Stats;
|
||
|
CMenuLineLister MenuStats_1;
|
||
|
CMenuPictureAndText MenuStats_2; // criminal rating
|
||
|
CMenuPage MenuPage_Briefs;
|
||
|
CMenuPictureAndText MenuBriefs_1;
|
||
|
CMenuDummy MenuBriefs_2;
|
||
|
CMenuPage MenuPage_SaveBasic;
|
||
|
CMenuMultiChoiceTriggered MenuSaveB_1; // "Load Game", "Delete Game", "New Game"
|
||
|
CMenuPage MenuPage_SaveNewGame;
|
||
|
CMenuPictureAndText MenuSaveNG_1; // "Load Game", "Delete Game", "New Game"
|
||
|
CMenuMultiChoiceTriggered MenuSaveNG_2; // "No", "Yes"
|
||
|
CMenuPage MenuPage_SaveLoadGame;
|
||
|
CMenuPictureAndText MenuSaveLG_1; // "Load Game", "Delete Game", "New Game"
|
||
|
CMenuMultiChoiceTwoLinesTriggered MenuSaveLG_2; // save games
|
||
|
CMenuPage MenuPage_SaveDeleteGame;
|
||
|
CMenuPictureAndText MenuSaveDG_1; // "Load Game", "Delete Game", "New Game"
|
||
|
CMenuMultiChoiceTwoLinesTriggered MenuSaveDG_2; // save games
|
||
|
CMenuPage MenuPage_Controls;
|
||
|
CMenuPictureAndText MenuControls_3; // controller images
|
||
|
CMenuPictureAndText MenuControls_6;
|
||
|
CMenuPictureAndText MenuControls_4;
|
||
|
CMenuPictureAndText MenuControls_7;
|
||
|
CMenuMultiChoiceTriggeredAlways MenuControls_1; // "Configuration:" "Setup1", "Setup2", "Setup3", "Setup4"
|
||
|
CMenuMultiChoiceTriggered MenuControls_2; // "Controller Display:" "On Foot", "In Car"
|
||
|
CMenuOnOffTriggered MenuControls_5; // "Vibration:"
|
||
|
CMenuPageAnyMove MenuPage_Audio;
|
||
|
CMenuSliderTriggered MenuAudio_1; // "Music Volume"
|
||
|
CMenuMultiChoiceTriggered MenuAudio_4; // "Output:" "Stereo", "Mono"
|
||
|
CMenuSliderTriggered MenuAudio_2; // "SFX Volume"
|
||
|
CMenuMultiChoicePicturedTriggeredAnyMove MenuAudio_3; // "Radio station select:"
|
||
|
CMenuPage MenuPage_Display;
|
||
|
CMenuSlider MenuDisplay_1; // "Brightness"
|
||
|
#ifdef GTA_PC
|
||
|
CMenuOnOffTriggered MenuDisplay_2; // "Trails:"
|
||
|
#else
|
||
|
CMenuOnOff MenuDisplay_2; // "Trails:"
|
||
|
#endif
|
||
|
CMenuOnOff MenuDisplay_3; // "Subtitles:"
|
||
|
CMenuOnOff MenuDisplay_4; // "Wide Screen:"
|
||
|
CMenuPage MenuPage_Language;
|
||
|
CMenuMultiChoiceTriggered MenuLanguage_1; // "English", "French", "German", "Italian", "Spanish"
|
||
|
|
||
|
CMenuPage MenuPageSaveZone_SaveGame;
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneSG_1; // "Save game", "Cancel"
|
||
|
CMenuPage MenuPageSaveZone_SaveSlots;
|
||
|
CMenuMultiChoiceTwoLinesTriggered MenuSaveZoneSSL_1; // "Cancel"
|
||
|
CMenuPage MenuPageSaveZone_SavedSuccessfully;
|
||
|
CMenuPictureAndText MenuSaveZoneSS_1; // "Game saved successfully!" "Your saved filename is:"
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneSS_2; // "Quit"
|
||
|
CMenuPage MenuPageSaveZone_Message;
|
||
|
CMenuPictureAndText MenuSaveZoneMSG_1; // "Save Failed! Check memory card (PS2) in MEMORY CARD slot 1 and please try again."
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneMSG_2; // "OK"
|
||
|
CMenuPage MenuPageSaveZone_QuestionYesNo;
|
||
|
CMenuPictureAndText MenuSaveZoneQYN_1; // "Save Failed! Check memory card (PS2) in MEMORY CARD slot 1 and please try again."
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneQYN_2; // "Yes", "No"
|
||
|
CMenuPage MenuPageSaveZone_FormatCard;
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneFC_1; // "Memory card (PS2) in MEMORY CARD slot 1 is unformatted. Would you like to format memory card (PS2) in MEMORY CARD slot 1?" "No" "Yes"
|
||
|
CMenuPage MenuPageSaveZone_ErrorFormat;
|
||
|
CMenuMultiChoiceTriggered MenuSaveZoneEF_1; // "Format Failed! Check memory card (PS2) in MEMORY CARD slot 1 and please try again." "OK"
|
||
|
|
||
|
|
||
|
VALIDATE_SIZE(CPlaceableText, 0x10);
|
||
|
VALIDATE_SIZE(CPlaceableShText, 0x20);
|
||
|
VALIDATE_SIZE(CPlaceableShTextTwoLines, 0x30);
|
||
|
VALIDATE_SIZE(CPlaceableShOption, 0x28);
|
||
|
VALIDATE_SIZE(CPlaceableShOptionTwoLines, 0x38);
|
||
|
VALIDATE_SIZE(CPlaceableSprite, 0x18);
|
||
|
VALIDATE_SIZE(CPlaceableShSprite, 0x34);
|
||
|
VALIDATE_SIZE(CMenuMultiChoice, 0x2CC);
|
||
|
VALIDATE_SIZE(CMenuMultiChoiceTriggered, 0x310);
|
||
|
VALIDATE_SIZE(CMenuMultiChoiceTwoLines, 0x3CC);
|
||
|
VALIDATE_SIZE(CMenuOnOff, 0x90);
|
||
|
|
||
|
#include "FrontendTriggers.h"
|
||
|
|
||
|
static const char* FrontendFilenames[][2] =
|
||
|
{
|
||
|
{"fe2_mainpanel_ul", "" },
|
||
|
{"fe2_mainpanel_ur", "" },
|
||
|
{"fe2_mainpanel_dl", "" },
|
||
|
{"fe2_mainpanel_dr", "" },
|
||
|
{"fe2_mainpanel_dr2", "" },
|
||
|
{"fe2_tabactive", "" },
|
||
|
{"fe_iconbrief", "" },
|
||
|
{"fe_iconstats", "" },
|
||
|
{"fe_iconcontrols", "" },
|
||
|
{"fe_iconsave", "" },
|
||
|
{"fe_iconaudio", "" },
|
||
|
{"fe_icondisplay", "" },
|
||
|
{"fe_iconlanguage", "" },
|
||
|
{"fe_controller", "" },
|
||
|
{"fe_controllersh", "" },
|
||
|
{"fe_arrows1", "" },
|
||
|
{"fe_arrows2", "" },
|
||
|
{"fe_arrows3", "" },
|
||
|
{"fe_arrows4", "" },
|
||
|
{"fe_radio1", "" },
|
||
|
{"fe_radio2", "" },
|
||
|
{"fe_radio3", "" },
|
||
|
{"fe_radio4", "" },
|
||
|
{"fe_radio5", "" },
|
||
|
{"fe_radio6", "" },
|
||
|
{"fe_radio7", "" },
|
||
|
{"fe_radio8", "" },
|
||
|
{"fe_radio9", "" },
|
||
|
};
|
||
|
|
||
|
|
||
|
int32 CMenuManager::m_PrefsSfxVolume = 102;
|
||
|
int32 CMenuManager::m_PrefsMusicVolume = 102;
|
||
|
int32 CMenuManager::m_PrefsBrightness = 256;
|
||
|
bool CMenuManager::m_PrefsShowTrails = true;
|
||
|
bool CMenuManager::m_PrefsShowSubtitles = true;
|
||
|
bool CMenuManager::m_PrefsAllowNastyGame = true;
|
||
|
|
||
|
int32 CMenuManager::m_PrefsRadioStation = 0;
|
||
|
int32 CMenuManager::m_PrefsStereoMono = 0;
|
||
|
int8 CMenuManager::m_PrefsUseWideScreen = 0;
|
||
|
int32 CMenuManager::m_PrefsLanguage = 0;
|
||
|
CMenuManager::CONTRCONFIG CMenuManager::m_PrefsControllerConfig = CONFIG_1;
|
||
|
bool CMenuManager::m_PrefsUseVibration = false;
|
||
|
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
#include "PlayerSkin.h"
|
||
|
int32 CMenuManager::OS_Language = 0;
|
||
|
int8 CMenuManager::m_PrefsVsync = 1;
|
||
|
int8 CMenuManager::m_PrefsVsyncDisp = 1;
|
||
|
int8 CMenuManager::m_PrefsFrameLimiter = 1;
|
||
|
int8 CMenuManager::m_PrefsSpeakers;
|
||
|
int32 CMenuManager::m_ControlMethod = CONTROL_CLASSIC;
|
||
|
int8 CMenuManager::m_PrefsDMA = 1;
|
||
|
float CMenuManager::m_PrefsLOD = 1.0f;
|
||
|
char CMenuManager::m_PrefsSkinFile[256] = DEFAULT_SKIN_NAME;
|
||
|
|
||
|
#ifndef MASTER
|
||
|
bool CMenuManager::m_PrefsMarketing;
|
||
|
bool CMenuManager::m_PrefsDisableTutorials;
|
||
|
#endif // !MASTER
|
||
|
|
||
|
#ifdef MENU_MAP
|
||
|
bool CMenuManager::bMenuMapActive;
|
||
|
float CMenuManager::fMapSize;
|
||
|
float CMenuManager::fMapCenterY;
|
||
|
float CMenuManager::fMapCenterX;
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
CMenuManager::CMenuManager(void)
|
||
|
{
|
||
|
int i;
|
||
|
|
||
|
SetSoundLevelsForMusicMenu();
|
||
|
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
m_currentPage = PAGE_FIRST;
|
||
|
m_newPage = PAGE_FIRST;
|
||
|
m_bMenuActive = false;
|
||
|
m_bSaveMenuActive = false;
|
||
|
m_bRenderGameInMenu = false;
|
||
|
m_bTexturesLoaded = false;
|
||
|
m_nPageLeftTimer = 0;
|
||
|
m_nPageRightTimer = 0;
|
||
|
m_nChangePageTimer = 0;
|
||
|
field_18 = 0;
|
||
|
m_fade = 255;
|
||
|
m_someAlpha = 255;
|
||
|
m_position.x = 0.0f;
|
||
|
m_position.y = 0.0f;
|
||
|
m_nSlidingDir = SLIDE_TO_BOTTOM;
|
||
|
m_nStartPauseTimer = 0;
|
||
|
m_nEndPauseTimer = 0;
|
||
|
m_bInitialised = false;
|
||
|
m_bWantToUpdateContent = false;
|
||
|
field_3C = 0;
|
||
|
m_bInSaveZone = false;
|
||
|
|
||
|
for(i = 0; i < NUM_PAGES; i++){
|
||
|
BUTTONTAB_TEXT_X_SCALES[i] = 1.0f;
|
||
|
PANEL_TEXT_X_SCALES[i] = 1.0f;
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
TheCamera.m_bUseMouse3rdPerson = m_ControlMethod == CONTROL_STANDARD;
|
||
|
CMBlur::BlurOn = m_PrefsShowTrails;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::LoadAllTextures(void)
|
||
|
{
|
||
|
int i;
|
||
|
|
||
|
if(m_bTexturesLoaded)
|
||
|
return;
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_STARTING, 0);
|
||
|
DMAudio.Service();
|
||
|
DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
CSprite2d *splash = LoadSplash(nil);
|
||
|
if(splash)
|
||
|
splash->Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
else // doesn't exist!!
|
||
|
CHud::Sprites[19].Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERMIPNEAREST);
|
||
|
DoRWStuffEndOfFrame();
|
||
|
|
||
|
CFileMgr::SetDir("");
|
||
|
CFileMgr::SetDir("");
|
||
|
|
||
|
CTimer::Stop();
|
||
|
CStreaming::MakeSpaceFor(60*1024);
|
||
|
CStreaming::ImGonnaUseStreamingMemory();
|
||
|
CGame::TidyUpMemory(false, true);
|
||
|
int slot = CTxdStore::FindTxdSlot("frontend");
|
||
|
if(slot == -1)
|
||
|
slot = CTxdStore::AddTxdSlot("frontend");
|
||
|
printf("LOAD frontend\n");
|
||
|
CTxdStore::LoadTxd(slot, "MODELS/FRONTEND.TXD");
|
||
|
CTxdStore::SetCurrentTxd(slot);
|
||
|
CStreaming::IHaveUsedStreamingMemory();
|
||
|
CTimer::Update();
|
||
|
|
||
|
for(i = 0; i < NUM_SPRIRES; i++)
|
||
|
{
|
||
|
m_sprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]);
|
||
|
m_sprites[i].SetAddressing(rwTEXTUREADDRESSBORDER);
|
||
|
}
|
||
|
|
||
|
m_bTexturesLoaded = true;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::UnloadTextures(void)
|
||
|
{
|
||
|
int slot;
|
||
|
int i;
|
||
|
|
||
|
if ( !m_bTexturesLoaded )
|
||
|
return;
|
||
|
|
||
|
slot = CTxdStore::FindTxdSlot("frontend");
|
||
|
#ifdef FIX_BUGS
|
||
|
for(i = 0; i < NUM_SPRIRES; i++)
|
||
|
m_sprites[i].Delete();
|
||
|
#endif
|
||
|
|
||
|
printf("REMOVE frontend\n");
|
||
|
CTxdStore::RemoveTxd(slot);
|
||
|
m_bTexturesLoaded = false;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::InitialiseMenusOnce(void)
|
||
|
{
|
||
|
if(m_bInitialised)
|
||
|
return;
|
||
|
m_bInitialised = true;
|
||
|
|
||
|
InitialiseChangedLanguageSettings();
|
||
|
|
||
|
// Normal menu
|
||
|
MenuPage_Stats.Initialise();
|
||
|
MenuPage_Briefs.Initialise();
|
||
|
MenuPage_SaveBasic.Initialise();
|
||
|
MenuPage_SaveNewGame.Initialise();
|
||
|
MenuPage_SaveLoadGame.Initialise();
|
||
|
MenuPage_SaveDeleteGame.Initialise();
|
||
|
MenuPage_Controls.Initialise();
|
||
|
MenuPage_Audio.Initialise();
|
||
|
MenuPage_Display.Initialise();
|
||
|
MenuPage_Language.Initialise();
|
||
|
|
||
|
// Save menu
|
||
|
MenuPageSaveZone_SaveGame.Initialise();
|
||
|
MenuPageSaveZone_SaveSlots.Initialise();
|
||
|
MenuPageSaveZone_SavedSuccessfully.Initialise();
|
||
|
MenuPageSaveZone_Message.Initialise();
|
||
|
MenuPageSaveZone_QuestionYesNo.Initialise();
|
||
|
MenuPageSaveZone_FormatCard.Initialise();
|
||
|
MenuPageSaveZone_ErrorFormat.Initialise();
|
||
|
|
||
|
/* Stats */
|
||
|
|
||
|
MenuStats_1.ResetNumberOfTextLines();
|
||
|
MenuStats_1.SetPosition(X(75.0f), Y(70.0f));
|
||
|
MenuStats_1.m_width = X(480.0f);
|
||
|
MenuStats_1.m_height = Y(274.0f);
|
||
|
MenuStats_1.field_10E8 = 0; // unknown
|
||
|
MenuStats_1.m_lineSpacing = Y(20.0f);
|
||
|
MenuStats_1.m_scrollSpeed = 1.0f;
|
||
|
MenuStats_1.SetLinesColor(SCROLL_TEXT_COLOR);
|
||
|
MenuStats_1.ResetNumberOfTextLines();
|
||
|
MenuPage_Stats.AddMenu(&MenuStats_1);
|
||
|
MenuStats_2.SetPosition(X(75.0f), Y(50.0f));
|
||
|
MenuStats_2.SetTextsColor(CRIM_RATING_TEXT_COLOR);
|
||
|
MenuPage_Stats.AddMenu(&MenuStats_2);
|
||
|
MenuPage_Stats.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Stats.ActivatePage();
|
||
|
|
||
|
|
||
|
CVector2D saveGameTextScale(X(0.49f), Y(0.7f));
|
||
|
CVector2D defaultTextScale(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
|
||
|
/* Basic Load/Delete/New Game */
|
||
|
|
||
|
MenuSaveB_1.m_numOptions = 0;
|
||
|
MenuSaveB_1.SetPosition(X(220.0f), Y(110.0f));
|
||
|
MenuSaveB_1.AddOption(TheText.Get("FES_LGA"), 0.0f, Y(20.0f), TriggerSave_LoadGameSelect, false, true);
|
||
|
MenuSaveB_1.AddOption(TheText.Get("FES_DGA"), 0.0f, Y(40.0f), TriggerSave_DeleteGameSelect, false, true);
|
||
|
MenuSaveB_1.AddOption(TheText.Get("FES_NGA"), 0.0f, Y(60.0f), TriggerSave_NewGameSelectYes, false, true);
|
||
|
MenuSaveB_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuPage_SaveBasic.AddMenu(&MenuSaveB_1);
|
||
|
MenuPage_SaveBasic.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_SaveBasic.ActivatePage();
|
||
|
|
||
|
/* New Game - but unused */
|
||
|
|
||
|
MenuSaveNG_1.m_numTexts = 0;
|
||
|
MenuSaveNG_1.SetPosition(X(220.0f), Y(110.0f));
|
||
|
MenuSaveNG_1.AddText(TheText.Get("FES_LGA"), 0.0f, Y(20.0f), TEXT_COLOR, true);
|
||
|
MenuSaveNG_1.AddText(TheText.Get("FES_DGA"), 0.0f, Y(40.0f), TEXT_COLOR, true);
|
||
|
MenuSaveNG_1.AddText(TheText.Get("FES_NGA"), 0.0f, Y(60.0f), SELECTED_TEXT_COLOR, true);
|
||
|
MenuPage_SaveNewGame.AddMenu(&MenuSaveNG_1);
|
||
|
MenuSaveNG_2.m_numOptions = 0;
|
||
|
MenuSaveNG_2.SetPosition(X(250.0f), Y(170.0f));
|
||
|
MenuSaveNG_2.AddOption(TheText.Get("FEM_NO"), 0.0f, 0.0f, TriggerSave_BackToMainMenu, false, false);
|
||
|
MenuSaveNG_2.AddOption(TheText.Get("FEM_YES"), 0.0f, Y(20.0f), TriggerSave_NewGameSelectYes, false, false);
|
||
|
MenuSaveNG_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveNG_2.m_defaultCancel = TriggerSave_BackToMainMenu;
|
||
|
MenuPage_SaveNewGame.AddMenu(&MenuSaveNG_2);
|
||
|
MenuPage_SaveNewGame.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_SaveNewGame.ActivatePage();
|
||
|
|
||
|
/* Load Game */
|
||
|
|
||
|
MenuSaveLG_1.m_numTexts = 0;
|
||
|
MenuSaveLG_1.SetPosition(X(220.0f), Y(110.0f));
|
||
|
MenuSaveLG_1.AddText(TheText.Get("FES_LGA"), 0.0f, Y(20.0f), SELECTED_TEXT_COLOR, true);
|
||
|
MenuSaveLG_1.AddText(TheText.Get("FES_DGA"), 0.0f, Y(40.0f), TEXT_COLOR, true);
|
||
|
MenuSaveLG_1.AddText(TheText.Get("FES_NGA"), 0.0f, Y(60.0f), TEXT_COLOR, true);
|
||
|
MenuPage_SaveLoadGame.AddMenu(&MenuSaveLG_1);
|
||
|
MenuSaveLG_2.m_numOptions = 0;
|
||
|
MenuSaveLG_2.SetPosition(X(250.0f), Y(60.0f));
|
||
|
MenuSaveLG_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveLG_2.m_defaultCancel = TriggerSave_BackToMainMenuTwoLines;
|
||
|
MenuSaveLG_2.SetNewOldTextScale(true, saveGameTextScale, defaultTextScale, false);
|
||
|
MenuPage_SaveLoadGame.AddMenu(&MenuSaveLG_2);
|
||
|
MenuPage_SaveLoadGame.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_SaveLoadGame.ActivatePage();
|
||
|
|
||
|
/* Delete Game */
|
||
|
|
||
|
MenuSaveDG_1.m_numTexts = 0;
|
||
|
MenuSaveDG_1.SetPosition(X(220.0f), Y(110.0f));
|
||
|
MenuSaveDG_1.AddText(TheText.Get("FES_LGA"), 0.0f, Y(20.0f), TEXT_COLOR, true);
|
||
|
MenuSaveDG_1.AddText(TheText.Get("FES_DGA"), 0.0f, Y(40.0f), SELECTED_TEXT_COLOR, true);
|
||
|
MenuSaveDG_1.AddText(TheText.Get("FES_NGA"), 0.0f, Y(60.0f), TEXT_COLOR, true);
|
||
|
MenuPage_SaveDeleteGame.AddMenu(&MenuSaveDG_1);
|
||
|
MenuSaveDG_2.m_numOptions = 0;
|
||
|
MenuSaveDG_2.SetPosition(X(250.0f), Y(60.0f));
|
||
|
MenuSaveDG_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveDG_2.m_defaultCancel = TriggerSave_BackToMainMenuTwoLines;
|
||
|
MenuSaveDG_2.SetNewOldTextScale(true, saveGameTextScale, defaultTextScale, false);
|
||
|
MenuPage_SaveDeleteGame.AddMenu(&MenuSaveDG_2);
|
||
|
MenuPage_SaveDeleteGame.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_SaveDeleteGame.ActivatePage();
|
||
|
|
||
|
|
||
|
CVector2D briefsTextScale(X(0.525f), Y(0.7f));
|
||
|
CVector2D defaultTextScale1(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
|
||
|
/* Briefs */
|
||
|
|
||
|
MenuBriefs_1.m_numTexts = 0;
|
||
|
MenuBriefs_1.SetPosition(X(60.0f), Y(60.0f));
|
||
|
MenuBriefs_1.SetTextsColor(TEXT_COLOR);
|
||
|
MenuBriefs_1.SetNewOldTextScale(true, briefsTextScale, defaultTextScale1);
|
||
|
MenuBriefs_1.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x), X(600.0f));
|
||
|
MenuPage_Briefs.AddMenu(&MenuBriefs_1);
|
||
|
MenuPage_Briefs.AddMenu(&MenuBriefs_2);
|
||
|
MenuPage_Briefs.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Briefs.ActivatePage();
|
||
|
|
||
|
|
||
|
CVector2D defaultTextScale2(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
CVector2D defaultTextScale3(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
CVector2D CONTR_DESCR_NEW_TEXTSCALE_scaled(X(CONTR_DESCR_NEW_TEXTSCALE.x), Y(CONTR_DESCR_NEW_TEXTSCALE.y));
|
||
|
CVector2D CONFIGS_NEW_TEXTSCALE_scaled(X(CONFIGS_NEW_TEXTSCALE.x), Y(CONFIGS_NEW_TEXTSCALE.y));
|
||
|
|
||
|
/* Controls */
|
||
|
|
||
|
MenuControls_3.m_numTexts = 0;
|
||
|
MenuControls_3.m_numSprites = 0;
|
||
|
MenuControls_3.SetPosition(X(170.0f), Y(88.0f));
|
||
|
MenuControls_3.AddPicture(&m_sprites[FE_CONTROLLER],
|
||
|
&m_sprites[FE_CONTROLLERSH],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_3.AddPicture(&m_sprites[FE_ARROWS1],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_3.SetNewOldTextScale(true, CONTR_DESCR_NEW_TEXTSCALE_scaled, defaultTextScale2);
|
||
|
InitialiseTextsInMenuControllerOnFoot(&MenuControls_3, CMenuManager::m_PrefsControllerConfig);
|
||
|
MenuControls_3.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuControls_3.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x), X(600.0f));
|
||
|
MenuPage_Controls.AddMenu(&MenuControls_3);
|
||
|
|
||
|
MenuControls_6.m_numTexts = 0;
|
||
|
MenuControls_6.m_numSprites = 0;
|
||
|
MenuControls_6.SetPosition(X(170.0f), Y(88.0f));
|
||
|
MenuControls_6.AddPicture(&m_sprites[FE_CONTROLLER],
|
||
|
&m_sprites[FE_CONTROLLERSH],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_6.AddPicture(&m_sprites[FE_ARROWS3],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_6.SetNewOldTextScale(true, CONTR_DESCR_NEW_TEXTSCALE_scaled, defaultTextScale2);
|
||
|
InitialiseTextsInMenuControllerOnFoot(&MenuControls_6, CMenuManager::CONFIG_2);
|
||
|
MenuControls_6.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuControls_6.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x), X(600.0f));
|
||
|
|
||
|
MenuControls_4.m_numTexts = 0;
|
||
|
MenuControls_4.m_numSprites = 0;
|
||
|
MenuControls_4.SetPosition(X(170.0f), Y(88.0f));
|
||
|
MenuControls_4.AddPicture(&m_sprites[FE_CONTROLLER],
|
||
|
&m_sprites[FE_CONTROLLERSH],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_4.AddPicture(&m_sprites[FE_ARROWS2],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_4.SetNewOldTextScale(true, CONTR_DESCR_NEW_TEXTSCALE_scaled, defaultTextScale2);
|
||
|
InitialiseTextsInMenuControllerInCar(&MenuControls_4, CMenuManager::m_PrefsControllerConfig);
|
||
|
MenuControls_4.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuControls_4.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x), X(600.0f));
|
||
|
|
||
|
MenuControls_7.m_numTexts = 0;
|
||
|
MenuControls_7.m_numSprites = 0;
|
||
|
MenuControls_7.SetPosition(X(170.0f), Y(88.0f));
|
||
|
MenuControls_7.AddPicture(&m_sprites[FE_CONTROLLER],
|
||
|
&m_sprites[FE_CONTROLLERSH],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_7.AddPicture(&m_sprites[FE_ARROWS4],
|
||
|
0.0f, 0.0f, X(235.2f), Y(175.2), CRGBA(255, 255, 255, 255));
|
||
|
MenuControls_7.SetNewOldTextScale(true, CONTR_DESCR_NEW_TEXTSCALE_scaled, defaultTextScale2);
|
||
|
InitialiseTextsInMenuControllerInCar(&MenuControls_7, CMenuManager::CONFIG_2);
|
||
|
MenuControls_7.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuControls_7.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x), X(600.0f));
|
||
|
|
||
|
MenuControls_1.m_numOptions = 0;
|
||
|
MenuControls_1.SetPosition(X(284.0f), Y(290.0f));
|
||
|
MenuControls_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, SELECTED_TEXT_COLOR);
|
||
|
MenuControls_1.SetNewOldTextScale(true, CONFIGS_NEW_TEXTSCALE_scaled, defaultTextScale3, false);
|
||
|
MenuControls_1.AddTitle(TheText.Get("FEC_CCF"), 0.0f, 0.0f, true);
|
||
|
MenuControls_1.AddOption(TheText.Get("FEC_CF1"), X(15.0f), Y(2.0f), TriggerControls_ContrConfig, false, false);
|
||
|
MenuControls_1.AddOption(TheText.Get("FEC_CF2"), X(85.0f), Y(2.0f), TriggerControls_ContrConfig, false, false);
|
||
|
MenuControls_1.AddOption(TheText.Get("FEC_CF3"), X(155.0f), Y(2.0f), TriggerControls_ContrConfig, false, false);
|
||
|
MenuControls_1.AddOption(TheText.Get("FEC_CF4"), X(225.0f), Y(2.0f), TriggerControls_ContrConfig, false, false);
|
||
|
MenuPage_Controls.AddMenu(&MenuControls_1);
|
||
|
MenuControls_1.m_alwaysTrigger = (CMenuMultiChoiceTriggered::Trigger)TriggerControls_DrawContrConfig;
|
||
|
MenuControls_1.m_alwaysHighlightTrigger = (CMenuMultiChoiceTriggered::Trigger)TriggerControls_DrawHNContrConfig;
|
||
|
MenuControls_1.m_alwaysNormalTrigger = (CMenuMultiChoiceTriggered::Trigger)TriggerControls_DrawHNContrConfig;
|
||
|
|
||
|
MenuControls_2.m_numOptions = 0;
|
||
|
MenuControls_2.SetPosition(X(284.0f), Y(310.0f));
|
||
|
MenuControls_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, SELECTED_TEXT_COLOR);
|
||
|
MenuControls_2.SetNewOldTextScale(true, CONFIGS_NEW_TEXTSCALE_scaled, defaultTextScale3, false);
|
||
|
MenuControls_2.AddTitle(TheText.Get("FEC_CDP"), 0.0f, 0.0f, true);
|
||
|
MenuControls_2.AddOption(TheText.Get("FEC_ONF"), X(15.0f), Y(2.0f), (CMenuMultiChoiceTriggered::Trigger)TriggerControls_ContrDisplay, false, false);
|
||
|
MenuControls_2.AddOption(TheText.Get("FEC_INC"), X(105.0f), Y(2.0f), (CMenuMultiChoiceTriggered::Trigger)TriggerControls_ContrDisplay, false, false);
|
||
|
MenuPage_Controls.AddMenu(&MenuControls_2);
|
||
|
MenuControls_2.m_bTwoState = true;
|
||
|
MenuControls_2.SetMenuSelection(0);
|
||
|
|
||
|
MenuControls_5.SetPosition(X(284.0f), Y(330.0f));
|
||
|
MenuControls_5.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuControls_5.SetNewOldTextScale(true, CONFIGS_NEW_TEXTSCALE_scaled, defaultTextScale3, false);
|
||
|
MenuControls_5.AddTitle(TheText.Get("FEC_VIB"), false, 0.0f, 0.0f, true);
|
||
|
MenuControls_5.SetOptionPosition(X(15.0f), Y(2.0f), TriggerControls_Vibrations, false);
|
||
|
MenuPage_Controls.AddMenu(&MenuControls_5);
|
||
|
MenuPage_Controls.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Controls.ActivatePage();
|
||
|
|
||
|
|
||
|
/* Audio */
|
||
|
|
||
|
CVector2D audioOutputScale(X(0.49f), Y(0.63f));
|
||
|
CVector2D defaultTextScale4(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
|
||
|
FEC_MOVETAB movetab;
|
||
|
MenuAudio_1.SetPosition(X(70.0f), Y(80.0f));
|
||
|
MenuAudio_1.SetColors(TEXT_COLOR, TEXT_COLOR, SLIDER_LEFT_COLOR, SLIDER_RIGHT_COLOR);
|
||
|
MenuAudio_1.AddTitle(TheText.Get("FEA_MUS"), 0.0f, 0.0f);
|
||
|
MenuAudio_1.AddTickBox(X(15.0f), Y(20.0f), X(150.0f), Y(5.0f), Y(45.0f), TriggerAudio_MusicVolume, TriggerAudio_MusicVolumeAlways);
|
||
|
movetab.right = 1;
|
||
|
movetab.left = 2;
|
||
|
movetab.down = 3;
|
||
|
movetab.up = 3;
|
||
|
MenuPage_Audio.AddMenu(&MenuAudio_1, &movetab);
|
||
|
|
||
|
MenuAudio_4.m_numOptions = 0;
|
||
|
MenuAudio_4.SetPosition(X(280.0f), Y(80.0f));
|
||
|
MenuAudio_4.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, SELECTED_TEXT_COLOR);
|
||
|
MenuAudio_4.SetNewOldTextScale(true, audioOutputScale, defaultTextScale4, false);
|
||
|
MenuAudio_4.AddTitle(TheText.Get("FEA_OUT"), X(AUDIO_OUTPUT_POS.x), Y(AUDIO_OUTPUT_POS.y), false);
|
||
|
MenuAudio_4.AddOption(TheText.Get("FEA_ST"), X(-15.0f), Y(30.0f), TriggerAudio_StereoMono, false, false);
|
||
|
MenuAudio_4.AddOption(TheText.Get("FEA_MNO"), X(55.0f), Y(30.0f), TriggerAudio_StereoMono, false, false);
|
||
|
movetab.right = 2;
|
||
|
movetab.left = 0;
|
||
|
movetab.down = 3;
|
||
|
movetab.up = 3;
|
||
|
MenuPage_Audio.AddMenu(&MenuAudio_4, &movetab);
|
||
|
MenuAudio_4.m_bTwoState = true;
|
||
|
|
||
|
MenuAudio_2.SetPosition(X(410.0f), Y(80.0f));
|
||
|
MenuAudio_2.SetColors(TEXT_COLOR, TEXT_COLOR, SLIDER_LEFT_COLOR, SLIDER_RIGHT_COLOR);
|
||
|
MenuAudio_2.AddTitle(TheText.Get("FEA_SFX"), 0.0f, 0.0f);
|
||
|
MenuAudio_2.AddTickBox(X(5.0f), Y(20.0f), X(150.0f), Y(5.0f), Y(45.0f), TriggerAudio_SfxVolume, TriggerAudio_SfxVolumeAlways);
|
||
|
movetab.right = 0;
|
||
|
movetab.left = 1;
|
||
|
movetab.down = 3;
|
||
|
movetab.up = 3;
|
||
|
MenuPage_Audio.AddMenu(&MenuAudio_2, &movetab);
|
||
|
|
||
|
MenuAudio_3.m_numOptions = 0;
|
||
|
MenuAudio_3.SetPosition(X(50.0f), Y(170.0f));
|
||
|
MenuAudio_3.SetColors(TITLE_TEXT_COLOR, CRGBA(64, 64, 64, 255), CRGBA(250, 250, 250, 255));
|
||
|
MenuAudio_3.AddTitle(TheText.Get("FEA_RSS"), X(AUDIO_RSTATION_POS.x), Y(AUDIO_RSTATION_POS.y), false);
|
||
|
// first row
|
||
|
movetab.right = 1;
|
||
|
movetab.left = 4;
|
||
|
movetab.down = 5;
|
||
|
movetab.up = 5;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO1], &movetab, 0.0f, Y(18.0f),
|
||
|
CVector2D(X(96.0f), YF(72.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 2;
|
||
|
movetab.left = 0;
|
||
|
movetab.down = 6;
|
||
|
movetab.up = 6;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO2], &movetab, X(106.0f), Y(20.0f),
|
||
|
CVector2D(X(79.2f), YF(81.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 3;
|
||
|
movetab.left = 1;
|
||
|
movetab.down = 7;
|
||
|
movetab.up = 7;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO5], &movetab, X(210.0f), Y(20.0f),
|
||
|
CVector2D(X(86.4f), YF(72.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 4;
|
||
|
movetab.left = 2;
|
||
|
movetab.down = 8;
|
||
|
movetab.up = 8;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO7], &movetab, X(324.0f), Y(5.0f),
|
||
|
CVector2D(X(115.2f), YF(102.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 0;
|
||
|
movetab.left = 3;
|
||
|
movetab.down = 8;
|
||
|
movetab.up = 8;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO8], &movetab, X(446.0f), Y(5.0f),
|
||
|
CVector2D(X(102.96f), YF(101.4f)), TriggerAudio_RadioStation, false);
|
||
|
// second row
|
||
|
movetab.right = 6;
|
||
|
movetab.left = 8;
|
||
|
movetab.down = 0;
|
||
|
movetab.up = 0;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO3], &movetab, X(60.0f), Y(96.0f),
|
||
|
CVector2D(X(87.36f), YF(85.8f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 7;
|
||
|
movetab.left = 5;
|
||
|
movetab.down = 1;
|
||
|
movetab.up = 1;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO4], &movetab, X(130.0f), Y(72.0f),
|
||
|
CVector2D(X(129.6f), YF(129.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 8;
|
||
|
movetab.left = 6;
|
||
|
movetab.down = 2;
|
||
|
movetab.up = 2;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO6], &movetab, X(284.0f), Y(108.0f),
|
||
|
CVector2D(X(60.0f), YF(60.0f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 5;
|
||
|
movetab.left = 7;
|
||
|
movetab.down = 3;
|
||
|
movetab.up = 3;
|
||
|
MenuAudio_3.AddOption(&m_sprites[FE_RADIO9], &movetab, X(404.0f), Y(85.0f),
|
||
|
CVector2D(X(81.12f), YF(101.4f)), TriggerAudio_RadioStation, false);
|
||
|
movetab.right = 2;
|
||
|
movetab.left = 0;
|
||
|
movetab.down = 1;
|
||
|
movetab.up = 1;
|
||
|
MenuPage_Audio.AddMenu(&MenuAudio_3, &movetab);
|
||
|
MenuPage_Audio.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Audio.ActivatePage();
|
||
|
|
||
|
|
||
|
/* Display */
|
||
|
|
||
|
MenuDisplay_1.SetPosition(X(240.0f), Y(140.0f));
|
||
|
MenuDisplay_1.SetColors(TEXT_COLOR, TEXT_COLOR, SLIDER_LEFT_COLOR, SLIDER_RIGHT_COLOR);
|
||
|
MenuDisplay_1.m_style = 0; // ticks
|
||
|
MenuDisplay_1.AddTitle(TheText.Get("FED_BRI"), X(DISPLAY_BRIGHTNESS_POS.x), Y(DISPLAY_BRIGHTNESS_POS.y));
|
||
|
MenuDisplay_1.AddTickBox(X(-30.0f), Y(20.0f), X(200.0f), Y(40.0f), Y(40.0f));
|
||
|
MenuPage_Display.AddMenu(&MenuDisplay_1);
|
||
|
MenuDisplay_2.SetPosition(X(290.0f), Y(240.0f));
|
||
|
MenuDisplay_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuDisplay_2.AddTitle(TheText.Get("FED_TRA"), false, 0.0f, 0.0f, true);
|
||
|
#ifdef GTA_PC
|
||
|
MenuDisplay_2.SetOptionPosition(X(40.0f), 0.0f, TriggerDisplay_Trails, false);
|
||
|
#else
|
||
|
MenuDisplay_2.SetOptionPosition(X(40.0f), 0.0f, false);
|
||
|
#endif
|
||
|
MenuDisplay_2.m_bTwoState = true;
|
||
|
MenuPage_Display.AddMenu(&MenuDisplay_2);
|
||
|
MenuDisplay_3.SetPosition(X(290.0f), Y(260.0f));
|
||
|
MenuDisplay_3.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuDisplay_3.AddTitle(TheText.Get("FED_SUB"), false, 0.0f, 0.0f, true);
|
||
|
MenuDisplay_3.SetOptionPosition(X(40.0f), 0.0f, false);
|
||
|
MenuDisplay_3.m_bTwoState = true;
|
||
|
MenuPage_Display.AddMenu(&MenuDisplay_3);
|
||
|
MenuDisplay_4.SetPosition(X(290.0f), Y(280.0f));
|
||
|
MenuDisplay_4.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuDisplay_4.AddTitle(TheText.Get("FED_WIS"), false, 0.0f, 0.0f, true);
|
||
|
MenuDisplay_4.SetOptionPosition(X(40.0f), 0.0f, false);
|
||
|
MenuDisplay_4.m_bTwoState = true;
|
||
|
MenuPage_Display.AddMenu(&MenuDisplay_4);
|
||
|
MenuPage_Display.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Display.ActivatePage();
|
||
|
|
||
|
|
||
|
/* Language */
|
||
|
MenuLanguage_1.m_numOptions = 0;
|
||
|
MenuLanguage_1.SetPosition(X(288.0f), Y(160.0f));
|
||
|
MenuLanguage_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, SELECTED_TEXT_COLOR);
|
||
|
MenuLanguage_1.AddOption(TheText.Get("FEL_ENG"), 0.0f, 0.0f, TriggerLanguage_Language, false, false);
|
||
|
MenuLanguage_1.AddOption(TheText.Get("FEL_FRE"), 0.0f, Y(20.0f), TriggerLanguage_Language, false, false);
|
||
|
MenuLanguage_1.AddOption(TheText.Get("FEL_GER"), 0.0f, Y(40.0f), TriggerLanguage_Language, false, false);
|
||
|
MenuLanguage_1.AddOption(TheText.Get("FEL_ITA"), 0.0f, Y(60.0f), TriggerLanguage_Language, false, false);
|
||
|
MenuLanguage_1.AddOption(TheText.Get("FEL_SPA"), 0.0f, Y(80.0f), TriggerLanguage_Language, false, false);
|
||
|
MenuPage_Language.AddMenu(&MenuLanguage_1);
|
||
|
MenuPage_Language.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPage_Language.ActivatePage();
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Save zone menu
|
||
|
*/
|
||
|
|
||
|
CVector2D saveGameTextScale2(X(0.49f), Y(0.7f));
|
||
|
CVector2D defaultTextScale5(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
|
||
|
/* Save game */
|
||
|
|
||
|
MenuSaveZoneSG_1.m_numOptions = 0;
|
||
|
MenuSaveZoneSG_1.SetPosition(X(200.0f), Y(100.0f));
|
||
|
MenuSaveZoneSG_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneSG_1.AddOption(TheText.Get("FESZ_SA"), 0.0f, Y(20.0f), TriggerSaveZone_SaveGameSelect, false, false);
|
||
|
MenuSaveZoneSG_1.AddOption(TheText.Get("FESZ_CA"), 0.0f, Y(40.0f), TriggerSaveZone_QuitMenu, false, false);
|
||
|
MenuSaveZoneSG_1.m_defaultCancel = TriggerSaveZone_QuitMenu;
|
||
|
MenuPageSaveZone_SaveGame.AddMenu(&MenuSaveZoneSG_1);
|
||
|
MenuSaveZoneSG_1.SetMenuSelection(1);
|
||
|
MenuPageSaveZone_SaveGame.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_SaveGame.ActivatePage();
|
||
|
|
||
|
/* Select slot */
|
||
|
|
||
|
MenuSaveZoneSSL_1.m_numOptions = 0;
|
||
|
MenuSaveZoneSSL_1.SetPosition(X(160.0f), Y(100.0f));
|
||
|
MenuSaveZoneSSL_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneSSL_1.AddOption(TheText.Get("FESZ_CA"), 0.0f, 0.0f, TriggerSaveZone_BackToMainMenuTwoLines, false, false);
|
||
|
MenuSaveZoneSSL_1.SetNewOldTextScale(true, saveGameTextScale2, defaultTextScale5, true);
|
||
|
MenuPageSaveZone_SaveSlots.AddMenu(&MenuSaveZoneSSL_1);
|
||
|
MenuSaveZoneSSL_1.SetMenuSelection(0);
|
||
|
MenuPageSaveZone_SaveSlots.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_SaveSlots.ActivatePage();
|
||
|
|
||
|
/* Save successful */
|
||
|
|
||
|
MenuSaveZoneSS_1.m_numTexts = 0;
|
||
|
MenuSaveZoneSS_1.SetPosition(X(200.0f), Y(100.0f));
|
||
|
MenuSaveZoneSS_1.AddText(TheText.Get("FESZ_L1"), X(-40.0f), 0.0f, TITLE_TEXT_COLOR, false);
|
||
|
MenuSaveZoneSS_1.AddText(TheText.Get("FESZ_L2"), X(-40.0f), Y(20.0f), TITLE_TEXT_COLOR, false);
|
||
|
// twice this line?
|
||
|
MenuSaveZoneSS_1.AddText(TheText.Get("FESZ_L2"), X(-40.0f), Y(40.0f), TEXT_COLOR, false);
|
||
|
MenuPageSaveZone_SavedSuccessfully.AddMenu(&MenuSaveZoneSS_1);
|
||
|
MenuSaveZoneSS_2.m_numOptions = 0;
|
||
|
MenuSaveZoneSS_2.SetPosition(X(200.0f), Y(170.0f));
|
||
|
MenuSaveZoneSS_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneSS_2.AddOption(TheText.Get("FESZ_QU"), X(60.0f), 0.0f, TriggerSaveZone_QuitMenu, false, false);
|
||
|
MenuPageSaveZone_SavedSuccessfully.AddMenu(&MenuSaveZoneSS_2);
|
||
|
MenuPageSaveZone_SavedSuccessfully.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_SavedSuccessfully.ActivatePage();
|
||
|
|
||
|
|
||
|
MenuSaveZoneMSG_1.m_numTexts = 0;
|
||
|
MenuSaveZoneMSG_1.SetPosition(X(170.0f), Y(130.0f));
|
||
|
MenuSaveZoneMSG_1.AddText(TheText.Get("FESZ_SR"), X(-40.0f), 0.0f, TEXT_COLOR, false);
|
||
|
MenuSaveZoneMSG_1.SetTextsColor(TEXT_COLOR);
|
||
|
MenuSaveZoneMSG_1.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x-20.0f), X(580.0f));
|
||
|
MenuPageSaveZone_Message.AddMenu(&MenuSaveZoneMSG_1);
|
||
|
MenuSaveZoneMSG_2.m_numOptions = 0;
|
||
|
MenuSaveZoneMSG_2.SetPosition(X(170.0f), Y(180.0f));
|
||
|
MenuSaveZoneMSG_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneMSG_2.AddOption(TheText.Get("FESZ_OK"), X(40.0f), 0.0f, TriggerSaveZone_QuitMenu, false, false);
|
||
|
MenuPageSaveZone_Message.AddMenu(&MenuSaveZoneMSG_2);
|
||
|
MenuPageSaveZone_Message.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_Message.ActivatePage();
|
||
|
|
||
|
|
||
|
MenuSaveZoneQYN_1.m_numTexts = 0;
|
||
|
MenuSaveZoneQYN_1.SetPosition(X(170.0f), Y(130.0f));
|
||
|
MenuSaveZoneQYN_1.AddText(TheText.Get("FESZ_SR"), X(-40.0f), 0.0f, TEXT_COLOR, false);
|
||
|
MenuSaveZoneQYN_1.SetTextsColor(TEXT_COLOR);
|
||
|
MenuSaveZoneQYN_1.SetNewOldShadowWrapX(true, X(600.0f+SHADOW_VECTOR.x-20.0f), X(580.0f));
|
||
|
MenuPageSaveZone_QuestionYesNo.AddMenu(&MenuSaveZoneQYN_1);
|
||
|
MenuSaveZoneQYN_2.m_numOptions = 0;
|
||
|
MenuSaveZoneQYN_2.SetPosition(X(170.0f), Y(180.0f));
|
||
|
MenuSaveZoneQYN_2.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneQYN_2.AddOption(TheText.Get("FEM_YES"), X(80.0f), 0.0f, TriggerSaveZone_QuitMenu, false, false);
|
||
|
MenuSaveZoneQYN_2.AddOption(TheText.Get("FEM_NO"), X(80.0f), Y(20.0f), TriggerSaveZone_QuitMenu, false, false);
|
||
|
MenuPageSaveZone_QuestionYesNo.AddMenu(&MenuSaveZoneQYN_2);
|
||
|
MenuPageSaveZone_QuestionYesNo.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_QuestionYesNo.ActivatePage();
|
||
|
|
||
|
/* Format card */
|
||
|
|
||
|
MenuSaveZoneFC_1.m_numOptions = 0;
|
||
|
MenuSaveZoneFC_1.SetPosition(X(200.0f), Y(100.0f));
|
||
|
MenuSaveZoneFC_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneFC_1.AddTitle(TheText.Get("FESZ_FM"), X(-100.0f), 0.0f, false);
|
||
|
MenuSaveZoneFC_1.AddOption(TheText.Get("FEM_NO"), X(40.0f), Y(95.0f), TriggerSaveZone_BackToMainMenu, false, false);
|
||
|
MenuSaveZoneFC_1.AddOption(TheText.Get("FEM_YES"), X(40.0f), Y(75.0f), TriggerSaveZone_FormatCardSelect, false, false);
|
||
|
MenuSaveZoneFC_1.m_defaultCancel = TriggerSaveZone_FormatCardSelect;
|
||
|
MenuPageSaveZone_FormatCard.AddMenu(&MenuSaveZoneFC_1);
|
||
|
MenuPageSaveZone_FormatCard.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_FormatCard.ActivatePage();
|
||
|
|
||
|
/* Format error */
|
||
|
|
||
|
MenuSaveZoneEF_1.m_numOptions = 0;
|
||
|
MenuSaveZoneEF_1.SetPosition(X(200.0f), Y(100.0f));
|
||
|
MenuSaveZoneEF_1.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
MenuSaveZoneEF_1.AddTitle(TheText.Get("FESZ_FF"), X(-40.0f), 0.0f, false);
|
||
|
MenuSaveZoneEF_1.AddOption(TheText.Get("FESZ_OK"), X(70.0f), Y(20.0f), TriggerSaveZone_FormatFailedOK, false, false);
|
||
|
MenuPageSaveZone_ErrorFormat.AddMenu(&MenuSaveZoneEF_1);
|
||
|
MenuPageSaveZone_ErrorFormat.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
MenuPageSaveZone_ErrorFormat.ActivatePage();
|
||
|
|
||
|
pActiveMenuPage = &MenuPage_Stats;
|
||
|
pActiveMenuPage->ActivatePage();
|
||
|
|
||
|
InitialiseMenuContents();
|
||
|
|
||
|
m_bWantToUpdateContent = false;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::InitialiseChangedLanguageSettings(void)
|
||
|
{
|
||
|
if ( bFrontEnd_ReloadObrTxtGxt )
|
||
|
{
|
||
|
bFrontEnd_ReloadObrTxtGxt = false;
|
||
|
|
||
|
CTimer::Stop();
|
||
|
TheText.Unload();
|
||
|
TheText.Load();
|
||
|
CTimer::Update();
|
||
|
|
||
|
FrontEndMenuManager.AnaliseMenuContents();
|
||
|
CGame::frenchGame = false;
|
||
|
CGame::germanGame = false;
|
||
|
if ( m_PrefsAllowNastyGame )
|
||
|
CGame::nastyGame = true;
|
||
|
|
||
|
for ( int32 i = 0; i < NUM_PAGES; i++ )
|
||
|
{
|
||
|
BUTTONTAB_TEXT_X_SCALES[i] = 1.0f;
|
||
|
PANEL_TEXT_X_SCALES[i] = 1.0f;
|
||
|
}
|
||
|
|
||
|
switch ( m_PrefsLanguage )
|
||
|
{
|
||
|
case LANGUAGE_AMERICAN:
|
||
|
{
|
||
|
MENU_TEXT_SIZE_X = 0.644f;
|
||
|
MENU_TEXT_SIZE_Y = 0.84f;//0.96f;
|
||
|
|
||
|
BUTTONTAB_TEXT_SIZE_X = 0.35f;
|
||
|
BUTTONTAB_TEXT_SIZE_Y = 0.7f;//0.8f;
|
||
|
|
||
|
BUTTONTAB_TEXT_X_SCALES[6] = 0.94f;
|
||
|
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.x = 0.4564f;
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.y = 0.63f;//0.72f;
|
||
|
|
||
|
CONFIGS_NEW_TEXTSCALE.x = 0.49f;
|
||
|
CONFIGS_NEW_TEXTSCALE.y = 0.7f;//0.8f;
|
||
|
|
||
|
AUDIO_OUTPUT_POS.x = 0.0f;
|
||
|
AUDIO_OUTPUT_POS.y = 0.0f;
|
||
|
|
||
|
AUDIO_RSTATION_POS.x = 154.0f;
|
||
|
AUDIO_RSTATION_POS.y = 0.0f;
|
||
|
|
||
|
DISPLAY_BRIGHTNESS_POS.x = 0.0f;
|
||
|
DISPLAY_BRIGHTNESS_POS.y = 0.0f;
|
||
|
|
||
|
MEMCARD_ACCESS_MSG_SIZE_X = 0.84f;
|
||
|
MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f;//1.28f;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case LANGUAGE_FRENCH:
|
||
|
{
|
||
|
CGame::frenchGame = true;
|
||
|
if ( m_PrefsAllowNastyGame )
|
||
|
CGame::nastyGame = false;
|
||
|
|
||
|
MENU_TEXT_SIZE_X = 0.504f;
|
||
|
MENU_TEXT_SIZE_Y = 0.84f;//0.96f;
|
||
|
|
||
|
BUTTONTAB_TEXT_SIZE_X = 0.32f;
|
||
|
BUTTONTAB_TEXT_SIZE_Y = 0.7f;//0.8f;
|
||
|
|
||
|
BUTTONTAB_TEXT_X_SCALES[0] = 0.84f;
|
||
|
BUTTONTAB_TEXT_X_SCALES[3] = 0.84f;
|
||
|
PANEL_TEXT_X_SCALES[1] = 0.8f;
|
||
|
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.x = 0.385f;
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.y = 0.63f;//0.72f;
|
||
|
|
||
|
CONFIGS_NEW_TEXTSCALE.x = 0.455f;
|
||
|
CONFIGS_NEW_TEXTSCALE.y = 0.7f;//0.8f;
|
||
|
|
||
|
AUDIO_OUTPUT_POS.x = -15.0f;
|
||
|
AUDIO_OUTPUT_POS.y = 0.0f;
|
||
|
|
||
|
AUDIO_RSTATION_POS.x = 184.0f;
|
||
|
AUDIO_RSTATION_POS.y = 0.0f;
|
||
|
|
||
|
DISPLAY_BRIGHTNESS_POS.x = 20.0f;
|
||
|
DISPLAY_BRIGHTNESS_POS.y = 0.0f;
|
||
|
|
||
|
MEMCARD_ACCESS_MSG_SIZE_X = 0.84f;
|
||
|
MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f;//1.28f;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case LANGUAGE_GERMAN:
|
||
|
{
|
||
|
CGame::germanGame = true;
|
||
|
if ( m_PrefsAllowNastyGame )
|
||
|
CGame::nastyGame = false;
|
||
|
|
||
|
MENU_TEXT_SIZE_X = 0.546f;
|
||
|
MENU_TEXT_SIZE_Y = 0.84f;//0.96f;
|
||
|
|
||
|
BUTTONTAB_TEXT_SIZE_X = 0.32f;
|
||
|
BUTTONTAB_TEXT_SIZE_Y = 0.7f;//0.8f;
|
||
|
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.x = 0.35f;
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.y = 0.63f;//0.72f;
|
||
|
|
||
|
CONFIGS_NEW_TEXTSCALE.x = 0.434f;
|
||
|
CONFIGS_NEW_TEXTSCALE.y = 0.7f;//0.8f;
|
||
|
|
||
|
AUDIO_OUTPUT_POS.x = -15.0f;
|
||
|
AUDIO_OUTPUT_POS.y = 0.0f;
|
||
|
|
||
|
AUDIO_RSTATION_POS.x = 154.0f;
|
||
|
AUDIO_RSTATION_POS.y = 0.0f;
|
||
|
|
||
|
DISPLAY_BRIGHTNESS_POS.x = 20.0f;
|
||
|
DISPLAY_BRIGHTNESS_POS.y = 0.0f;
|
||
|
|
||
|
MEMCARD_ACCESS_MSG_SIZE_X = 0.7f;
|
||
|
MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f;//1.28f;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case LANGUAGE_ITALIAN:
|
||
|
{
|
||
|
MENU_TEXT_SIZE_X = 0.574f;
|
||
|
MENU_TEXT_SIZE_Y = 0.84f;//0.96f;
|
||
|
|
||
|
BUTTONTAB_TEXT_SIZE_X = 0.32f;
|
||
|
BUTTONTAB_TEXT_SIZE_Y = 0.7f;//0.8f;
|
||
|
|
||
|
BUTTONTAB_TEXT_X_SCALES[0] = 0.86f;
|
||
|
PANEL_TEXT_X_SCALES[1] = 0.9f;
|
||
|
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.x = 0.385f;
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.y = 0.63f;//0.72f;
|
||
|
|
||
|
CONFIGS_NEW_TEXTSCALE.x = 0.42f;
|
||
|
CONFIGS_NEW_TEXTSCALE.y = 0.7f;//0.8f;
|
||
|
|
||
|
AUDIO_OUTPUT_POS.x = 10.0f;
|
||
|
AUDIO_OUTPUT_POS.y = 0.0f;
|
||
|
|
||
|
AUDIO_RSTATION_POS.x = 194.0f;
|
||
|
AUDIO_RSTATION_POS.y = 0.0f;
|
||
|
|
||
|
DISPLAY_BRIGHTNESS_POS.x = 10.0f;
|
||
|
DISPLAY_BRIGHTNESS_POS.y = 0.0f;
|
||
|
|
||
|
MEMCARD_ACCESS_MSG_SIZE_X = 0.84f;
|
||
|
MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f;//1.28f;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case LANGUAGE_SPANISH:
|
||
|
{
|
||
|
MENU_TEXT_SIZE_X = 0.546f;
|
||
|
MENU_TEXT_SIZE_Y = 0.84f;//0.96f;
|
||
|
|
||
|
BUTTONTAB_TEXT_SIZE_X = 0.35f;
|
||
|
BUTTONTAB_TEXT_SIZE_Y = 0.7f;//0.8f;
|
||
|
|
||
|
BUTTONTAB_TEXT_X_SCALES[0] = 0.78f;
|
||
|
PANEL_TEXT_X_SCALES[1] = 0.95f;
|
||
|
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.x = 0.364f;
|
||
|
CONTR_DESCR_NEW_TEXTSCALE.y = 0.63f;//0.72f;
|
||
|
|
||
|
CONFIGS_NEW_TEXTSCALE.x = 0.455f;
|
||
|
CONFIGS_NEW_TEXTSCALE.y = 0.7f;//0.8f;
|
||
|
|
||
|
AUDIO_OUTPUT_POS.x = 10.0f;
|
||
|
AUDIO_OUTPUT_POS.y = 0.0f;
|
||
|
|
||
|
AUDIO_RSTATION_POS.x = 124.0f;
|
||
|
AUDIO_RSTATION_POS.y = 0.0f;
|
||
|
|
||
|
DISPLAY_BRIGHTNESS_POS.x = 30.0f;
|
||
|
DISPLAY_BRIGHTNESS_POS.y = 0.0f;
|
||
|
|
||
|
MEMCARD_ACCESS_MSG_SIZE_X = 0.84f;
|
||
|
MEMCARD_ACCESS_MSG_SIZE_Y = 1.12f;//1.28f;
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::InitialiseMenuContents(void)
|
||
|
{
|
||
|
if ( m_bWantToUpdateContent == false )
|
||
|
{
|
||
|
m_bWantToUpdateContent = true;
|
||
|
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
|
||
|
switch ( CPad::GetPad(0)->GetMode() )
|
||
|
{
|
||
|
case 3: m_PrefsControllerConfig = CONFIG_4; break;
|
||
|
case 2: m_PrefsControllerConfig = CONFIG_3; break;
|
||
|
case 1: m_PrefsControllerConfig = CONFIG_2; break;
|
||
|
case 0: m_PrefsControllerConfig = CONFIG_1; break;
|
||
|
}
|
||
|
|
||
|
MenuControls_1.SetMenuSelection(m_PrefsControllerConfig);
|
||
|
MenuControls_5.SetMenuSelection(m_PrefsUseVibration);
|
||
|
|
||
|
MenuAudio_1.SetMenuSelection(m_PrefsMusicVolume / 127.0f * 100.0f + 0.5f);
|
||
|
MenuAudio_2.SetMenuSelection(m_PrefsSfxVolume / 127.0f * 100.0f + 0.5f);
|
||
|
MenuAudio_3.SetMenuSelection(m_PrefsRadioStation);
|
||
|
MenuAudio_4.SetMenuSelection(m_PrefsStereoMono);
|
||
|
|
||
|
MenuDisplay_1.SetMenuSelection(m_PrefsBrightness / 512.0f * 100.0f + 0.5f);
|
||
|
#ifdef PS2
|
||
|
m_PrefsShowTrails = BlurOn;
|
||
|
#else
|
||
|
m_PrefsShowTrails = CMBlur::BlurOn;
|
||
|
#endif
|
||
|
MenuDisplay_2.SetMenuSelection(m_PrefsShowTrails);
|
||
|
MenuDisplay_3.SetMenuSelection(m_PrefsShowSubtitles);
|
||
|
MenuDisplay_4.SetMenuSelection(m_PrefsUseWideScreen);
|
||
|
|
||
|
MenuLanguage_1.SetMenuSelection(m_PrefsLanguage);
|
||
|
|
||
|
FillMenuWithMemCardFileListing(&MenuSaveLG_2, TriggerSave_BackToMainMenuTwoLines, TriggerSave_LoadGameLoadGameSelect, NULL, 0, 34, 22);
|
||
|
FillMenuWithMemCardFileListing(&MenuSaveDG_2, TriggerSave_BackToMainMenuTwoLines, TriggerSave_DeleteGameDeleteGameSelect, NULL, 0, 34, 22);
|
||
|
|
||
|
MenuBriefs_1.m_numTexts = 0;
|
||
|
MenuBriefs_1.AddText(TheText.Get("FEB_PMB"), 0.0f, 0.0f, TITLE_TEXT_COLOR, 0); // Previous Mission Briefs:
|
||
|
|
||
|
static wchar StringsToDisplay[NUMPREVIOUSBRIEFS][256];
|
||
|
|
||
|
CRGBA newColor;
|
||
|
int32 brierY = 36;
|
||
|
|
||
|
for ( int32 i = NUMPREVIOUSBRIEFS-1; i >= 0; i-- )
|
||
|
{
|
||
|
tPreviousBrief &brief = CMessages::PreviousBriefs[i];
|
||
|
if (brief.m_pText)
|
||
|
{
|
||
|
CMessages::InsertNumberInString(brief.m_pText,
|
||
|
brief.m_nNumber[0], brief.m_nNumber[1],
|
||
|
brief.m_nNumber[2], brief.m_nNumber[3],
|
||
|
brief.m_nNumber[4], brief.m_nNumber[5], StringsToDisplay[i]);
|
||
|
CMessages::InsertStringInString(StringsToDisplay[i], brief.m_pString);
|
||
|
|
||
|
newColor = TEXT_COLOR;
|
||
|
FilterOutColorMarkersFromString(StringsToDisplay[i], newColor);
|
||
|
|
||
|
if (newColor != TEXT_COLOR)
|
||
|
{
|
||
|
newColor.r /= 2;
|
||
|
newColor.g /= 2;
|
||
|
newColor.b /= 2;
|
||
|
}
|
||
|
MenuBriefs_1.AddText(StringsToDisplay[i], 0.0f, YF((float)brierY), newColor, 0);
|
||
|
brierY += 54;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
MenuStats_1.m_scrollPosition = 0.0f;
|
||
|
MenuStats_1.ResetNumberOfTextLines();
|
||
|
|
||
|
nStatLinesIndex = 0;
|
||
|
|
||
|
#define STAT_HEADER(str) do { MenuStats_1.AddTextLine(TheText.Get(str), NULL); } while(0)
|
||
|
#define STAT_PARAM(str) do { MenuStats_1.AddTextLine(NULL, TheText.Get(str)); } while(0)
|
||
|
#define STAT_LINE(str, left, isFloat, right) do { MenuStats_1.AddTextLine(TheText.Get(str), PrintStatLine(str, left, isFloat, right)); } while(0)
|
||
|
|
||
|
int32 nTemp;
|
||
|
|
||
|
STAT_HEADER("PL_STAT");
|
||
|
|
||
|
int32 percentCompleted = (CStats::TotalProgressInGame == 0 ? 0 : CStats::ProgressMade * 100.0f / (CGame::nastyGame ? CStats::TotalProgressInGame : CStats::TotalProgressInGame - 1));
|
||
|
percentCompleted = Min(percentCompleted, 100);
|
||
|
|
||
|
STAT_LINE("PER_COM", &percentCompleted, 0, NULL);
|
||
|
|
||
|
STAT_LINE("NMISON", &CStats::MissionsGiven, 0, NULL);
|
||
|
|
||
|
STAT_LINE("FEST_MP", &CStats::MissionsPassed, 0, &CStats::TotalNumberMissions);
|
||
|
|
||
|
if ( CGame::nastyGame )
|
||
|
STAT_LINE("FEST_RP", &CStats::NumberKillFrenziesPassed, 0, &CStats::TotalNumberKillFrenzies);
|
||
|
|
||
|
CPlayerInfo &player = CWorld::Players[CWorld::PlayerInFocus];
|
||
|
float packagesPercent = 0.0f;
|
||
|
if (player.m_nTotalPackages != 0)
|
||
|
packagesPercent = player.m_nCollectedPackages * 100.0f / player.m_nTotalPackages;
|
||
|
int nPackagesPercent = packagesPercent;
|
||
|
nTemp = 100;
|
||
|
|
||
|
STAT_LINE("PERPIC", &nPackagesPercent, 0, &nTemp);
|
||
|
|
||
|
STAT_LINE("NOUNIF", &CStats::NumberOfUniqueJumpsFound, 0, &CStats::TotalNumberOfUniqueJumps);
|
||
|
|
||
|
STAT_LINE("DAYSPS", &CStats::DaysPassed, 0, NULL);
|
||
|
|
||
|
if ( CGame::nastyGame )
|
||
|
{
|
||
|
STAT_LINE("PE_WAST", &CStats::PeopleKilledByPlayer, 0, NULL);
|
||
|
STAT_LINE("PE_WSOT", &CStats::PeopleKilledByOthers, 0, NULL);
|
||
|
}
|
||
|
|
||
|
STAT_LINE("CAR_EXP", &CStats::CarsExploded, 0, NULL);
|
||
|
|
||
|
STAT_LINE("TM_BUST", &CStats::TimesArrested, 0, NULL);
|
||
|
|
||
|
STAT_LINE("TM_DED", &CStats::TimesDied, 0, NULL);
|
||
|
|
||
|
nTemp = CStats::PedsKilledOfThisType[PEDTYPE_GANG9] + CStats::PedsKilledOfThisType[PEDTYPE_GANG8]
|
||
|
+ CStats::PedsKilledOfThisType[PEDTYPE_GANG7] + CStats::PedsKilledOfThisType[PEDTYPE_GANG6]
|
||
|
+ CStats::PedsKilledOfThisType[PEDTYPE_GANG5] + CStats::PedsKilledOfThisType[PEDTYPE_GANG4]
|
||
|
+ CStats::PedsKilledOfThisType[PEDTYPE_GANG3] + CStats::PedsKilledOfThisType[PEDTYPE_GANG2]
|
||
|
+ CStats::PedsKilledOfThisType[PEDTYPE_GANG1];
|
||
|
STAT_LINE("GNG_WST", &nTemp, 0, NULL);
|
||
|
|
||
|
nTemp = CStats::PedsKilledOfThisType[PEDTYPE_CRIMINAL];
|
||
|
STAT_LINE("DED_CRI", &nTemp, 0, NULL);
|
||
|
|
||
|
STAT_LINE("HEL_DST", &CStats::HelisDestroyed, 0, NULL);
|
||
|
|
||
|
STAT_LINE("KGS_EXP", &CStats::KgsOfExplosivesUsed, 0, NULL);
|
||
|
|
||
|
nTemp = (CStats::InstantHitsFiredByPlayer == 0 ? 0 : CStats::InstantHitsHitByPlayer * 100.0f / CStats::InstantHitsFiredByPlayer);
|
||
|
STAT_LINE("ACCURA", &nTemp, 0, NULL);
|
||
|
|
||
|
if (CStats::ElBurroTime > 0)
|
||
|
STAT_LINE("ELBURRO", &CStats::ElBurroTime, 0, NULL);
|
||
|
|
||
|
if (CStats::Record4x4One > 0)
|
||
|
STAT_LINE("FEST_R1", &CStats::Record4x4One, 0, NULL);
|
||
|
|
||
|
if (CStats::Record4x4Two > 0)
|
||
|
STAT_LINE("FEST_R2", &CStats::Record4x4Two, 0, NULL);
|
||
|
|
||
|
if (CStats::Record4x4Three > 0)
|
||
|
STAT_LINE("FEST_R3", &CStats::Record4x4Three, 0, NULL);
|
||
|
|
||
|
if (CStats::Record4x4Mayhem > 0)
|
||
|
STAT_LINE("FEST_RM", &CStats::Record4x4Mayhem, 0, NULL);
|
||
|
|
||
|
if (CStats::LongestFlightInDodo > 0)
|
||
|
STAT_LINE("FEST_LF", &CStats::LongestFlightInDodo, 0, NULL);
|
||
|
|
||
|
if (CStats::TimeTakenDefuseMission > 0)
|
||
|
STAT_LINE("FEST_BD", &CStats::TimeTakenDefuseMission, 0, NULL);
|
||
|
|
||
|
STAT_LINE("CAR_CRU", &CStats::CarsCrushed, 0, NULL);
|
||
|
|
||
|
if (CStats::HighestScores[0] > 0)
|
||
|
{
|
||
|
STAT_HEADER("FEST_BB");
|
||
|
STAT_LINE("FEST_H0", &CStats::HighestScores[0], 0, NULL);
|
||
|
}
|
||
|
|
||
|
int32 hs = 0;
|
||
|
for ( int32 i = 1; i < 5; i++ )
|
||
|
hs += CStats::HighestScores[i];
|
||
|
|
||
|
if (hs > 0)
|
||
|
STAT_HEADER("FEST_GC");
|
||
|
|
||
|
if (CStats::HighestScores[1] > 0)
|
||
|
STAT_LINE("FEST_H1", &CStats::HighestScores[1], 0, NULL);
|
||
|
|
||
|
if (CStats::HighestScores[2] > 0)
|
||
|
STAT_LINE("FEST_H2", &CStats::HighestScores[2], 0, NULL);
|
||
|
|
||
|
if (CStats::HighestScores[3] > 0)
|
||
|
STAT_LINE("FEST_H3", &CStats::HighestScores[3], 0, NULL);
|
||
|
|
||
|
if (CStats::HighestScores[4] > 0)
|
||
|
STAT_LINE("FEST_H4", &CStats::HighestScores[4], 0, NULL);
|
||
|
|
||
|
STAT_LINE("FESTDFM", &CStats::DistanceTravelledOnFoot, 0, NULL);
|
||
|
STAT_LINE("FESTDCM", &CStats::DistanceTravelledInVehicle, 0, NULL);
|
||
|
STAT_LINE("MMRAIN", &CStats::mmRain, 0, NULL);
|
||
|
nTemp = (int32)CStats::MaximumJumpDistance;
|
||
|
STAT_LINE("MXCARDM", &nTemp, 0, NULL);
|
||
|
nTemp = (int32)CStats::MaximumJumpHeight;
|
||
|
STAT_LINE("MXCARJM", &nTemp, 0, NULL);
|
||
|
|
||
|
STAT_LINE("MXFLIP", &CStats::MaximumJumpFlips, 0, NULL);
|
||
|
STAT_LINE("MXJUMP", &CStats::MaximumJumpSpins, 0, NULL);
|
||
|
|
||
|
STAT_HEADER("BSTSTU");
|
||
|
|
||
|
switch (CStats::BestStuntJump)
|
||
|
{
|
||
|
case 1: STAT_PARAM("INSTUN"); break;
|
||
|
case 2: STAT_PARAM("PRINST"); break;
|
||
|
case 3: STAT_PARAM("DBINST"); break;
|
||
|
case 4: STAT_PARAM("DBPINS"); break;
|
||
|
case 5: STAT_PARAM("TRINST"); break;
|
||
|
case 6: STAT_PARAM("PRTRST"); break;
|
||
|
case 7: STAT_PARAM("QUINST"); break;
|
||
|
case 8: STAT_PARAM("PQUINS"); break;
|
||
|
default: STAT_PARAM("NOSTUC"); break;
|
||
|
}
|
||
|
|
||
|
STAT_LINE("PASDRO", &CStats::PassengersDroppedOffWithTaxi, 0, NULL);
|
||
|
STAT_LINE("MONTAX", &CStats::MoneyMadeWithTaxi, 0, NULL);
|
||
|
STAT_LINE("FEST_LS", &CStats::LivesSavedWithAmbulance, 0, NULL);
|
||
|
STAT_LINE("FEST_HA", &CStats::HighestLevelAmbulanceMission, 0, NULL);
|
||
|
STAT_LINE("FEST_CC", &CStats::CriminalsCaught, 0, NULL);
|
||
|
STAT_LINE("FEST_FE", &CStats::FiresExtinguished, 0, NULL);
|
||
|
int32 rnd = ((CGeneral::GetRandomNumber() & 255) + 100) * 2384;
|
||
|
STAT_LINE("DAYPLC", &rnd, 0, NULL);
|
||
|
|
||
|
#undef STAT_LINE
|
||
|
|
||
|
MenuStats_2.m_numTexts = 0;
|
||
|
MenuStats_2.AddText(TheText.Get("CRIMRA"), 0.0f, 0.0f, CRIM_RATING_TEXT_COLOR, 0);
|
||
|
|
||
|
char rating[16];
|
||
|
wchar urating[16];
|
||
|
sprintf(rating, " %d", CStats::FindCriminalRatingNumber());
|
||
|
AsciiToUnicode(rating, urating);
|
||
|
|
||
|
wchar *pStatLine = aStatLines[nStatLinesIndex++];
|
||
|
UnicodeStrcpy(pStatLine, CStats::FindCriminalRatingString());
|
||
|
UnicodeStrcat(pStatLine, urating);
|
||
|
|
||
|
MenuStats_2.AddText(pStatLine, X(MenuStats_1.m_width), 0.0f, CRIM_RATING_TEXT_COLOR, 1);
|
||
|
|
||
|
MenuSaveZoneSG_1.SetMenuSelection(1);
|
||
|
MenuSaveZoneFC_1.SetMenuSelection(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
CMenuManager::AnaliseMenuContents(void)
|
||
|
{
|
||
|
if ( m_bWantToUpdateContent )
|
||
|
{
|
||
|
m_bWantToUpdateContent = false;
|
||
|
|
||
|
m_PrefsControllerConfig = (CONTRCONFIG)MenuControls_1.GetMenuSelection();
|
||
|
switch ( m_PrefsControllerConfig )
|
||
|
{
|
||
|
case CONFIG_4: CPad::GetPad(0)->SetMode(3); break;
|
||
|
case CONFIG_3: CPad::GetPad(0)->SetMode(2); break;
|
||
|
case CONFIG_2: CPad::GetPad(0)->SetMode(1); break;
|
||
|
case CONFIG_1: CPad::GetPad(0)->SetMode(0); break;
|
||
|
}
|
||
|
|
||
|
m_PrefsUseVibration = MenuControls_5.m_title.m_bSelected;
|
||
|
|
||
|
m_PrefsMusicVolume = float(MenuAudio_1.GetMenuSelection())/100.0f*127.0f+0.5f;
|
||
|
m_PrefsSfxVolume = float(MenuAudio_2.GetMenuSelection())/100.0f*127.0f+0.5f;
|
||
|
m_PrefsRadioStation = MenuAudio_3.GetMenuSelection();
|
||
|
m_PrefsStereoMono = MenuAudio_4.GetMenuSelection();
|
||
|
m_PrefsBrightness = float(MenuDisplay_1.GetMenuSelection()) / 100.0f*512.0f + 0.5f;
|
||
|
m_PrefsShowTrails = MenuDisplay_2.GetMenuSelection();
|
||
|
m_PrefsShowSubtitles = MenuDisplay_3.GetMenuSelection();
|
||
|
m_PrefsUseWideScreen = MenuDisplay_4.GetMenuSelection();
|
||
|
#ifdef PS2
|
||
|
BlurOn = m_PrefsShowTrails;
|
||
|
#else
|
||
|
CMBlur::BlurOn = m_PrefsShowTrails;
|
||
|
#endif
|
||
|
|
||
|
if ( m_PrefsLanguage != MenuLanguage_1.GetMenuSelection() )
|
||
|
{
|
||
|
m_PrefsLanguage = MenuLanguage_1.GetMenuSelection();
|
||
|
m_bInitialised = false;
|
||
|
bFrontEnd_ReloadObrTxtGxt = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::InitialiseMenuContentsAfterLoadingGame(void)
|
||
|
{
|
||
|
if ( MenuLanguage_1.GetMenuSelection() != m_PrefsLanguage )
|
||
|
{
|
||
|
m_bInitialised = false;
|
||
|
bFrontEnd_ReloadObrTxtGxt = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::DrawFrontEnd(void)
|
||
|
{
|
||
|
CFont::SetAlphaFade(255.0f);
|
||
|
if(m_bInSaveZone)
|
||
|
DrawFrontEndSaveZone();
|
||
|
else
|
||
|
DrawFrontEndNormal();
|
||
|
|
||
|
if ( MemCardAccessTriggerCaller.CanCall() )
|
||
|
MemCardAccessTriggerCaller.CallTrigger();
|
||
|
|
||
|
DisplayWarningControllerMsg();
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::DrawFrontEndNormal(void)
|
||
|
{
|
||
|
CSprite2d::InitPerFrame();
|
||
|
CFont::InitPerFrame();
|
||
|
|
||
|
if ( bMemoryCardSpecialZone )
|
||
|
{
|
||
|
static uint8 counter = 0;
|
||
|
|
||
|
counter++;
|
||
|
|
||
|
if ( (counter & 63 ) == 0 )
|
||
|
{
|
||
|
FillMenuWithMemCardFileListing(&MenuSaveLG_2, TriggerSave_BackToMainMenuTwoLines, TriggerSave_LoadGameLoadGameSelect, NULL, 0, 34, 22);
|
||
|
FillMenuWithMemCardFileListing(&MenuSaveDG_2, TriggerSave_BackToMainMenuTwoLines, TriggerSave_DeleteGameDeleteGameSelect, NULL, 0, 34, 22);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
m_fade = 255;
|
||
|
if ( m_nChangePageTimer != 0 && m_nChangePageTimer >= CTimer::GetTimeInMillisecondsPauseMode() )
|
||
|
m_fade = uint32(float(m_nChangePageTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 250.0f * 255.0f);
|
||
|
|
||
|
m_someAlpha = 255;
|
||
|
|
||
|
m_position.x = 0.0f;
|
||
|
m_position.y = 0.0f;
|
||
|
|
||
|
if ( m_nStartPauseTimer != 0 && m_nStartPauseTimer >= CTimer::GetTimeInMillisecondsPauseMode() )
|
||
|
{
|
||
|
float slide = float(m_nStartPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 800.0f;
|
||
|
float alpha = 1.0f;
|
||
|
|
||
|
if ((m_nStartPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) <= 1600)
|
||
|
alpha = float(m_nStartPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 400.0f;
|
||
|
|
||
|
m_someAlpha = 255 - clamp(alpha, 0.0f, 1.0f) * 255.0f;
|
||
|
|
||
|
switch ( m_nSlidingDir )
|
||
|
{
|
||
|
case SLIDE_TO_RIGHT: m_position.x = slide * X(700.0f); break;
|
||
|
case SLIDE_TO_TOP: m_position.y = -(slide * Y(500.0f)); break;
|
||
|
case SLIDE_TO_LEFT: m_position.x = -(slide * X(700.0f)); break;
|
||
|
case SLIDE_TO_BOTTOM: m_position.y = slide * Y(500.0f); break;
|
||
|
default: m_position.y = slide * Y(500.0f); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( m_nEndPauseTimer != 0 && m_nEndPauseTimer >= CTimer::GetTimeInMillisecondsPauseMode() )
|
||
|
{
|
||
|
float slide = float(m_nEndPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 800.0f;
|
||
|
float alpha = float((int32)(m_nEndPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) + -266) / 533.0f;
|
||
|
|
||
|
m_someAlpha = clamp(alpha, 0.0f, 1.0f) * 255.0f;
|
||
|
|
||
|
switch ( m_nSlidingDir )
|
||
|
{
|
||
|
case SLIDE_TO_TOP: m_position.y = (1.0f - slide) * Y(500.0f); break;
|
||
|
case SLIDE_TO_RIGHT: m_position.x = (1.0f - slide) * X(700.0f); break;
|
||
|
case SLIDE_TO_LEFT: m_position.x = (1.0f - slide) * X(700.0f); break;
|
||
|
case SLIDE_TO_BOTTOM: m_position.y = -((1.0f - slide) * Y(500.0f)); break;
|
||
|
default: m_position.y = -((1.0f - slide) * Y(500.0f)); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( m_someAlpha < 255 )
|
||
|
m_fade = m_someAlpha;
|
||
|
|
||
|
float posX, posY;
|
||
|
|
||
|
/* Draw splash */
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
CSprite2d *splash = LoadSplash(nil);
|
||
|
if(splash)
|
||
|
splash->Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
else
|
||
|
// doesn't exist!!
|
||
|
CHud::Sprites[19].Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERMIPNEAREST);
|
||
|
|
||
|
/* Draw main panel */
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP);
|
||
|
CRGBA panelColor(255, 255, 255, m_someAlpha);
|
||
|
m_sprites[FE2_MAINPANEL_UL].Draw(
|
||
|
CRect(m_position.x, m_position.y, m_position.x+SCRW/2.0f, m_position.y+SCRH/2.0f),
|
||
|
panelColor);
|
||
|
m_sprites[FE2_MAINPANEL_UR].Draw(
|
||
|
CRect(m_position.x+SCRW/2.0f, m_position.y, m_position.x+SCRW, m_position.y+SCRH/2.0f),
|
||
|
panelColor);
|
||
|
m_sprites[FE2_MAINPANEL_DL].Draw(
|
||
|
CRect(m_position.x, m_position.y+SCRH/2.0f, m_position.x+SCRW/2.0f, m_position.y+SCRH),
|
||
|
panelColor);
|
||
|
m_sprites[FE2_MAINPANEL_DR].Draw(
|
||
|
CRect(m_position.x+SCRW/2.0f, m_position.y+SCRH/2.0f, m_position.x+SCRW, m_position.y+SCRH),
|
||
|
panelColor);
|
||
|
|
||
|
/* Draw icon backdrop */
|
||
|
CRGBA iconColor(255, 255, 255, m_fade*0.75f);
|
||
|
float iconX = 48.0f;
|
||
|
float iconY = 54.0f;
|
||
|
float iconWidth = 540.0f;
|
||
|
float iconHeight = 296.0f;
|
||
|
int sprite = FE_ICONBRIEF;
|
||
|
|
||
|
#ifdef PS2_MENU_USEALLPAGEICONS
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS:
|
||
|
sprite = FE_ICONSTATS;
|
||
|
break;
|
||
|
case PAGE_LOAD:
|
||
|
sprite = FE_ICONSAVE;
|
||
|
break;
|
||
|
case PAGE_CONTROLS:
|
||
|
sprite = FE_ICONCONTROLS;
|
||
|
break;
|
||
|
case PAGE_BRIEFS:
|
||
|
sprite = FE_ICONBRIEF;
|
||
|
break;
|
||
|
case PAGE_AUDIO:
|
||
|
sprite = FE_ICONAUDIO;
|
||
|
break;
|
||
|
case PAGE_DISPLAY:
|
||
|
sprite = FE_ICONDISPLAY;
|
||
|
break;
|
||
|
case PAGE_LANGUAGE:
|
||
|
sprite = FE_ICONLANGUAGE;
|
||
|
break;
|
||
|
}
|
||
|
#else
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS:
|
||
|
case PAGE_LOAD:
|
||
|
case PAGE_CONTROLS:
|
||
|
sprite = FE_ICONSTATS; // PS2 has the same texture for stats and brief
|
||
|
//sprite = FE_ICONBRIEF;
|
||
|
break;
|
||
|
case PAGE_BRIEFS:
|
||
|
sprite = FE_ICONBRIEF;
|
||
|
break;
|
||
|
case PAGE_AUDIO:
|
||
|
sprite = FE_ICONAUDIO;
|
||
|
break;
|
||
|
case PAGE_DISPLAY:
|
||
|
sprite = FE_ICONDISPLAY;
|
||
|
break;
|
||
|
case PAGE_LANGUAGE:
|
||
|
sprite = FE_ICONLANGUAGE;
|
||
|
break;
|
||
|
}
|
||
|
#endif
|
||
|
m_sprites[sprite].Draw(
|
||
|
CRect_SZ(m_position.x+X(iconX), m_position.y+Y(iconY), X(iconWidth), Y(iconHeight)),
|
||
|
iconColor);
|
||
|
|
||
|
/* Overwrite tab buttons if entered page */
|
||
|
bool bOverwriteTab = false;
|
||
|
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
bOverwriteTab = true;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if( bOverwriteTab )
|
||
|
{
|
||
|
CRGBA shadow(41, 101, 102, m_someAlpha);
|
||
|
CRGBA green(40, 48, 57, m_someAlpha);
|
||
|
CSprite2d::DrawRect(
|
||
|
CRect_SZ(m_position.x+X(82.0f), m_position.y+Y(408.0f), X(476.0f), Y(18.0f)),
|
||
|
shadow);
|
||
|
CSprite2d::DrawRect(
|
||
|
CRect_SZ(m_position.x+X(82.0f), m_position.y+Y(408.0f), X(476.0f), Y(5.0f)),
|
||
|
green);
|
||
|
}
|
||
|
// stats, load, briefs, controls, audio, display, language
|
||
|
|
||
|
/* Shadow of panel on top of tab buttons */
|
||
|
CRGBA panelShadow(96, 96, 96, m_someAlpha*0.375f);
|
||
|
CSprite2d::DrawRect(CRect_SZ(m_position.x+X(87.0f), m_position.y+Y(408.0f), X(464.0f), Y(3.0f)), panelShadow);
|
||
|
/* Draw second shadow - seems unused */
|
||
|
if ( m_nChangePageTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() < m_nChangePageTimer )
|
||
|
{
|
||
|
posX = 0.0f;
|
||
|
switch(field_18)
|
||
|
{
|
||
|
case PAGE_STATS: posX = 88.0f; break;
|
||
|
case PAGE_LOAD: posX = 286.0f; break; // actually controls
|
||
|
case PAGE_BRIEFS: posX = 154.0f; break; // actually load
|
||
|
case PAGE_CONTROLS: posX = 220.0f; break; // actually briefs
|
||
|
case PAGE_AUDIO: posX = 352.0f; break;
|
||
|
case PAGE_DISPLAY: posX = 418.0f; break;
|
||
|
case PAGE_LANGUAGE: posX = 484.0f; break;
|
||
|
}
|
||
|
CSprite2d::DrawRect(CRect_SZ(m_position.x+X(posX), m_position.y+Y(411.0f), X(65.0f), Y(3.0f)), panelShadow);
|
||
|
}
|
||
|
|
||
|
/* Active tab */
|
||
|
posX = 0.0f;
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS: posX = 88.0f; break;
|
||
|
case PAGE_LOAD: posX = 154.0f; break;
|
||
|
case PAGE_BRIEFS: posX = 220.0f; break;
|
||
|
case PAGE_CONTROLS: posX = 286.0f; break;
|
||
|
case PAGE_AUDIO: posX = 352.0f; break;
|
||
|
case PAGE_DISPLAY: posX = 418.0f; break;
|
||
|
case PAGE_LANGUAGE: posX = 484.0f; break;
|
||
|
}
|
||
|
// PAL has 465 for 407 here - and actually 406 seems right
|
||
|
m_sprites[FE2_TABACTIVE].Draw(CRect_SZ(m_position.x+X(posX), m_position.y+YF(465.0f), X(128.0f), Y(32.0f)), CRGBA(255, 255, 255, m_someAlpha));
|
||
|
|
||
|
/* Draw page title */
|
||
|
posX = m_position.x + X(592.0f);
|
||
|
posY = m_position.y + Y(376.0f);
|
||
|
CRGBA fontCol1(255, 193, 71, m_someAlpha);
|
||
|
CRGBA fontCol2(0, 0, 0, m_someAlpha);
|
||
|
CFont::SetFontStyle(FONT_HEADING);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(PANEL_TEXT_SIZE_X), Y(PANEL_TEXT_SIZE_Y));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyWrap(0.0f);
|
||
|
CFont::SetRightJustifyOn();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(40.0f)); // 600.0f
|
||
|
const char *key = nil;
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS: key = "FEP_STA"; break;
|
||
|
case PAGE_LOAD: key = "FEP_SAV"; break;
|
||
|
case PAGE_BRIEFS: key = "FEP_BRI"; break;
|
||
|
case PAGE_CONTROLS: key = "FEP_CON"; break;
|
||
|
case PAGE_AUDIO: key = "FEP_AUD"; break;
|
||
|
case PAGE_DISPLAY: key = "FEP_DIS"; break;
|
||
|
case PAGE_LANGUAGE: key = "FEP_LAN"; break;
|
||
|
}
|
||
|
CFont::SetScale(X(PANEL_TEXT_SIZE_X*PANEL_TEXT_X_SCALES[m_currentPage]), Y(PANEL_TEXT_SIZE_Y));
|
||
|
CFont::SetColor(fontCol1);
|
||
|
CFont::PrintString(posX, posY, TheText.Get(key));
|
||
|
CFont::SetColor(fontCol2);
|
||
|
CFont::PrintString(posX-X(1.0f), posY-Y(1.0f), TheText.Get(key));
|
||
|
CFont::DrawFonts();
|
||
|
|
||
|
/* Draw controller buttons */
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(0.35f), Y(0.64f));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(40.0f)); // 600.0f
|
||
|
CFont::SetColor(CRGBA(16, 16, 16, m_someAlpha));
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS:
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(360.0f), TheText.Get("FEDS_ST"));
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(372.0f), TheText.Get("FEDS_AM"));
|
||
|
CFont::PrintString(m_position.x+X(242.0f), m_position.y+Y(360.0f), TheText.Get("FEDSSC1"));
|
||
|
CFont::PrintString(m_position.x+X(242.0f), m_position.y+Y(372.0f), TheText.Get("FEDSSC2"));
|
||
|
break;
|
||
|
|
||
|
case PAGE_BRIEFS:
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(360.0f), TheText.Get("FEDS_ST"));
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(372.0f), TheText.Get("FEDS_AM"));
|
||
|
break;
|
||
|
|
||
|
case PAGE_LOAD:
|
||
|
case PAGE_CONTROLS:
|
||
|
case PAGE_AUDIO:
|
||
|
case PAGE_DISPLAY:
|
||
|
case PAGE_LANGUAGE:
|
||
|
{
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(360.0f), TheText.Get("FEDS_SE"));
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(372.0f), TheText.Get("FEDS_BA"));
|
||
|
CFont::PrintString(m_position.x+X(52.0f), m_position.y+Y(384.0f), TheText.Get("FEDS_ST"));
|
||
|
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
CFont::PrintString(m_position.x+X(242.0f), m_position.y+Y(372.0f), TheText.Get("FEDS_AM")); // <>-CHANGE MENU
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
CFont::PrintString(m_position.x+X(242.0f), m_position.y+Y(360.0f+3.5f), TheText.Get("FEA_UP")); // ;
|
||
|
CFont::PrintString(m_position.x+X(242.0f), m_position.y+Y(384.0f-3.5f), TheText.Get("FEA_DO")); // =
|
||
|
CFont::PrintString(m_position.x+X(242.0f-10.0f), m_position.y+Y(372.0f), TheText.Get("FEA_LE")); // <
|
||
|
CFont::PrintString(m_position.x+X(242.0f+11.0f), m_position.y+Y(372.0f), TheText.Get("FEA_RI")); // >
|
||
|
CFont::PrintString(m_position.x+X(242.0f+20.0f), m_position.y+Y(372.0f), TheText.Get("FEDSAS3")); // - CHANGE SELECTION
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CFont::DrawFonts();
|
||
|
|
||
|
/* Draw tab button texts */
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(40.0f)); // 600.0f
|
||
|
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
CFont::SetColor(CRGBA(16, 16, 16, m_someAlpha));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_STATS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(92.0f), m_position.y+Y(408.0f), TheText.Get("FEB_STA"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_LOAD]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(158.0f), m_position.y+Y(408.0f), TheText.Get("FEB_SAV"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_BRIEFS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(224.0f), m_position.y+Y(408.0f), TheText.Get("FEB_BRI"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_CONTROLS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(290.0f), m_position.y+Y(408.0f), TheText.Get("FEB_CON"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_AUDIO]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(356.0f), m_position.y+Y(408.0f), TheText.Get("FEB_AUD"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_DISPLAY]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(422.0f), m_position.y+Y(408.0f), TheText.Get("FEB_DIS"));
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_LANGUAGE]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(488.0f), m_position.y+Y(408.0f), TheText.Get("FEB_LAN"));
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
CFont::SetColor(CRGBA(16, 16, 16, m_someAlpha));
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
// PAL has 466 for 408...probably rounded?
|
||
|
case PAGE_STATS:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_STATS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(92.0f), m_position.y+Y(408.0f), TheText.Get("FEB_STA"));
|
||
|
break;
|
||
|
case PAGE_LOAD:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_LOAD]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(158.0f), m_position.y+Y(408.0f), TheText.Get("FEB_SAV"));
|
||
|
break;
|
||
|
case PAGE_BRIEFS:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_BRIEFS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(224.0f), m_position.y+Y(408.0f), TheText.Get("FEB_BRI"));
|
||
|
break;
|
||
|
case PAGE_CONTROLS:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_CONTROLS]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(290.0f), m_position.y+Y(408.0f), TheText.Get("FEB_CON"));
|
||
|
break;
|
||
|
case PAGE_AUDIO:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_AUDIO]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(356.0f), m_position.y+Y(408.0f), TheText.Get("FEB_AUD"));
|
||
|
break;
|
||
|
case PAGE_DISPLAY:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_DISPLAY]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(422.0f), m_position.y+Y(408.0f), TheText.Get("FEB_DIS"));
|
||
|
break;
|
||
|
case PAGE_LANGUAGE:
|
||
|
CFont::SetScale(X(BUTTONTAB_TEXT_SIZE_X*BUTTONTAB_TEXT_X_SCALES[PAGE_LANGUAGE]), Y(BUTTONTAB_TEXT_SIZE_Y));
|
||
|
CFont::PrintString(m_position.x+X(488.0f), m_position.y+Y(408.0f), TheText.Get("FEB_LAN"));
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CFont::DrawFonts();
|
||
|
|
||
|
pActiveMenuPage = nil;
|
||
|
switch(m_currentPage)
|
||
|
{
|
||
|
case PAGE_STATS: pActiveMenuPage = &MenuPage_Stats; break;
|
||
|
case PAGE_LOAD: pActiveMenuPage = pMenuSave; break;
|
||
|
case PAGE_BRIEFS: pActiveMenuPage = &MenuPage_Briefs; break;
|
||
|
case PAGE_CONTROLS: pActiveMenuPage = &MenuPage_Controls; break;
|
||
|
case PAGE_AUDIO: pActiveMenuPage = &MenuPage_Audio; break;
|
||
|
case PAGE_DISPLAY: pActiveMenuPage = &MenuPage_Display; break;
|
||
|
case PAGE_LANGUAGE: pActiveMenuPage = &MenuPage_Language; break;
|
||
|
}
|
||
|
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(40.0f)); // 600.0f
|
||
|
CFont::SetRightJustifyWrap(X(38.0f));
|
||
|
|
||
|
if(m_currentPage == PAGE_LANGUAGE)
|
||
|
{
|
||
|
CFont::SetCentreOn();
|
||
|
CFont::SetCentreSize(SCRW-X(40.0f)); // 600.0f
|
||
|
}
|
||
|
|
||
|
if ( m_nEndPauseTimer != 0 )
|
||
|
{
|
||
|
switch ( m_currentPage )
|
||
|
{
|
||
|
case PAGE_LOAD:
|
||
|
case PAGE_BRIEFS:
|
||
|
case PAGE_CONTROLS:
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
CFont::SetWrapx(X(1200.0f));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(pActiveMenuPage)
|
||
|
{
|
||
|
pActiveMenuPage->SetAlpha(m_fade);
|
||
|
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
pActiveMenuPage->DrawNormal(m_position.x, m_position.y);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
pActiveMenuPage->DrawHighlighted(CRGBA(rgbaATC.r, rgbaATC.g, rgbaATC.b, m_fade), m_position.x, m_position.y);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
pActiveMenuPage->Draw(CRGBA(rgbaATC.r, rgbaATC.g, rgbaATC.b, m_fade), CRGBA(MENU_SELECTED_COLOR.r, MENU_SELECTED_COLOR.g, MENU_SELECTED_COLOR.b, m_fade), m_position.x, m_position.y);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CFont::DrawFonts();
|
||
|
CFont::DrawFonts();
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSWRAP);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::DrawFrontEndSaveZone(void)
|
||
|
{
|
||
|
if ( bMemoryCardSpecialZone )
|
||
|
{
|
||
|
static uint8 counter = 0;
|
||
|
counter++;
|
||
|
if ( counter & 63 )
|
||
|
{
|
||
|
FillMenuWithMemCardFileListing(&MenuSaveZoneSSL_1, TriggerSaveZone_BackToMainMenuTwoLines, TriggerSaveZone_SaveSlots, NULL, 0, 34, 22);
|
||
|
|
||
|
if ( TheMemoryCard.GetError() == CMemoryCard::ERR_NOFORMAT )
|
||
|
{
|
||
|
pActiveMenuPage = &MenuPageSaveZone_FormatCard;
|
||
|
pActiveMenuPage->ActivatePage();
|
||
|
bMemoryCardSpecialZone = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CSprite2d::InitPerFrame();
|
||
|
CFont::InitPerFrame();
|
||
|
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
|
||
|
|
||
|
m_fade = 255;
|
||
|
|
||
|
CSprite2d::DrawRect(CRect(X(50.0f), Y(50.0f), X(590.0f), Y(398.0f)), CRGBA(0, 0, 0, 175)); //CRect(50.0f, 57.142f, 590.0f, 454.857147f)
|
||
|
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetRightJustifyWrap(X(70.0f));
|
||
|
CFont::SetWrapx(SCRW-X(70.0f)); // 570.0f
|
||
|
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->SetAlpha(m_fade);
|
||
|
pActiveMenuPage->Draw(CRGBA(rgbaATC.r, rgbaATC.g, rgbaATC.b, m_fade), TITLE_TEXT_COLOR, 0.0f, 0.0f);
|
||
|
}
|
||
|
|
||
|
|
||
|
CFont::DrawFonts();
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(0.44f), Y(0.68f)); // 0.44f, 0.777143f
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(40.0f)); //600.0f
|
||
|
CFont::SetColor(TEXT_COLOR);
|
||
|
|
||
|
wchar *text;
|
||
|
if ( pActiveMenuPage == &MenuPageSaveZone_FormatCard
|
||
|
|| pActiveMenuPage == &MenuPageSaveZone_SaveSlots
|
||
|
|| pActiveMenuPage == &MenuPageSaveZone_SaveGame )
|
||
|
{
|
||
|
text = TheText.Get("FEDS_SB"); // / button - SELECT " button - BACK
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
text = TheText.Get("FEDS_SE"); // / button - SELECT
|
||
|
}
|
||
|
|
||
|
CFont::PrintString(X(180.0f), Y(376.0f), text); // 180.0f, 429.714294f
|
||
|
CFont::DrawFonts();
|
||
|
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::DrawMemoryCardStartUpMenus()
|
||
|
{
|
||
|
CFont::SetAlphaFade(255.0f);
|
||
|
bMemoryCardStartUpMenus_ExitNow = false;
|
||
|
|
||
|
CMenuPage page; // + 0x40 data
|
||
|
CMenuMultiChoiceTriggered MCMenu;
|
||
|
MCMenu.SetPosition(X(320.0f), Y(150.0f)); //171.428574f
|
||
|
|
||
|
switch ( TheMemoryCard.CheckCardStateAtGameStartUp(CARD_ONE) )
|
||
|
{
|
||
|
case CMemoryCard::MCSTATE_NEED_200KB: // 200KB
|
||
|
{
|
||
|
// There is insufficient space on the Memory Card (PS2) in MEMORY CARD slot 1. At least 200KB is needed to save this application data. Do you wish to start? (YES or NO)
|
||
|
MCMenu.AddTitle(TheText.Get("MCGNSP"), 0.0f, 0.0f, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CMemoryCard::MCSTATE_NEED_500KB: // 500KB
|
||
|
{
|
||
|
// There is insufficient space on the Memory Card (PS2) in MEMORY CARD slot 1. At least 500KB is needed to save this application data. Do you wish to start? (YES or NO)
|
||
|
MCMenu.AddTitle(TheText.Get("MCDNSP"), 0.0f, 0.0f, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CMemoryCard::MCSTATE_OK:
|
||
|
case CMemoryCard::MCSTATE_NOCARD:
|
||
|
{
|
||
|
return;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
MCMenu.AddOption(TheText.Get("FEM_NO"), X(30.0f), Y(110.0f), NULL, 0, 0);// 125.714294f
|
||
|
MCMenu.AddOption(TheText.Get("FEM_YES"), X(-30.0f), Y(110.0f), TriggerMCSUM_Yes, 0, 0);// 125.714294f
|
||
|
MCMenu.SetColors(TITLE_TEXT_COLOR, TEXT_COLOR, TEXT_COLOR);
|
||
|
page.AddMenu(&MCMenu);
|
||
|
|
||
|
MCMenu.GoFirst();
|
||
|
|
||
|
page.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
|
||
|
CTimer::Initialise();
|
||
|
CTimer::StartUserPause();
|
||
|
|
||
|
while ( !bMemoryCardStartUpMenus_ExitNow )
|
||
|
{
|
||
|
#ifdef GTA_PC
|
||
|
HandleExit();
|
||
|
|
||
|
if(RsGlobal.quit)
|
||
|
return;
|
||
|
#endif
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadLeftJustDown() )
|
||
|
page.GoLeft();
|
||
|
if ( CPad::GetPad(0)->GetDPadRightJustDown() )
|
||
|
page.GoRight();
|
||
|
if ( CPad::GetPad(0)->GetDPadUpJustDown() )
|
||
|
page.GoDown();
|
||
|
if ( CPad::GetPad(0)->GetDPadDownJustDown() )
|
||
|
page.GoUp();
|
||
|
if ( CPad::GetPad(0)->GetCrossJustDown() || CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetRightMouseJustDown() )
|
||
|
page.SelectCurrentOptionUnderCursor();
|
||
|
|
||
|
if ( CPad::GetPad(0)->GetCircleJustDown() || CPad::GetPad(0)->GetEscapeJustDown() )
|
||
|
;
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadLeftJustDown() )
|
||
|
page.GoLeft();
|
||
|
if ( CPad::GetPad(0)->GetDPadRightJustDown() )
|
||
|
page.GoRight();
|
||
|
if ( CPad::GetPad(0)->GetDPadUpJustDown() )
|
||
|
page.GoDown();
|
||
|
if ( CPad::GetPad(0)->GetDPadDownJustDown() )
|
||
|
page.GoUp();
|
||
|
if ( CPad::GetPad(0)->GetCrossJustDown() )
|
||
|
page.SelectCurrentOptionUnderCursor();
|
||
|
if ( CPad::GetPad(0)->GetCircleJustDown() )
|
||
|
;
|
||
|
#endif
|
||
|
|
||
|
static int32 MemCardStatusWaiter = 0;
|
||
|
|
||
|
MemCardStatusWaiter++;
|
||
|
|
||
|
if ( MemCardStatusWaiter > 120 )
|
||
|
{
|
||
|
MemCardStatusWaiter = 0;
|
||
|
|
||
|
switch ( TheMemoryCard.CheckCardStateAtGameStartUp(CARD_ONE) )
|
||
|
{
|
||
|
case CMemoryCard::MCSTATE_NEED_200KB:
|
||
|
{
|
||
|
// There is insufficient space on the Memory Card (PS2) in MEMORY CARD slot 1. At least 200KB is needed to save this application data. Do you wish to start? (YES or NO)
|
||
|
MCMenu.AddTitle(TheText.Get("MCGNSP"), 0.0f, 0.0f, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CMemoryCard::MCSTATE_NEED_500KB:
|
||
|
{
|
||
|
// There is insufficient space on the Memory Card (PS2) in MEMORY CARD slot 1. At least 500KB is needed to save this application data. Do you wish to start? (YES or NO)
|
||
|
MCMenu.AddTitle(TheText.Get("MCDNSP"), 0.0f, 0.0f, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CMemoryCard::MCSTATE_NOCARD:
|
||
|
{
|
||
|
// There is no Memory Card (PS2) in MEMORY CARD slot 1. Do you wish to start? (YES or NO)
|
||
|
MCMenu.AddTitle(TheText.Get("MCSTNS"), 0.0f, 0.0f, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case CMemoryCard::MCSTATE_OK:
|
||
|
{
|
||
|
bMemoryCardStartUpMenus_ExitNow = true;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255);
|
||
|
CFont::InitPerFrame();
|
||
|
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
CSprite2d *splash = LoadSplash("splash1");
|
||
|
splash->Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
|
||
|
|
||
|
SetRandomActiveTextlineColor(1);
|
||
|
|
||
|
CRGBA col(rgbaATC.r, rgbaATC.g, rgbaATC.b, 255);
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetBackgroundOff();
|
||
|
CFont::SetScale(X(MENU_TEXT_SIZE_X), Y(MENU_TEXT_SIZE_Y));
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(60.0f)); // 580.0f
|
||
|
CFont::SetCentreOn();
|
||
|
CFont::SetCentreSize(SCRW-X(120.0f)); // 520.0f
|
||
|
|
||
|
MCMenu.Draw(col, TITLE_TEXT_COLOR, 0.0f, 0.0f);
|
||
|
CFont::DrawFonts();
|
||
|
|
||
|
CFont::SetFontStyle(FONT_BANK);
|
||
|
CFont::SetScale(X(0.4f), Y(0.64f)); // 0.731429
|
||
|
CFont::SetPropOn();
|
||
|
CFont::SetCentreOff();
|
||
|
CFont::SetJustifyOn();
|
||
|
CFont::SetRightJustifyOff();
|
||
|
CFont::SetBackGroundOnlyTextOn();
|
||
|
CFont::SetWrapx(SCRW-X(60.0f)); // 580.0f
|
||
|
CFont::SetColor(TEXT_COLOR);
|
||
|
|
||
|
|
||
|
CPlaceableShText text;
|
||
|
text.SetPosition(X(240.0f), Y(378.0f), false); // 432.000000
|
||
|
text.SetColor(TEXT_COLOR);
|
||
|
text.m_text = TheText.Get("FEDS_SE"); // / button - SELECT
|
||
|
text.SetShadows(true, TEXT_SHADOW_COLOR, SHADOW_VECTOR);
|
||
|
text.Draw(0.0f, 0.0f);
|
||
|
|
||
|
CFont::DrawFonts();
|
||
|
DisplayWarningControllerMsg();
|
||
|
DoRWStuffEndOfFrame();
|
||
|
CPad::UpdatePads();
|
||
|
CTimer::Update();
|
||
|
}
|
||
|
|
||
|
CTimer::EndUserPause();
|
||
|
CTimer::Stop();
|
||
|
|
||
|
for ( int32 i = 0; i < 100; i++ )
|
||
|
{
|
||
|
#ifdef GTA_PC
|
||
|
HandleExit();
|
||
|
#endif
|
||
|
DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255);
|
||
|
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
|
||
|
CSprite2d *splash = LoadSplash("splash1");
|
||
|
splash->Draw(CRect(0.0f, 0.0f, SCRW, SCRH), BACKGROUND_SPLASH_COLOR);
|
||
|
RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERNEAREST);
|
||
|
|
||
|
DoRWStuffEndOfFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::Process(void)
|
||
|
{
|
||
|
if ( m_bSaveMenuActive || m_bInSaveZone || TheCamera.GetScreenFadeStatus() == FADE_0 )
|
||
|
{
|
||
|
InitialiseMenusOnce();
|
||
|
m_bWantToRestart = false;
|
||
|
WorkOutMenuState(false);
|
||
|
|
||
|
if ( m_bMenuActive )
|
||
|
{
|
||
|
if ( !m_bInSaveZone )
|
||
|
LoadAllTextures();
|
||
|
InitialiseMenuContents();
|
||
|
SetRandomActiveTextlineColor(0);
|
||
|
ProcessControllerInput();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
AnaliseMenuContents();
|
||
|
pMenuSave = &MenuPage_SaveBasic;
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
bMemoryCardSpecialZone = false;
|
||
|
bIgnoreTriangleButton = false;
|
||
|
UnloadTextures();
|
||
|
m_bInSaveZone = false;
|
||
|
m_bRenderGameInMenu = false;
|
||
|
gErrorSampleTriggered = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::WorkOutMenuState(uint8 bExit)
|
||
|
{
|
||
|
#ifdef GTA_PC
|
||
|
bool bIsStartPressed = CPad::GetPad(0)->GetStartJustDown() || (m_pageState == PAGESTATE_NORMAL && CPad::GetPad(0)->GetEscapeJustDown());
|
||
|
#else
|
||
|
bool bIsStartPressed = CPad::GetPad(0)->GetStartJustDown();
|
||
|
#endif
|
||
|
bool bIsCreditsOrDraw = CCredits::AreCreditsDone() || m_bMenuActive;
|
||
|
bool bIsDemoOrDraw = m_bMenuActive || CGame::bDemoMode;
|
||
|
|
||
|
if ( (bIsStartPressed && bIsCreditsOrDraw) || bExit || (!bIsDemoOrDraw && CPad::IsNoOrObsolete()) )
|
||
|
{
|
||
|
if ( m_nStartPauseTimer == 0 && m_nEndPauseTimer == 0 )
|
||
|
{
|
||
|
m_bMenuActive = !m_bMenuActive;
|
||
|
|
||
|
if ( !m_bMenuActive )
|
||
|
{
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_STARTING, 0);
|
||
|
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
|
||
|
gMusicPlaying = false;
|
||
|
bMemoryCardSpecialZone = false;
|
||
|
bIgnoreTriangleButton = false;
|
||
|
|
||
|
m_bMenuActive = true;
|
||
|
|
||
|
m_nEndPauseTimer = CTimer::GetTimeInMillisecondsPauseMode() + 800;
|
||
|
|
||
|
if ( m_currentPage == PAGE_CONTROLS || m_currentPage == PAGE_BRIEFS || m_currentPage == PAGE_LOAD )
|
||
|
{
|
||
|
m_nSlidingDir = CGeneral::GetRandomNumber() & (SLIDE_MAX-1);
|
||
|
|
||
|
switch ( m_nSlidingDir ) //m_nSlidingDir &= ~1;
|
||
|
{
|
||
|
case SLIDE_TO_LEFT: m_nSlidingDir = SLIDE_TO_TOP; break;
|
||
|
case SLIDE_TO_RIGHT: m_nSlidingDir = SLIDE_TO_BOTTOM; break;
|
||
|
}
|
||
|
|
||
|
m_position.y = Y(500.0f); // 571.428589f;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
|
||
|
|
||
|
if ( DMAudio.GetRadioInCar() < 9 )
|
||
|
m_PrefsRadioStation = DMAudio.GetRadioInCar();
|
||
|
else
|
||
|
m_PrefsRadioStation = CGeneral::GetRandomNumber() % 9;
|
||
|
|
||
|
CTimer::StartUserPause();
|
||
|
CPad::StopPadsShaking();
|
||
|
m_nStartPauseTimer = CTimer::GetTimeInMillisecondsPauseMode() + 800;
|
||
|
m_nSlidingDir = CGeneral::GetRandomNumber() & (SLIDE_MAX-1);
|
||
|
|
||
|
switch ( m_nSlidingDir )
|
||
|
{
|
||
|
case SLIDE_TO_RIGHT: m_position.y = Y(612.5f); break;
|
||
|
case SLIDE_TO_LEFT: m_position.y = Y(612.5f); break;
|
||
|
case SLIDE_TO_BOTTOM: m_position.y = Y(500.0f); break;
|
||
|
case SLIDE_TO_TOP: m_position.y = Y(500.0f); break;
|
||
|
default: m_position.y = Y(500.0f); break;
|
||
|
}
|
||
|
|
||
|
if ( m_currentPage == PAGE_CONTROLS || m_currentPage == PAGE_BRIEFS )
|
||
|
{
|
||
|
m_nSlidingDir = CGeneral::GetRandomNumber() & (SLIDE_MAX-1);
|
||
|
|
||
|
switch ( m_nSlidingDir ) //m_nSlidingDir &= ~1;
|
||
|
{
|
||
|
case SLIDE_TO_LEFT: m_nSlidingDir = SLIDE_TO_TOP; break;
|
||
|
case SLIDE_TO_RIGHT: m_nSlidingDir = SLIDE_TO_BOTTOM; break;
|
||
|
}
|
||
|
|
||
|
m_position.y = Y(500.0f); //571.428589f
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( m_bSaveMenuActive && !m_bInSaveZone && !TheMemoryCard._bunk2)
|
||
|
{
|
||
|
m_bSaveMenuActive = false;
|
||
|
m_bInSaveZone = true;
|
||
|
m_bRenderGameInMenu = true;
|
||
|
m_bMenuActive = true;
|
||
|
CTimer::StartUserPause();
|
||
|
pActiveMenuPage = &MenuPageSaveZone_SaveGame;
|
||
|
}
|
||
|
|
||
|
if ( m_pageState == PAGESTATE_NORMAL && gMusicPlaying )
|
||
|
{
|
||
|
DMAudio.StopFrontEndTrack();
|
||
|
gMusicPlaying = false;
|
||
|
}
|
||
|
|
||
|
if ( m_nChangePageTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() >= m_nChangePageTimer )
|
||
|
{
|
||
|
m_nChangePageTimer = 0;
|
||
|
pMenuSave = &MenuPage_SaveBasic;
|
||
|
m_currentPage = m_newPage;
|
||
|
}
|
||
|
|
||
|
if ( m_nPageLeftTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() >= m_nPageLeftTimer )
|
||
|
m_nPageLeftTimer = 0;
|
||
|
|
||
|
if ( m_nPageRightTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() >= m_nPageRightTimer )
|
||
|
m_nPageRightTimer = 0;
|
||
|
|
||
|
if ( m_nStartPauseTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() >= m_nStartPauseTimer )
|
||
|
m_nStartPauseTimer = 0;
|
||
|
|
||
|
if ( m_nEndPauseTimer != 0 && CTimer::GetTimeInMillisecondsPauseMode() >= m_nEndPauseTimer )
|
||
|
{
|
||
|
m_nEndPauseTimer = 0;
|
||
|
m_bMenuActive = false;
|
||
|
m_bMenuActive = false;
|
||
|
m_bInSaveZone = false;
|
||
|
CTimer::EndUserPause();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessControllerInput(void)
|
||
|
{
|
||
|
if ( TimeToStopPadShaking != 0 && TimeToStopPadShaking < CTimer::GetTimeInMillisecondsPauseMode() )
|
||
|
{
|
||
|
CPad::StopPadsShaking();
|
||
|
TimeToStopPadShaking = 0;
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadLeft() || CPad::GetPad(0)->GetLeft() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadLeft() )
|
||
|
#endif
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoLeftStill();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadRight() || CPad::GetPad(0)->GetRight() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadRight() )
|
||
|
#endif
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoRightStill();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadLeftJustDown() || CPad::GetPad(0)->GetLeftJustDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadLeftJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadLeftJustDown();
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadRightJustDown() || CPad::GetPad(0)->GetRightJustDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadRightJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadRightJustDown();
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadUp() || CPad::GetPad(0)->GetUp() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadUp() )
|
||
|
#endif
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
if ( m_currentPage == PAGE_STATS )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoUpStill();
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoUpStill();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadDown() || CPad::GetPad(0)->GetDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadDown() )
|
||
|
#endif
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
if ( m_currentPage == PAGE_STATS )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoDownStill();
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoDownStill();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadUpJustDown() || CPad::GetPad(0)->GetUpJustDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadUpJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadUpJustDown();
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetDPadDownJustDown() || CPad::GetPad(0)->GetDownJustDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetDPadDownJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadDownJustDown();
|
||
|
|
||
|
if ( CPad::GetPad(0)->GetLeftShoulder1JustDown() )
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
ProcessDPadLeftJustDown();
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
case PAGESTATE_SELECTED:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( CPad::GetPad(0)->GetRightShoulder1JustDown() )
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
ProcessDPadRightJustDown();
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
case PAGESTATE_SELECTED:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetCrossJustDown() || CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetRightMouseJustDown() )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetCrossJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadCrossJustDown();
|
||
|
|
||
|
#ifdef GTA_PC
|
||
|
if ( CPad::GetPad(0)->GetTriangleJustDown() || CPad::GetPad(0)->GetBackspaceJustDown() || (m_pageState != PAGESTATE_NORMAL && CPad::GetPad(0)->GetEscapeJustDown()) )
|
||
|
#else
|
||
|
if ( CPad::GetPad(0)->GetTriangleJustDown() )
|
||
|
#endif
|
||
|
ProcessDPadTriangleJustDown();
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadLeftJustDown(void)
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoLeft();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveZoneSSL_1 )
|
||
|
{
|
||
|
if ( MenuSaveZoneSSL_1.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
if ( !bMemoryCardSpecialZone && !m_bInSaveZone )
|
||
|
{
|
||
|
if ( m_nChangePageTimer == 0 )
|
||
|
{
|
||
|
if ( --m_newPage < PAGE_FIRST ) m_newPage = PAGE_LAST;
|
||
|
|
||
|
m_nPageLeftTimer = CTimer::GetTimeInMillisecondsPauseMode() + 300;
|
||
|
m_nPageRightTimer = 0;
|
||
|
m_nChangePageTimer = CTimer::GetTimeInMillisecondsPauseMode() + 250;
|
||
|
field_18 = m_newPage;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoLeftMenuOnPage();
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoLeft();
|
||
|
|
||
|
if ( m_currentPage == PAGE_AUDIO)
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_1 )
|
||
|
;
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( m_currentPage == PAGE_DISPLAY)
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuDisplay_1 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveDG_2 )
|
||
|
{
|
||
|
if ( MenuSaveDG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveLG_2 )
|
||
|
{
|
||
|
if ( MenuSaveLG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadRightJustDown(void)
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoRight();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveZoneSSL_1 )
|
||
|
{
|
||
|
if ( MenuSaveZoneSSL_1.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
if ( !bMemoryCardSpecialZone && !m_bInSaveZone )
|
||
|
{
|
||
|
if ( m_nChangePageTimer == 0 )
|
||
|
{
|
||
|
if ( ++m_newPage > PAGE_LAST ) m_newPage = PAGE_FIRST;
|
||
|
|
||
|
m_nPageLeftTimer = 0;
|
||
|
m_nPageRightTimer = CTimer::GetTimeInMillisecondsPauseMode() + 300;
|
||
|
m_nChangePageTimer = CTimer::GetTimeInMillisecondsPauseMode() + 250;
|
||
|
field_18 = m_newPage;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoRightMenuOnPage();
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoRight();
|
||
|
|
||
|
if ( m_currentPage == PAGE_AUDIO)
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_1 )
|
||
|
;
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( m_currentPage == PAGE_DISPLAY)
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuDisplay_1 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveDG_2 )
|
||
|
{
|
||
|
if ( MenuSaveDG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveLG_2 )
|
||
|
{
|
||
|
if ( MenuSaveLG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadUpJustDown(void)
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoUp();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveZoneSSL_1 )
|
||
|
{
|
||
|
if ( MenuSaveZoneSSL_1.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoUpMenuOnPage();
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoUp();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveDG_2 )
|
||
|
{
|
||
|
if ( MenuSaveDG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveLG_2 )
|
||
|
{
|
||
|
if ( MenuSaveLG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadDownJustDown(void)
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoDown();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveZoneSSL_1 )
|
||
|
{
|
||
|
if ( MenuSaveZoneSSL_1.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->GoDownMenuOnPage();
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->GoDown();
|
||
|
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveDG_2 )
|
||
|
{
|
||
|
if ( MenuSaveDG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveLG_2 )
|
||
|
{
|
||
|
if ( MenuSaveLG_2.m_numOptions < 2 )
|
||
|
;
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_DENIED, 0);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadTriangleJustDown(void)
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->SelectDefaultCancelAction();
|
||
|
|
||
|
if ( m_bMenuActive || m_bInSaveZone )
|
||
|
{
|
||
|
if ( bIgnoreTriangleButton )
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_EXIT, 0);
|
||
|
else if ( pActiveMenuPage->m_pCurrentControl == &MenuSaveDG_2 || pActiveMenuPage->m_pCurrentControl == &MenuSaveLG_2 )
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_EXIT, 0);
|
||
|
}
|
||
|
else if ( !bIgnoreTriangleButton )
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
WorkOutMenuState(true);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_numControls == 1 )
|
||
|
{
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_EXIT, 0);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( !bIgnoreTriangleButton )
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
WorkOutMenuState(false);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
break;
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_numControls == 1 )
|
||
|
{
|
||
|
m_pageState = PAGESTATE_NORMAL;
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_COMPLETED, 0);
|
||
|
}
|
||
|
else
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_EXIT, 0);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::ProcessDPadCrossJustDown(void)
|
||
|
{
|
||
|
if ( m_bInSaveZone )
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
pActiveMenuPage->SelectCurrentOptionUnderCursor();
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if ( m_currentPage != PAGE_STATS && m_currentPage != PAGE_BRIEFS)
|
||
|
{
|
||
|
switch ( m_pageState )
|
||
|
{
|
||
|
case PAGESTATE_NORMAL:
|
||
|
{
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_numControls == 1 )
|
||
|
m_pageState = PAGESTATE_SELECTED;
|
||
|
}
|
||
|
|
||
|
switch ( m_currentPage )
|
||
|
{
|
||
|
case PAGE_AUDIO:
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_1
|
||
|
|| pActiveMenuPage->m_pCurrentControl == &MenuAudio_2
|
||
|
|| pActiveMenuPage->m_pCurrentControl == &MenuAudio_3
|
||
|
|| pActiveMenuPage->m_pCurrentControl == &MenuAudio_4 )
|
||
|
{
|
||
|
if ( !gMusicPlaying )
|
||
|
{
|
||
|
DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1);
|
||
|
gMusicPlaying = true;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
DMAudio.StopFrontEndTrack();
|
||
|
gMusicPlaying = false;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_HIGHLIGHTED:
|
||
|
{
|
||
|
m_pageState = PAGESTATE_SELECTED;
|
||
|
DoHackingMenusAtPageBrowse();
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
if ( pActiveMenuPage->IsActiveMenuTwoState())
|
||
|
{
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
pActiveMenuPage->ActiveMenuTwoState_SelectNextPosition();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
switch ( m_currentPage )
|
||
|
{
|
||
|
case PAGE_AUDIO:
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl != &MenuAudio_4 )
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
default:
|
||
|
{
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||
|
DMAudio.StopFrontEndTrack();
|
||
|
gMusicPlaying = false;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGESTATE_SELECTED:
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
pActiveMenuPage->SelectCurrentOptionUnderCursor();
|
||
|
|
||
|
switch ( m_currentPage )
|
||
|
{
|
||
|
case PAGE_AUDIO:
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl != &MenuAudio_3 )
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGE_LOAD:
|
||
|
case PAGE_LANGUAGE:
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
m_pageState = PAGESTATE_HIGHLIGHTED;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SUCCESS, 0);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::DoHackingMenusAtPageBrowse(void)
|
||
|
{
|
||
|
if ( pActiveMenuPage )
|
||
|
{
|
||
|
switch ( m_currentPage )
|
||
|
{
|
||
|
case PAGE_CONTROLS:
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuControls_1 )
|
||
|
{
|
||
|
int32 sel = MenuControls_1.GetMenuSelection();
|
||
|
MenuControls_1.GoFirst();
|
||
|
|
||
|
for ( int32 i = 0; i < sel; i++ )
|
||
|
MenuControls_1.GoNext();
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case PAGE_AUDIO:
|
||
|
{
|
||
|
if ( pActiveMenuPage->m_pCurrentControl == &MenuAudio_3 )
|
||
|
{
|
||
|
int32 sel = MenuAudio_3.GetMenuSelection();
|
||
|
MenuAudio_3.GoFirst();
|
||
|
|
||
|
for ( int32 i = 0; i < sel; i++ )
|
||
|
MenuAudio_3.GoNext();
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::SetSoundLevelsForMusicMenu(void)
|
||
|
{
|
||
|
DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume);
|
||
|
DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CMenuManager::FilterOutColorMarkersFromString(wchar *string, CRGBA &color)
|
||
|
{
|
||
|
wchar buf[300];
|
||
|
UnicodeStrcpy(buf, string);
|
||
|
|
||
|
wchar *src = buf;
|
||
|
wchar *dst = string;
|
||
|
while ( *src != '\0' )
|
||
|
{
|
||
|
if ( *src == '~' )
|
||
|
{
|
||
|
src++;
|
||
|
|
||
|
if ( *src == 'l' ) color = CRGBA(0, 0, 0, 255);
|
||
|
else if ( *src == 'p' ) color = CRGBA(255, 0, 255, 255);
|
||
|
else if ( *src == 'y' ) color = CRGBA(255, 255, 0, 255);
|
||
|
else if ( *src == 'w' ) color = CRGBA(255, 255, 255, 255);
|
||
|
else if ( *src == 'b' ) color = CRGBA(40, 40, 255, 255);
|
||
|
else if ( *src == 'g' ) color = CRGBA(40, 235, 40, 255);
|
||
|
else if ( *src == 'r' ) color = CRGBA(255, 0, 0, 255);
|
||
|
|
||
|
while ( *src++ != '~' )
|
||
|
;
|
||
|
}
|
||
|
else
|
||
|
*dst++ = *src++;
|
||
|
}
|
||
|
|
||
|
*dst = '\0';
|
||
|
}
|
||
|
|
||
|
#endif
|