Merge pull request #809 from erorcun/master

Fix build without CFO, NO_ISLAND_LOADING, save postfx/pipeline mults
This commit is contained in:
erorcun 2020-11-07 23:51:07 +03:00 committed by GitHub
commit c96ffb05b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 125 additions and 180 deletions

View File

@ -122,7 +122,6 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0;
#endif #endif
#ifdef NO_ISLAND_LOADING #ifdef NO_ISLAND_LOADING
int8 CMenuManager::m_DisplayIslandLoading = ISLAND_LOADING_LOW;
int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW; int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW;
#endif #endif
@ -1236,21 +1235,6 @@ CMenuManager::Draw()
AsciiToUnicode(_psGetVideoModeList()[m_nDisplayVideoMode], unicodeTemp); AsciiToUnicode(_psGetVideoModeList()[m_nDisplayVideoMode], unicodeTemp);
rightText = unicodeTemp; rightText = unicodeTemp;
break; break;
//#ifdef NO_ISLAND_LOADING
// case MENUACTION_ISLANDLOADING:
// switch (m_DisplayIslandLoading) {
// case ISLAND_LOADING_LOW:
// rightText = TheText.Get("FEM_LOW");
// break;
// case ISLAND_LOADING_MEDIUM:
// rightText = TheText.Get("FEM_MED");
// break;
// case ISLAND_LOADING_HIGH:
// rightText = TheText.Get("FEM_HIG");
// break;
// }
// break;
//#endif
case MENUACTION_AUDIOHW: case MENUACTION_AUDIOHW:
if (m_nPrefsAudio3DProviderIndex == -1) if (m_nPrefsAudio3DProviderIndex == -1)
rightText = TheText.Get("FEA_NAH"); rightText = TheText.Get("FEA_NAH");
@ -1430,12 +1414,6 @@ CMenuManager::Draw()
if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FED_RES") && m_nHelperTextMsgId == 1) if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FED_RES") && m_nHelperTextMsgId == 1)
ResetHelperText(); ResetHelperText();
} }
//#ifdef NO_ISLAND_LOADING
// if (m_DisplayIslandLoading == m_PrefsIslandLoading) {
// if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEM_ISL") && m_nHelperTextMsgId == 1)
// ResetHelperText();
// }
//#endif
if (m_nPrefsAudio3DProviderIndex != DMAudio.GetCurrent3DProviderIndex()) { if (m_nPrefsAudio3DProviderIndex != DMAudio.GetCurrent3DProviderIndex()) {
if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEA_3DH")) if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEA_3DH"))
SetHelperText(1); SetHelperText(1);
@ -1444,12 +1422,6 @@ CMenuManager::Draw()
if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FED_RES")) if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FED_RES"))
SetHelperText(1); SetHelperText(1);
} }
//#ifdef NO_ISLAND_LOADING
// if (m_DisplayIslandLoading != m_PrefsIslandLoading) {
// if (!strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEM_ISL"))
// SetHelperText(1);
// }
//#endif
if (m_nPrefsAudio3DProviderIndex != DMAudio.GetCurrent3DProviderIndex()) { if (m_nPrefsAudio3DProviderIndex != DMAudio.GetCurrent3DProviderIndex()) {
if (strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEA_3DH") != 0 if (strcmp(aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_EntryName, "FEA_3DH") != 0
// To make assigning built-in actions to new custom options possible. // To make assigning built-in actions to new custom options possible.
@ -4822,45 +4794,6 @@ CMenuManager::ProcessButtonPresses(void)
SaveSettings(); SaveSettings();
} }
break; break;
//#ifdef NO_ISLAND_LOADING
// case MENUACTION_ISLANDLOADING:
// if (m_DisplayIslandLoading != m_PrefsIslandLoading) {
// if (!m_bGameNotLoaded) {
// if (m_DisplayIslandLoading > ISLAND_LOADING_LOW) {
// if (m_DisplayIslandLoading == ISLAND_LOADING_HIGH)
// CStreaming::RemoveIslandsNotUsed(LEVEL_GENERIC);
// if (m_PrefsIslandLoading == ISLAND_LOADING_LOW) {
// if (CGame::currLevel != LEVEL_INDUSTRIAL)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_INDUSTRIAL);
// if (CGame::currLevel != LEVEL_COMMERCIAL)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_COMMERCIAL);
// if (CGame::currLevel != LEVEL_SUBURBAN)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_SUBURBAN);
// CCollision::bAlreadyLoaded = true;
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CStreaming::RequestBigBuildings(CGame::currLevel);
// } else if (m_PrefsIslandLoading == ISLAND_LOADING_HIGH) {
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CStreaming::RequestIslands(CGame::currLevel);
// } else
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// } else { // low
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CCollision::bAlreadyLoaded = false;
// CModelInfo::RemoveColModelsFromOtherLevels(CGame::currLevel);
// CStreaming::RemoveUnusedBigBuildings(CGame::currLevel);
// CStreaming::RemoveUnusedBuildings(CGame::currLevel);
// CStreaming::RequestIslands(CGame::currLevel);
// }
//
// CStreaming::LoadAllRequestedModels(true);
// } else
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// SetHelperText(0);
// SaveSettings();
// }
// break;
//#endif
case MENUACTION_AUDIOHW: case MENUACTION_AUDIOHW:
{ {
int selectedProvider = m_nPrefsAudio3DProviderIndex; int selectedProvider = m_nPrefsAudio3DProviderIndex;
@ -4935,40 +4868,6 @@ CMenuManager::ProcessButtonPresses(void)
RestoreDefGraphics(FEOPTION_ACTION_SELECT); RestoreDefGraphics(FEOPTION_ACTION_SELECT);
RestoreDefDisplay(FEOPTION_ACTION_SELECT); RestoreDefDisplay(FEOPTION_ACTION_SELECT);
#endif #endif
//#ifdef NO_ISLAND_LOADING
// m_DisplayIslandLoading = ISLAND_LOADING_LOW;
// if (!m_bGameNotLoaded) {
// if (m_DisplayIslandLoading > ISLAND_LOADING_LOW) {
// if (m_DisplayIslandLoading == ISLAND_LOADING_HIGH)
// CStreaming::RemoveIslandsNotUsed(LEVEL_GENERIC);
// if (m_PrefsIslandLoading == ISLAND_LOADING_LOW) {
// if (CGame::currLevel != LEVEL_INDUSTRIAL)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_INDUSTRIAL);
// if (CGame::currLevel != LEVEL_COMMERCIAL)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_COMMERCIAL);
// if (CGame::currLevel != LEVEL_SUBURBAN)
// CFileLoader::LoadCollisionFromDatFile(LEVEL_SUBURBAN);
// CCollision::bAlreadyLoaded = true;
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CStreaming::RequestBigBuildings(CGame::currLevel);
// } else if (m_PrefsIslandLoading == ISLAND_LOADING_HIGH) {
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CStreaming::RequestIslands(CGame::currLevel);
// } else
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// } else { // low
// m_PrefsIslandLoading = m_DisplayIslandLoading;
// CCollision::bAlreadyLoaded = false;
// CModelInfo::RemoveColModelsFromOtherLevels(CGame::currLevel);
// CStreaming::RemoveUnusedBigBuildings(CGame::currLevel);
// CStreaming::RemoveUnusedBuildings(CGame::currLevel);
// CStreaming::RequestIslands(CGame::currLevel);
// }
//
// CStreaming::LoadAllRequestedModels(true);
// } else
// m_PrefsIslandLoading = m_DisplayIslandLoading;
//#endif // NO_ISLAND_LOADING
SaveSettings(); SaveSettings();
} else if ((m_nCurrScreen != MENUPAGE_SKIN_SELECT_OLD) && (m_nCurrScreen == MENUPAGE_CONTROLLER_PC)) { } else if ((m_nCurrScreen != MENUPAGE_SKIN_SELECT_OLD) && (m_nCurrScreen == MENUPAGE_CONTROLLER_PC)) {
ControlsManager.MakeControllerActionsBlank(); ControlsManager.MakeControllerActionsBlank();
@ -5228,15 +5127,6 @@ CMenuManager::ProcessButtonPresses(void)
} }
} }
break; break;
//#ifdef NO_ISLAND_LOADING
// case MENUACTION_ISLANDLOADING:
// m_DisplayIslandLoading += changeValueBy;
// if (m_DisplayIslandLoading > ISLAND_LOADING_HIGH)
// m_DisplayIslandLoading = ISLAND_LOADING_LOW;
// else if (m_DisplayIslandLoading < ISLAND_LOADING_LOW)
// m_DisplayIslandLoading = ISLAND_LOADING_HIGH;
// break;
//#endif
case MENUACTION_AUDIOHW: case MENUACTION_AUDIOHW:
if (m_nPrefsAudio3DProviderIndex != -1) { if (m_nPrefsAudio3DProviderIndex != -1) {
m_nPrefsAudio3DProviderIndex += changeValueBy; m_nPrefsAudio3DProviderIndex += changeValueBy;

View File

@ -235,11 +235,11 @@ enum eMenuScreen
MENUPAGE_KEYBOARD_CONTROLS = 55, MENUPAGE_KEYBOARD_CONTROLS = 55,
MENUPAGE_MOUSE_CONTROLS = 56, MENUPAGE_MOUSE_CONTROLS = 56,
MENUPAGE_MISSION_RETRY = 57, MENUPAGE_MISSION_RETRY = 57,
#ifdef MENU_MAP
MENUPAGE_MAP = 58,
#endif
#ifdef CUSTOM_FRONTEND_OPTIONS #ifdef CUSTOM_FRONTEND_OPTIONS
#ifdef MENU_MAP
MENUPAGE_MAP,
#endif
#ifdef GRAPHICS_MENU_OPTIONS #ifdef GRAPHICS_MENU_OPTIONS
MENUPAGE_GRAPHICS_SETTINGS, MENUPAGE_GRAPHICS_SETTINGS,
#else #else
@ -380,9 +380,6 @@ enum eMenuAction
// MENUACTION_MIPMAPS, // MENUACTION_MIPMAPS,
// MENUACTION_TEXTURE_FILTERING, // MENUACTION_TEXTURE_FILTERING,
//#endif //#endif
//#ifdef NO_ISLAND_LOADING
// MENUACTION_ISLANDLOADING,
//#endif
}; };
enum eCheckHover enum eCheckHover
@ -718,7 +715,6 @@ public:
ISLAND_LOADING_HIGH ISLAND_LOADING_HIGH
}; };
static int8 m_DisplayIslandLoading;
static int8 m_PrefsIslandLoading; static int8 m_PrefsIslandLoading;
#define ISLAND_LOADING_IS(p) if (CMenuManager::m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_##p) #define ISLAND_LOADING_IS(p) if (CMenuManager::m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_##p)

