mirror of
https://github.com/halpz/re3.git
synced 2025-06-30 04:36:18 +00:00
Screen mode selector and persistent map target fix
This commit is contained in:
@ -49,7 +49,13 @@ static RwInt32 GcurSel = 0, GcurSelVM = 0;
|
||||
|
||||
static RwBool useDefault;
|
||||
|
||||
// What is that for anyway?
|
||||
#ifndef IMPROVED_VIDEOMODE
|
||||
static RwBool defaultFullscreenRes = TRUE;
|
||||
#else
|
||||
static RwBool defaultFullscreenRes = FALSE;
|
||||
static RwInt32 bestWndMode = -1;
|
||||
#endif
|
||||
|
||||
static psGlobalType PsGlobal;
|
||||
|
||||
@ -421,11 +427,7 @@ RwChar **_psGetVideoModeList()
|
||||
_VMList[i] = nil;
|
||||
}
|
||||
else
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
_VMList[i] = strdup("WINDOW");
|
||||
#else
|
||||
_VMList[i] = nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
return _VMList;
|
||||
@ -440,7 +442,7 @@ void _psSelectScreenVM(RwInt32 videoMode)
|
||||
|
||||
FrontEndMenuManager.UnloadTextures();
|
||||
|
||||
if ( !_psSetVideoMode(RwEngineGetCurrentSubSystem(), videoMode) )
|
||||
if (!_psSetVideoMode(RwEngineGetCurrentSubSystem(), videoMode))
|
||||
{
|
||||
RsGlobal.quit = TRUE;
|
||||
}
|
||||
@ -607,18 +609,16 @@ psSelectDevice()
|
||||
}
|
||||
|
||||
// Find the videomode that best fits what we got from the settings file
|
||||
RwInt32 bestMode = -1;
|
||||
RwInt32 bestFsMode = -1;
|
||||
RwInt32 bestWidth = -1;
|
||||
RwInt32 bestHeight = -1;
|
||||
RwInt32 bestDepth = -1;
|
||||
for(GcurSelVM = 0; GcurSelVM < RwEngineGetNumVideoModes(); GcurSelVM++){
|
||||
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
|
||||
if(!(vm.flags & rwVIDEOMODEEXCLUSIVE) != FrontEndMenuManager.m_nPrefsWindowed)
|
||||
continue;
|
||||
|
||||
if(FrontEndMenuManager.m_nPrefsWindowed){
|
||||
bestMode = GcurSelVM;
|
||||
}else{
|
||||
if (!(vm.flags & rwVIDEOMODEEXCLUSIVE)){
|
||||
bestWndMode = GcurSelVM;
|
||||
} else {
|
||||
// try the largest one that isn't larger than what we wanted
|
||||
if(vm.width >= bestWidth && vm.width <= FrontEndMenuManager.m_nPrefsWidth &&
|
||||
vm.height >= bestHeight && vm.height <= FrontEndMenuManager.m_nPrefsHeight &&
|
||||
@ -626,32 +626,34 @@ psSelectDevice()
|
||||
bestWidth = vm.width;
|
||||
bestHeight = vm.height;
|
||||
bestDepth = vm.depth;
|
||||
bestMode = GcurSelVM;
|
||||
bestFsMode = GcurSelVM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bestMode < 0){
|
||||
if(bestFsMode < 0){
|
||||
MessageBox(nil, "Cannot find desired video mode", "GTA3", MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
GcurSelVM = bestMode;
|
||||
GcurSelVM = bestFsMode;
|
||||
|
||||
FrontEndMenuManager.m_nDisplayVideoMode = GcurSelVM;
|
||||
FrontEndMenuManager.m_nPrefsVideoMode = FrontEndMenuManager.m_nDisplayVideoMode;
|
||||
GcurSelVM = FrontEndMenuManager.m_nDisplayVideoMode;
|
||||
|
||||
FrontEndMenuManager.m_nSelectedScreenMode = FrontEndMenuManager.m_nPrefsWindowed;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
|
||||
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
if(vm.flags & rwVIDEOMODEEXCLUSIVE){
|
||||
FrontEndMenuManager.m_nPrefsWidth = vm.width;
|
||||
FrontEndMenuManager.m_nPrefsHeight = vm.height;
|
||||
FrontEndMenuManager.m_nPrefsDepth = vm.depth;
|
||||
}
|
||||
FrontEndMenuManager.m_nPrefsWindowed = !(vm.flags & rwVIDEOMODEEXCLUSIVE);
|
||||
if (FrontEndMenuManager.m_nPrefsWindowed)
|
||||
GcurSelVM = bestWndMode;
|
||||
|
||||
// Now GcurSelVM is 0 but vm has sizes(and fullscreen flag) of the video mode we want, that's why we changed the rwVIDEOMODEEXCLUSIVE conditions below
|
||||
FrontEndMenuManager.m_nPrefsWidth = vm.width;
|
||||
FrontEndMenuManager.m_nPrefsHeight = vm.height;
|
||||
FrontEndMenuManager.m_nPrefsDepth = vm.depth;
|
||||
#endif
|
||||
|
||||
FrontEndMenuManager.m_nCurrOption = 0;
|
||||
@ -677,6 +679,7 @@ psSelectDevice()
|
||||
}
|
||||
}
|
||||
*/
|
||||
#ifndef IMPROVED_VIDEOMODE
|
||||
if (vm.flags & rwVIDEOMODEEXCLUSIVE)
|
||||
{
|
||||
RsGlobal.maximumWidth = vm.width;
|
||||
@ -686,15 +689,13 @@ psSelectDevice()
|
||||
|
||||
PSGLOBAL(fullScreen) = TRUE;
|
||||
}
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
else{
|
||||
#else
|
||||
RsGlobal.maximumWidth = FrontEndMenuManager.m_nPrefsWidth;
|
||||
RsGlobal.maximumHeight = FrontEndMenuManager.m_nPrefsHeight;
|
||||
RsGlobal.width = FrontEndMenuManager.m_nPrefsWidth;
|
||||
RsGlobal.height = FrontEndMenuManager.m_nPrefsHeight;
|
||||
|
||||
PSGLOBAL(fullScreen) = FALSE;
|
||||
}
|
||||
PSGLOBAL(fullScreen) = !FrontEndMenuManager.m_nPrefsWindowed;
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
@ -1023,6 +1024,8 @@ void resizeCB(GLFWwindow* window, int width, int height) {
|
||||
if (RwInitialised && height > 0 && width > 0) {
|
||||
RwRect r;
|
||||
|
||||
// TODO support resizing with mouse. Now enabling this makes weird things to trails and CameraSize messing with sizes
|
||||
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
r.w = RsGlobal.maximumWidth;
|
||||
|
@ -59,8 +59,6 @@ static RwBool startupDeactivate;
|
||||
|
||||
static RwBool useDefault;
|
||||
|
||||
static RwBool defaultFullscreenRes = TRUE;
|
||||
|
||||
/* Class name for the MS Window's window class. */
|
||||
|
||||
static const RwChar *AppClassName = RWSTRING("Grand theft auto 3");
|
||||
@ -113,6 +111,14 @@ DWORD _dwOperatingSystemVersion;
|
||||
RwUInt32 gGameState;
|
||||
CJoySticks AllValidWinJoys;
|
||||
|
||||
// What is that for anyway?
|
||||
#ifndef IMPROVED_VIDEOMODE
|
||||
static RwBool defaultFullscreenRes = TRUE;
|
||||
#else
|
||||
static RwBool defaultFullscreenRes = FALSE;
|
||||
static RwInt32 bestWndMode = -1;
|
||||
#endif
|
||||
|
||||
CJoySticks::CJoySticks()
|
||||
{
|
||||
for (int i = 0; i < MAX_JOYSTICKS; i++)
|
||||
@ -791,11 +797,7 @@ RwChar **_psGetVideoModeList()
|
||||
_VMList[i] = nil;
|
||||
}
|
||||
else
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
_VMList[i] = strdup("WINDOW");
|
||||
#else
|
||||
_VMList[i] = nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
return _VMList;
|
||||
@ -1378,8 +1380,8 @@ psSelectDevice()
|
||||
if ( !useDefault )
|
||||
{
|
||||
if(FrontEndMenuManager.m_nPrefsWidth == 0 ||
|
||||
FrontEndMenuManager.m_nPrefsHeight == 0 ||
|
||||
FrontEndMenuManager.m_nPrefsDepth == 0){
|
||||
FrontEndMenuManager.m_nPrefsHeight == 0 ||
|
||||
FrontEndMenuManager.m_nPrefsDepth == 0){
|
||||
// Defaults if nothing specified
|
||||
FrontEndMenuManager.m_nPrefsWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
FrontEndMenuManager.m_nPrefsHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
@ -1388,51 +1390,51 @@ psSelectDevice()
|
||||
}
|
||||
|
||||
// Find the videomode that best fits what we got from the settings file
|
||||
RwInt32 bestMode = -1;
|
||||
RwInt32 bestFsMode = -1;
|
||||
RwInt32 bestWidth = -1;
|
||||
RwInt32 bestHeight = -1;
|
||||
RwInt32 bestDepth = -1;
|
||||
for(GcurSelVM = 0; GcurSelVM < RwEngineGetNumVideoModes(); GcurSelVM++){
|
||||
for (GcurSelVM = 0; GcurSelVM < RwEngineGetNumVideoModes(); GcurSelVM++) {
|
||||
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
|
||||
if(!(vm.flags & rwVIDEOMODEEXCLUSIVE) != FrontEndMenuManager.m_nPrefsWindowed)
|
||||
continue;
|
||||
|
||||
if(FrontEndMenuManager.m_nPrefsWindowed){
|
||||
bestMode = GcurSelVM;
|
||||
}else{
|
||||
if (!(vm.flags & rwVIDEOMODEEXCLUSIVE)) {
|
||||
bestWndMode = GcurSelVM;
|
||||
} else {
|
||||
// try the largest one that isn't larger than what we wanted
|
||||
if(vm.width >= bestWidth && vm.width <= FrontEndMenuManager.m_nPrefsWidth &&
|
||||
vm.height >= bestHeight && vm.height <= FrontEndMenuManager.m_nPrefsHeight &&
|
||||
vm.depth >= bestDepth && vm.depth <= FrontEndMenuManager.m_nPrefsDepth){
|
||||
if (vm.width >= bestWidth && vm.width <= FrontEndMenuManager.m_nPrefsWidth &&
|
||||
vm.height >= bestHeight && vm.height <= FrontEndMenuManager.m_nPrefsHeight &&
|
||||
vm.depth >= bestDepth && vm.depth <= FrontEndMenuManager.m_nPrefsDepth){
|
||||
bestWidth = vm.width;
|
||||
bestHeight = vm.height;
|
||||
bestDepth = vm.depth;
|
||||
bestMode = GcurSelVM;
|
||||
bestFsMode = GcurSelVM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bestMode < 0){
|
||||
if(bestFsMode < 0){
|
||||
MessageBox(nil, "Cannot find desired video mode", "GTA3", MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
GcurSelVM = bestMode;
|
||||
GcurSelVM = bestFsMode;
|
||||
|
||||
FrontEndMenuManager.m_nDisplayVideoMode = GcurSelVM;
|
||||
FrontEndMenuManager.m_nPrefsVideoMode = FrontEndMenuManager.m_nDisplayVideoMode;
|
||||
GcurSelVM = FrontEndMenuManager.m_nDisplayVideoMode;
|
||||
|
||||
FrontEndMenuManager.m_nSelectedScreenMode = FrontEndMenuManager.m_nPrefsWindowed;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
|
||||
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
if(vm.flags & rwVIDEOMODEEXCLUSIVE){
|
||||
FrontEndMenuManager.m_nPrefsWidth = vm.width;
|
||||
FrontEndMenuManager.m_nPrefsHeight = vm.height;
|
||||
FrontEndMenuManager.m_nPrefsDepth = vm.depth;
|
||||
}
|
||||
FrontEndMenuManager.m_nPrefsWindowed = !(vm.flags & rwVIDEOMODEEXCLUSIVE);
|
||||
if (FrontEndMenuManager.m_nPrefsWindowed)
|
||||
GcurSelVM = bestWndMode;
|
||||
|
||||
// Now GcurSelVM is 0 but vm has sizes(and fullscreen flag) of the video mode we want, that's why we changed the rwVIDEOMODEEXCLUSIVE conditions below
|
||||
FrontEndMenuManager.m_nPrefsWidth = vm.width;
|
||||
FrontEndMenuManager.m_nPrefsHeight = vm.height;
|
||||
FrontEndMenuManager.m_nPrefsDepth = vm.depth;
|
||||
#endif
|
||||
|
||||
FrontEndMenuManager.m_nCurrOption = 0;
|
||||
@ -1444,7 +1446,11 @@ psSelectDevice()
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
if (!FrontEndMenuManager.m_nPrefsWindowed)
|
||||
#else
|
||||
if (vm.flags & rwVIDEOMODEEXCLUSIVE)
|
||||
#endif
|
||||
{
|
||||
debug("%dx%dx%d", vm.width, vm.height, vm.depth);
|
||||
|
||||
@ -1457,7 +1463,11 @@ psSelectDevice()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef IMPROVED_VIDEOMODE
|
||||
if (!FrontEndMenuManager.m_nPrefsWindowed)
|
||||
#else
|
||||
if (vm.flags & rwVIDEOMODEEXCLUSIVE)
|
||||
#endif
|
||||
{
|
||||
RsGlobal.maximumWidth = vm.width;
|
||||
RsGlobal.maximumHeight = vm.height;
|
||||
|
Reference in New Issue
Block a user