View File

@ -203,20 +203,6 @@ static const char* FrontendFilenames[][2] =
{"fe_radio9", "" }, {"fe_radio9", "" },
}; };
#ifdef CUTSCENE_BORDERS_SWITCH
bool CMenuManager::m_PrefsCutsceneBorders = true;
#endif
#ifdef MULTISAMPLING
int8 CMenuManager::m_nPrefsMSAALevel = 0;
int8 CMenuManager::m_nDisplayMSAALevel = 0;
#endif
#ifdef NO_ISLAND_LOADING
int8 CMenuManager::m_DisplayIslandLoading = ISLAND_LOADING_LOW;
int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW;
#endif
int32 CMenuManager::m_PrefsSfxVolume = 102; int32 CMenuManager::m_PrefsSfxVolume = 102;
int32 CMenuManager::m_PrefsMusicVolume = 102; int32 CMenuManager::m_PrefsMusicVolume = 102;
int32 CMenuManager::m_PrefsBrightness = 256; int32 CMenuManager::m_PrefsBrightness = 256;

View File

@ -160,31 +160,9 @@ public:
static int32 m_PrefsLanguage; static int32 m_PrefsLanguage;
static CONTRCONFIG m_PrefsControllerConfig; static CONTRCONFIG m_PrefsControllerConfig;
static bool m_PrefsUseVibration; static bool m_PrefsUseVibration;
#ifdef NO_ISLAND_LOADING
enum
{
ISLAND_LOADING_LOW = 0,
ISLAND_LOADING_MEDIUM,
ISLAND_LOADING_HIGH
};
static int8 m_DisplayIslandLoading;
static int8 m_PrefsIslandLoading;
#define ISLAND_LOADING_IS(p) if (CMenuManager::m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_##p)
#define ISLAND_LOADING_ISNT(p) if (CMenuManager::m_PrefsIslandLoading != CMenuManager::ISLAND_LOADING_##p)
#else
#define ISLAND_LOADING_IS(p) #define ISLAND_LOADING_IS(p)
#define ISLAND_LOADING_ISNT(p) #define ISLAND_LOADING_ISNT(p)
#endif
#ifdef CUTSCENE_BORDERS_SWITCH
static bool m_PrefsCutsceneBorders;
#endif
#ifdef MULTISAMPLING
static int8 m_nPrefsMSAALevel;
static int8 m_nDisplayMSAALevel;
#endif
#ifdef GTA_PC #ifdef GTA_PC
bool m_bQuitGameNoCD; bool m_bQuitGameNoCD;

View File

@ -392,6 +392,9 @@ CMenuScreen aScreens[MENUPAGES] = {
{ "FET_PAU", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, { "FET_PAU", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0,
MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE,
MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME,
#ifdef MENU_MAP
MENUACTION_CHANGEMENU, "FEG_MAP", SAVESLOT_NONE, MENUPAGE_MAP,
#endif
MENUACTION_CHANGEMENU, "FEP_STA", SAVESLOT_NONE, MENUPAGE_STATS, MENUACTION_CHANGEMENU, "FEP_STA", SAVESLOT_NONE, MENUPAGE_STATS,
MENUACTION_CHANGEMENU, "FEP_BRI", SAVESLOT_NONE, MENUPAGE_BRIEFS, MENUACTION_CHANGEMENU, "FEP_BRI", SAVESLOT_NONE, MENUPAGE_BRIEFS,
MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS, MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS,
@ -436,6 +439,14 @@ CMenuScreen aScreens[MENUPAGES] = {
}, },
#endif #endif
#ifdef MENU_MAP
// MENUPAGE_MAP
{ "FEG_MAP", 1, MENUPAGE_NONE, MENUPAGE_NONE, 2, 2,
MENUACTION_UNK110, "", SAVESLOT_NONE, MENUPAGE_NONE, // to prevent cross/enter to go back
MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE,
},
#endif
// MENUPAGE_UNK // MENUPAGE_UNK
{ "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0, { "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0,

View File

@ -11,6 +11,10 @@
#include "custompipes.h" #include "custompipes.h"
#include "RwHelper.h" #include "RwHelper.h"
#include "Text.h" #include "Text.h"
#include "Streaming.h"
#include "FileLoader.h"
#include "Collision.h"
#include "ModelInfo.h"
// Menu screens array is at the bottom of the file. // Menu screens array is at the bottom of the file.
@ -48,6 +52,12 @@
#define DUALPASS_SELECTOR #define DUALPASS_SELECTOR
#endif #endif
#ifdef NO_ISLAND_LOADING
#define ISLAND_LOADING_SELECTOR MENUACTION_CFO_SELECT, "FEM_ISL", { new CCFOSelect((int8*)&CMenuManager::m_PrefsIslandLoading, "IslandLoading", islandLoadingOpts, ARRAY_SIZE(islandLoadingOpts), true, IslandLoadingAfterChange) },
#else
#define ISLAND_LOADING_SELECTOR
#endif
#ifdef EXTENDED_COLOURFILTER #ifdef EXTENDED_COLOURFILTER
#define POSTFX_SELECTORS \ #define POSTFX_SELECTORS \
MENUACTION_CFO_SELECT, "FED_CLF", { new CCFOSelect((int8*)&CPostFX::EffectSwitch, "ColourFilter", filterNames, ARRAY_SIZE(filterNames), false, nil) }, \ MENUACTION_CFO_SELECT, "FED_CLF", { new CCFOSelect((int8*)&CPostFX::EffectSwitch, "ColourFilter", filterNames, ARRAY_SIZE(filterNames), false, nil) }, \
@ -80,6 +90,18 @@ void RestoreDefGraphics(int8 action) {
#ifdef MULTISAMPLING #ifdef MULTISAMPLING
FrontEndMenuManager.m_nPrefsMSAALevel = FrontEndMenuManager.m_nDisplayMSAALevel = 0; FrontEndMenuManager.m_nPrefsMSAALevel = FrontEndMenuManager.m_nDisplayMSAALevel = 0;
#endif #endif
#ifdef NO_ISLAND_LOADING
if (FrontEndMenuManager.m_bGameNotLoaded) {
FrontEndMenuManager.m_PrefsIslandLoading = FrontEndMenuManager.ISLAND_LOADING_LOW;
CCollision::bAlreadyLoaded = false;
CModelInfo::RemoveColModelsFromOtherLevels(CGame::currLevel);
CStreaming::RemoveUnusedBigBuildings(CGame::currLevel);
CStreaming::RemoveUnusedBuildings(CGame::currLevel);
CStreaming::RequestIslands(CGame::currLevel);
CStreaming::LoadAllRequestedModels(true);
} else
FrontEndMenuManager.m_PrefsIslandLoading = FrontEndMenuManager.ISLAND_LOADING_LOW;
#endif
#ifdef GRAPHICS_MENU_OPTIONS // otherwise Frontend will handle those #ifdef GRAPHICS_MENU_OPTIONS // otherwise Frontend will handle those
CMenuManager::m_PrefsFrameLimiter = true; CMenuManager::m_PrefsFrameLimiter = true;
CMenuManager::m_PrefsVsyncDisp = true; CMenuManager::m_PrefsVsyncDisp = true;
@ -120,6 +142,47 @@ void RestoreDefDisplay(int8 action) {
#endif #endif
} }
#ifdef NO_ISLAND_LOADING
const char *islandLoadingOpts[] = { "FEM_LOW", "FEM_MED", "FEM_HIG" };
void IslandLoadingAfterChange(int8 before, int8 after) {
if (!FrontEndMenuManager.m_bGameNotLoaded) {
if (after > FrontEndMenuManager.ISLAND_LOADING_LOW) {
FrontEndMenuManager.m_PrefsIslandLoading = before; // calls below needs previous mode :shrug:
if (after == FrontEndMenuManager.ISLAND_LOADING_HIGH)
CStreaming::RemoveIslandsNotUsed(LEVEL_GENERIC);
if (before == FrontEndMenuManager.ISLAND_LOADING_LOW) {
if (CGame::currLevel != LEVEL_INDUSTRIAL)
CFileLoader::LoadCollisionFromDatFile(LEVEL_INDUSTRIAL);
if (CGame::currLevel != LEVEL_COMMERCIAL)
CFileLoader::LoadCollisionFromDatFile(LEVEL_COMMERCIAL);
if (CGame::currLevel != LEVEL_SUBURBAN)
CFileLoader::LoadCollisionFromDatFile(LEVEL_SUBURBAN);
CCollision::bAlreadyLoaded = true;
FrontEndMenuManager.m_PrefsIslandLoading = after;
CStreaming::RequestBigBuildings(CGame::currLevel);
} else if (before == FrontEndMenuManager.ISLAND_LOADING_HIGH) {
FrontEndMenuManager.m_PrefsIslandLoading = after;
CStreaming::RequestIslands(CGame::currLevel);
} else
FrontEndMenuManager.m_PrefsIslandLoading = after;
} else { // low
CCollision::bAlreadyLoaded = false;
CModelInfo::RemoveColModelsFromOtherLevels(CGame::currLevel);
CStreaming::RemoveUnusedBigBuildings(CGame::currLevel);
CStreaming::RemoveUnusedBuildings(CGame::currLevel);
CStreaming::RequestIslands(CGame::currLevel);
}
CStreaming::LoadAllRequestedModels(true);
}
FrontEndMenuManager.SetHelperText(0);
}
#endif
#ifdef MORE_LANGUAGES #ifdef MORE_LANGUAGES
void LangPolSelect(int8 action) void LangPolSelect(int8 action)
{ {
@ -761,6 +824,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = {
#ifdef EXTENDED_PIPELINES #ifdef EXTENDED_PIPELINES
PIPELINES_SELECTOR PIPELINES_SELECTOR
#endif #endif
ISLAND_LOADING_SELECTOR
DUALPASS_SELECTOR DUALPASS_SELECTOR
MENUACTION_CFO_DYNAMIC, "FET_DEF", { new CCFODynamic(nil, nil, nil, RestoreDefGraphics) }, MENUACTION_CFO_DYNAMIC, "FET_DEF", { new CCFODynamic(nil, nil, nil, RestoreDefGraphics) },
MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE },
@ -770,6 +834,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = {
{ "FET_ADV", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, { "FET_ADV", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS,
new CCustomScreenLayout({MENUSPRITE_MAINMENU, 50, 0, 20, FONT_HEADING, FESCREEN_LEFT_ALIGN, true, MEDIUMTEXT_X_SCALE, MEDIUMTEXT_Y_SCALE}), nil, new CCustomScreenLayout({MENUSPRITE_MAINMENU, 50, 0, 20, FONT_HEADING, FESCREEN_LEFT_ALIGN, true, MEDIUMTEXT_X_SCALE, MEDIUMTEXT_Y_SCALE}), nil,
ISLAND_LOADING_SELECTOR
DUALPASS_SELECTOR DUALPASS_SELECTOR
CUTSCENE_BORDERS_TOGGLE CUTSCENE_BORDERS_TOGGLE
FREE_CAM_TOGGLE FREE_CAM_TOGGLE

View File

@ -212,10 +212,10 @@ enum Config {
# define TIMEBARS // print debug timers # define TIMEBARS // print debug timers
#endif #endif
#define FIX_BUGS // fixes bugs that we've came across during reversing, TODO: use this more #define FIX_BUGS // fixes bugs that we've came across during reversing
#define MORE_LANGUAGES // Add more translations to the game #define MORE_LANGUAGES // Add more translations to the game
#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible #define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible
#define LOAD_INI_SETTINGS #define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS
// Rendering/display // Rendering/display
//#define EXTRA_MODEL_FLAGS // from mobile to optimize rendering //#define EXTRA_MODEL_FLAGS // from mobile to optimize rendering
@ -227,19 +227,11 @@ enum Config {
#define PS2_ALPHA_TEST // emulate ps2 alpha test #define PS2_ALPHA_TEST // emulate ps2 alpha test
#define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number #define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time #define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
#define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
//#define USE_TEXTURE_POOL //#define USE_TEXTURE_POOL
#define CUTSCENE_BORDERS_SWITCH
#ifdef LIBRW #ifdef LIBRW
//#define EXTENDED_COLOURFILTER // more options for colour filter (replaces mblur) //#define EXTENDED_COLOURFILTER // more options for colour filter (replaces mblur)
//#define EXTENDED_PIPELINES // custom render pipelines (includes Neo) //#define EXTENDED_PIPELINES // custom render pipelines (includes Neo)
#endif #endif
#define MULTISAMPLING // adds MSAA option
#ifdef LIBRW
// these are not supported with librw yet
# undef MULTISAMPLING
#endif
// Particle // Particle
//#define PC_PARTICLE //#define PC_PARTICLE
@ -277,7 +269,13 @@ enum Config {
//# define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc. //# define PS2_LIKE_MENU // An effort to recreate PS2 menu, cycling through tabs, different bg etc.
//# define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box //# define PS2_SAVE_DIALOG // PS2 style save dialog with transparent black box
# define CUSTOM_FRONTEND_OPTIONS # define CUSTOM_FRONTEND_OPTIONS
# define GRAPHICS_MENU_OPTIONS // otherwise Advanced Options menu will appear if Display is full
# ifdef CUSTOM_FRONTEND_OPTIONS
# define GRAPHICS_MENU_OPTIONS // otherwise Advanced Options menu will appear if Display is full
# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
# define CUTSCENE_BORDERS_SWITCH
# define MULTISAMPLING // adds MSAA option
# endif
#endif #endif
// Script // Script
@ -336,3 +334,8 @@ enum Config {
#define PC_PARTICLE #define PC_PARTICLE
#define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial #define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial
#endif #endif
#ifdef LIBRW
// these are not supported with librw yet
# undef MULTISAMPLING
#endif

View File

@ -102,6 +102,26 @@ float CheckAndReadIniFloat(const char *cat, const char *key, float original)
return original; return original;
} }
void CheckAndSaveIniInt(const char *cat, const char *key, int val, bool &changed)
{
char temp[10];
if (atoi(cfg.get(cat, key, "xxx").c_str()) != val) { // if .ini doesn't have our key, compare with xxx and forcefully add it
changed = true;
sprintf(temp, "%u", val);
cfg.set(cat, key, temp);
}
}
void CheckAndSaveIniFloat(const char *cat, const char *key, float val, bool &changed)
{
char temp[10];
if (atof(cfg.get(cat, key, "xxx").c_str()) != val) { // if .ini doesn't have our key, compare with xxx and forcefully add it
changed = true;
sprintf(temp, "%f", val);
cfg.set(cat, key, temp);
}
}
void LoadINISettings() void LoadINISettings()
{ {
cfg.load_file("re3.ini"); cfg.load_file("re3.ini");
@ -156,11 +176,6 @@ void LoadINISettings()
} }
#endif #endif
#ifdef NO_ISLAND_LOADING
CMenuManager::m_PrefsIslandLoading = CheckAndReadIniInt("FrontendOptions", "NoIslandLoading", CMenuManager::m_PrefsIslandLoading);
CMenuManager::m_DisplayIslandLoading = CMenuManager::m_PrefsIslandLoading;
#endif
#ifdef EXTENDED_COLOURFILTER #ifdef EXTENDED_COLOURFILTER
CPostFX::Intensity = CheckAndReadIniFloat("CustomPipesValues", "PostFXIntensity", CPostFX::Intensity); CPostFX::Intensity = CheckAndReadIniFloat("CustomPipesValues", "PostFXIntensity", CPostFX::Intensity);
#endif #endif
@ -192,21 +207,22 @@ void SaveINISettings()
break; break;
if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) { if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) {
if (atoi(cfg.get("FrontendOptions", option.m_CFO->save, "xxx").c_str()) != *option.m_CFO->value) { // if .ini doesn't have that key compare with xxx, so we can add it // Beware: CFO only supports saving uint8 right now
changed = true; CheckAndSaveIniInt("FrontendOptions", option.m_CFO->save, *option.m_CFO->value, changed);
sprintf(temp, "%u", *option.m_CFO->value);
cfg.set("FrontendOptions", option.m_CFO->save, temp);
}
} }
} }
} }
#endif #endif
#ifdef NO_ISLAND_LOADING
if (atoi(cfg.get("FrontendOptions", "NoIslandLoading", "xxx").c_str()) != CMenuManager::m_PrefsIslandLoading) { #ifdef EXTENDED_COLOURFILTER
changed = true; CheckAndSaveIniFloat("CustomPipesValues", "PostFXIntensity", CPostFX::Intensity, changed);
sprintf(temp, "%u", CMenuManager::m_PrefsIslandLoading); #endif
cfg.set("FrontendOptions", "NoIslandLoading", temp); #ifdef EXTENDED_PIPELINES
} CheckAndSaveIniFloat("CustomPipesValues", "NeoVehicleShininess", CustomPipes::VehicleShininess, changed);
CheckAndSaveIniFloat("CustomPipesValues", "NeoVehicleSpecularity", CustomPipes::VehicleSpecularity, changed);
CheckAndSaveIniFloat("CustomPipesValues", "RimlightMult", CustomPipes::RimlightMult, changed);
CheckAndSaveIniFloat("CustomPipesValues", "LightmapMult", CustomPipes::LightmapMult, changed);
CheckAndSaveIniFloat("CustomPipesValues", "GlossMult", CustomPipes::GlossMult, changed);
#endif #endif
if (changed) if (changed)