mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-03-02 23:41:51 +00:00
More compile fixes for Linux.
This commit is contained in:
parent
9cc36a111e
commit
1feaa335df
8 changed files with 359 additions and 34 deletions
|
@ -28,12 +28,12 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
add_definitions(-DUSE_XINPUT)
|
add_definitions(-DUSE_XINPUT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O1 -Wno-unknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O1 -Wno-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
#set(CMAKE_C_FLAGS_DEBUGALL "${CMAKE_C_FLAGS_DEBUGALL} -g -ggdb -D_DEBUG -Wno-unknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
#set(CMAKE_C_FLAGS_DEBUGALL "${CMAKE_C_FLAGS_DEBUGALL} -g -ggdb -D_DEBUG -Wno-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
#set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -g -ggdb -D_DEBUG -O1 -fno-omit-frame-pointer -Wunknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
#set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} -g -ggdb -D_DEBUG -O1 -fno-omit-frame-pointer -Wunknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-unknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -g -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-unknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -g -O3 -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-unknown-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -ffast-math -fno-unsafe-math-optimizations -fomit-frame-pointer -Wno-pragmas -fno-strict-aliasing -Wno-unused-variable -Wno-unused-but-set-variable -Wno-switch")
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
||||||
#set(CMAKE_CXX_FLAGS_DEBUGALL ${CMAKE_C_FLAGS_DEBUGALL})
|
#set(CMAKE_CXX_FLAGS_DEBUGALL ${CMAKE_C_FLAGS_DEBUGALL})
|
||||||
|
@ -888,9 +888,6 @@ set(RBDOOM3_SOURCES
|
||||||
${UI_INCLUDES} ${UI_SOURCES}
|
${UI_INCLUDES} ${UI_SOURCES}
|
||||||
${SWF_INCLUDES} ${SWF_SOURCES}
|
${SWF_INCLUDES} ${SWF_SOURCES}
|
||||||
|
|
||||||
${DOOMCLASSIC_INCLUDES} ${DOOMCLASSIC_SOURCES}
|
|
||||||
${TIMIDITY_INCLUDES} ${TIMIDITY_SOURCES}
|
|
||||||
|
|
||||||
#${COMPILER_INCLUDES}
|
#${COMPILER_INCLUDES}
|
||||||
#${COMPILER_AAS_INCLUDES} ${COMPILER_AAS_SOURCES}
|
#${COMPILER_AAS_INCLUDES} ${COMPILER_AAS_SOURCES}
|
||||||
#${COMPILER_DMAP_INCLUDES} ${COMPILER_DMAP_SOURCES}
|
#${COMPILER_DMAP_INCLUDES} ${COMPILER_DMAP_SOURCES}
|
||||||
|
@ -931,6 +928,8 @@ include_directories(
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
|
|
||||||
|
add_definitions(-DUSE_DOOMCLASSIC)
|
||||||
|
|
||||||
if(MSVC_VERSION EQUAL 1700)
|
if(MSVC_VERSION EQUAL 1700)
|
||||||
set(DirectX_LIBRARIES
|
set(DirectX_LIBRARIES
|
||||||
dinput8
|
dinput8
|
||||||
|
@ -977,6 +976,9 @@ if(MSVC)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND RBDOOM3_SOURCES
|
list(APPEND RBDOOM3_SOURCES
|
||||||
|
${DOOMCLASSIC_INCLUDES} ${DOOMCLASSIC_SOURCES}
|
||||||
|
${TIMIDITY_INCLUDES} ${TIMIDITY_SOURCES}
|
||||||
|
|
||||||
${SYS_INCLUDES} ${SYS_SOURCES}
|
${SYS_INCLUDES} ${SYS_SOURCES}
|
||||||
${XAUDIO2_INCLUDES} ${XAUDIO2_SOURCES}
|
${XAUDIO2_INCLUDES} ${XAUDIO2_SOURCES}
|
||||||
${WIN32_INCLUDES} ${WIN32_SOURCES} ${WIN32_RESOURCES})
|
${WIN32_INCLUDES} ${WIN32_SOURCES} ${WIN32_RESOURCES})
|
||||||
|
@ -1008,38 +1010,58 @@ if(MSVC)
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
|
|
||||||
include_directories(libs/sdl2/include)
|
|
||||||
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs/sdl2/libmingw32)
|
|
||||||
|
|
||||||
list(APPEND RBDOOM3_SOURCES
|
list(APPEND RBDOOM3_SOURCES
|
||||||
${SYS_INCLUDES} ${SYS_SOURCES}
|
${SYS_INCLUDES} ${SYS_SOURCES}
|
||||||
${STUBAUDIO_INCLUDES} ${STUBAUDIO_SOURCES})
|
${STUBAUDIO_INCLUDES} ${STUBAUDIO_SOURCES})
|
||||||
|
|
||||||
# TODO: if WIN32
|
if(WIN32)
|
||||||
#list(REMOVE_ITEM WIN32_SOURCES sys/win32/win_cpu.cpp)
|
add_definitions(-DUSE_DOOMCLASSIC)
|
||||||
list(APPEND WIN32_SOURCES sys/sdl/sdl_cpu.cpp)
|
|
||||||
|
|
||||||
list(APPEND RBDOOM3_SOURCES
|
list(APPEND RBDOOM3_SOURCES
|
||||||
${WIN32_INCLUDES} ${WIN32_SOURCES} ${WIN32_RESOURCES})
|
${DOOMCLASSIC_INCLUDES} ${DOOMCLASSIC_SOURCES}
|
||||||
|
${TIMIDITY_INCLUDES} ${TIMIDITY_SOURCES}
|
||||||
|
${WIN32_INCLUDES} ${WIN32_SOURCES} ${WIN32_RESOURCES})
|
||||||
|
|
||||||
|
#list(REMOVE_ITEM WIN32_SOURCES sys/win32/win_cpu.cpp)
|
||||||
|
list(APPEND WIN32_SOURCES sys/sdl/sdl_cpu.cpp)
|
||||||
|
endif()
|
||||||
|
|
||||||
list(REMOVE_DUPLICATES RBDOOM3_SOURCES)
|
list(REMOVE_DUPLICATES RBDOOM3_SOURCES)
|
||||||
|
|
||||||
add_executable(RBDoom3 WIN32 ${RBDOOM3_SOURCES})
|
add_executable(RBDoom3 WIN32 ${RBDOOM3_SOURCES})
|
||||||
|
|
||||||
add_dependencies(RBDoom3 idlib)
|
add_dependencies(RBDoom3 idlib)
|
||||||
target_link_libraries(RBDoom3
|
|
||||||
idlib
|
if(MINGW)
|
||||||
${DirectX_LIBRARIES}
|
include_directories(libs/sdl2/include)
|
||||||
#libcurl
|
|
||||||
#openal32
|
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs/sdl2/libmingw32)
|
||||||
opengl32
|
endif()
|
||||||
glu32
|
|
||||||
dbghelp
|
if(WIN32)
|
||||||
#eaxguid
|
|
||||||
iphlpapi
|
target_link_libraries(RBDoom3
|
||||||
winmm
|
idlib
|
||||||
wsock32.lib
|
${DirectX_LIBRARIES}
|
||||||
SDL2
|
#libcurl
|
||||||
)
|
#openal32
|
||||||
|
opengl32
|
||||||
|
glu32
|
||||||
|
dbghelp
|
||||||
|
#eaxguid
|
||||||
|
iphlpapi
|
||||||
|
winmm
|
||||||
|
wsock32.lib
|
||||||
|
SDL2
|
||||||
|
)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
target_link_libraries(RBDoom3
|
||||||
|
idlib
|
||||||
|
GL
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
Doom 3 BFG Edition GPL Source Code
|
Doom 3 BFG Edition GPL Source Code
|
||||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||||
|
Copyright (C) 2012 Robert Beckebans
|
||||||
|
|
||||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||||
|
|
||||||
|
@ -36,10 +37,13 @@ If you have questions concerning this license or the applicable additional terms
|
||||||
|
|
||||||
#include "../sound/sound.h"
|
#include "../sound/sound.h"
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
#include "../../doomclassic/doom/doomlib.h"
|
#include "../../doomclassic/doom/doomlib.h"
|
||||||
#include "../../doomclassic/doom/d_event.h"
|
#include "../../doomclassic/doom/d_event.h"
|
||||||
#include "../../doomclassic/doom/d_main.h"
|
#include "../../doomclassic/doom/d_main.h"
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
|
|
||||||
#include "../sys/sys_savegame.h"
|
#include "../sys/sys_savegame.h"
|
||||||
|
@ -89,7 +93,11 @@ float com_engineHz_latched = 60.0f; // Latched version of cvar, updated between
|
||||||
int64 com_engineHz_numerator = 100LL * 1000LL;
|
int64 com_engineHz_numerator = 100LL * 1000LL;
|
||||||
int64 com_engineHz_denominator = 100LL * 60LL;
|
int64 com_engineHz_denominator = 100LL * 60LL;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
HWND com_hwndMsg = NULL;
|
HWND com_hwndMsg = NULL;
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
#ifdef __DOOM_DLL__
|
#ifdef __DOOM_DLL__
|
||||||
idGame* game = NULL;
|
idGame* game = NULL;
|
||||||
|
@ -120,9 +128,13 @@ idCommonLocal::idCommonLocal() :
|
||||||
lastPacifierGuiTime( 0 ),
|
lastPacifierGuiTime( 0 ),
|
||||||
lastPacifierDialogState( false ),
|
lastPacifierDialogState( false ),
|
||||||
showShellRequested( false ),
|
showShellRequested( false ),
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
currentGame( DOOM3_BFG ),
|
currentGame( DOOM3_BFG ),
|
||||||
idealCurrentGame( DOOM3_BFG ),
|
idealCurrentGame( DOOM3_BFG ),
|
||||||
doomClassicMaterial( NULL )
|
doomClassicMaterial( NULL )
|
||||||
|
#endif
|
||||||
|
/ // RB end
|
||||||
{
|
{
|
||||||
|
|
||||||
snapCurrent.localTime = -1;
|
snapCurrent.localTime = -1;
|
||||||
|
@ -245,7 +257,14 @@ void idCommonLocal::ParseCommandLine( int argc, const char* const* argv )
|
||||||
if( idStr::Icmp( argv[ i ], "+connect_lobby" ) == 0 )
|
if( idStr::Icmp( argv[ i ], "+connect_lobby" ) == 0 )
|
||||||
{
|
{
|
||||||
// Handle Steam bootable invites.
|
// Handle Steam bootable invites.
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
session->HandleBootableInvite( _atoi64( argv[ i + 1 ] ) );
|
session->HandleBootableInvite( _atoi64( argv[ i + 1 ] ) );
|
||||||
|
#else
|
||||||
|
session->HandleBootableInvite( atol( argv[ i + 1 ] ) );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
else if( argv[ i ][ 0 ] == '+' )
|
else if( argv[ i ][ 0 ] == '+' )
|
||||||
{
|
{
|
||||||
|
@ -1293,6 +1312,8 @@ void idCommonLocal::Init( int argc, const char* const* argv, const char* cmdline
|
||||||
|
|
||||||
fileSystem->EndLevelLoad();
|
fileSystem->EndLevelLoad();
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
// Initialize support for Doom classic.
|
// Initialize support for Doom classic.
|
||||||
doomClassicMaterial = declManager->FindMaterial( "_doomClassic" );
|
doomClassicMaterial = declManager->FindMaterial( "_doomClassic" );
|
||||||
idImage* image = globalImages->GetImage( "_doomClassic" );
|
idImage* image = globalImages->GetImage( "_doomClassic" );
|
||||||
|
@ -1306,6 +1327,8 @@ void idCommonLocal::Init( int argc, const char* const* argv, const char* cmdline
|
||||||
opts.numLevels = 1;
|
opts.numLevels = 1;
|
||||||
image->AllocImage( opts, TF_LINEAR, TR_REPEAT );
|
image->AllocImage( opts, TF_LINEAR, TR_REPEAT );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
com_fullyInitialized = true;
|
com_fullyInitialized = true;
|
||||||
|
|
||||||
|
@ -1664,6 +1687,9 @@ bool idCommonLocal::ProcessEvent( const sysEvent_t* event )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
|
|
||||||
// Let Doom classic run events.
|
// Let Doom classic run events.
|
||||||
if( IsPlayingDoomClassic() )
|
if( IsPlayingDoomClassic() )
|
||||||
{
|
{
|
||||||
|
@ -1696,6 +1722,8 @@ bool idCommonLocal::ProcessEvent( const sysEvent_t* event )
|
||||||
// Let the classics eat all events.
|
// Let the classics eat all events.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
// menus / etc
|
// menus / etc
|
||||||
if( MenuEvent( event ) )
|
if( MenuEvent( event ) )
|
||||||
|
@ -1730,6 +1758,9 @@ void idCommonLocal::ResetPlayerInput( int playerIndex )
|
||||||
userCmdMgr.ResetPlayer( playerIndex );
|
userCmdMgr.ResetPlayer( playerIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
========================
|
========================
|
||||||
idCommonLocal::SwitchToGame
|
idCommonLocal::SwitchToGame
|
||||||
|
@ -1812,6 +1843,9 @@ void idCommonLocal::PerformGameSwitch()
|
||||||
currentGame = idealCurrentGame;
|
currentGame = idealCurrentGame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // #if defined(USE_DOOMCLASSIC)
|
||||||
|
// RB end
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==================
|
==================
|
||||||
Common_WritePrecache_f
|
Common_WritePrecache_f
|
||||||
|
|
|
@ -178,12 +178,16 @@ struct mpMap_t
|
||||||
|
|
||||||
static const int MAX_LOGGED_STATS = 60 * 120; // log every half second
|
static const int MAX_LOGGED_STATS = 60 * 120; // log every half second
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
enum currentGame_t
|
enum currentGame_t
|
||||||
{
|
{
|
||||||
DOOM_CLASSIC,
|
DOOM_CLASSIC,
|
||||||
DOOM2_CLASSIC,
|
DOOM2_CLASSIC,
|
||||||
DOOM3_BFG
|
DOOM3_BFG
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
class idCommon
|
class idCommon
|
||||||
{
|
{
|
||||||
|
@ -329,8 +333,12 @@ public:
|
||||||
|
|
||||||
virtual void QueueShowShell() = 0; // Will activate the shell on the next frame.
|
virtual void QueueShowShell() = 0; // Will activate the shell on the next frame.
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
virtual currentGame_t GetCurrentGame() const = 0;
|
virtual currentGame_t GetCurrentGame() const = 0;
|
||||||
virtual void SwitchToGame( currentGame_t newGame ) = 0;
|
virtual void SwitchToGame( currentGame_t newGame ) = 0;
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
};
|
};
|
||||||
|
|
||||||
extern idCommon* common;
|
extern idCommon* common;
|
||||||
|
|
|
@ -1008,10 +1008,14 @@ bool idCommonLocal::LoadGame( const char* saveName )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
if( GetCurrentGame() != DOOM3_BFG )
|
if( GetCurrentGame() != DOOM3_BFG )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
if( session->GetSignInManager().GetMasterLocalUser() == NULL )
|
if( session->GetSignInManager().GetMasterLocalUser() == NULL )
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
Doom 3 BFG Edition GPL Source Code
|
Doom 3 BFG Edition GPL Source Code
|
||||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||||
|
Copyright (C) 2012 Robert Beckebans
|
||||||
|
|
||||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||||
|
|
||||||
|
@ -270,11 +271,15 @@ public:
|
||||||
showShellRequested = true;
|
showShellRequested = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
virtual currentGame_t GetCurrentGame() const
|
virtual currentGame_t GetCurrentGame() const
|
||||||
{
|
{
|
||||||
return currentGame;
|
return currentGame;
|
||||||
}
|
}
|
||||||
virtual void SwitchToGame( currentGame_t newGame );
|
virtual void SwitchToGame( currentGame_t newGame );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Draw(); // called by gameThread
|
void Draw(); // called by gameThread
|
||||||
|
@ -516,6 +521,8 @@ private:
|
||||||
|
|
||||||
bool showShellRequested;
|
bool showShellRequested;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
currentGame_t currentGame;
|
currentGame_t currentGame;
|
||||||
currentGame_t idealCurrentGame; // Defer game switching so that bad things don't happen in the middle of the frame.
|
currentGame_t idealCurrentGame; // Defer game switching so that bad things don't happen in the middle of the frame.
|
||||||
const idMaterial* doomClassicMaterial;
|
const idMaterial* doomClassicMaterial;
|
||||||
|
@ -526,6 +533,8 @@ private:
|
||||||
static const int DOOMCLASSIC_IMAGE_SIZE_IN_BYTES = DOOMCLASSIC_RENDERWIDTH* DOOMCLASSIC_RENDERHEIGHT* DOOMCLASSIC_BYTES_PER_PIXEL;
|
static const int DOOMCLASSIC_IMAGE_SIZE_IN_BYTES = DOOMCLASSIC_RENDERWIDTH* DOOMCLASSIC_RENDERHEIGHT* DOOMCLASSIC_BYTES_PER_PIXEL;
|
||||||
|
|
||||||
idArray< byte, DOOMCLASSIC_IMAGE_SIZE_IN_BYTES > doomClassicImageData;
|
idArray< byte, DOOMCLASSIC_IMAGE_SIZE_IN_BYTES > doomClassicImageData;
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InitCommands();
|
void InitCommands();
|
||||||
|
@ -596,6 +605,8 @@ private:
|
||||||
|
|
||||||
void ScrubSaveGameFileName( idStr& saveFileName ) const;
|
void ScrubSaveGameFileName( idStr& saveFileName ) const;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
// Doom classic support
|
// Doom classic support
|
||||||
void RunDoomClassicFrame();
|
void RunDoomClassicFrame();
|
||||||
void RenderDoomClassic();
|
void RenderDoomClassic();
|
||||||
|
@ -604,6 +615,8 @@ private:
|
||||||
return GetCurrentGame() != DOOM3_BFG;
|
return GetCurrentGame() != DOOM3_BFG;
|
||||||
}
|
}
|
||||||
void PerformGameSwitch();
|
void PerformGameSwitch();
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
};
|
};
|
||||||
|
|
||||||
extern idCommonLocal commonLocal;
|
extern idCommonLocal commonLocal;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
Doom 3 BFG Edition GPL Source Code
|
Doom 3 BFG Edition GPL Source Code
|
||||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||||
|
Copyright (C) 2012 Robert Beckebans
|
||||||
|
|
||||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||||
|
|
||||||
|
@ -1296,7 +1297,13 @@ idFile_Permanent::~idFile_Permanent()
|
||||||
{
|
{
|
||||||
if( o )
|
if( o )
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
CloseHandle( o );
|
CloseHandle( o );
|
||||||
|
#else
|
||||||
|
fclose( o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1332,12 +1339,20 @@ int idFile_Permanent::Read( void* buffer, int len )
|
||||||
while( remaining )
|
while( remaining )
|
||||||
{
|
{
|
||||||
block = remaining;
|
block = remaining;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
DWORD bytesRead;
|
DWORD bytesRead;
|
||||||
if( !ReadFile( o, buf, block, &bytesRead, NULL ) )
|
if( !ReadFile( o, buf, block, &bytesRead, NULL ) )
|
||||||
{
|
{
|
||||||
idLib::Warning( "idFile_Permanent::Read failed with %d from %s", GetLastError(), name.c_str() );
|
idLib::Warning( "idFile_Permanent::Read failed with %d from %s", GetLastError(), name.c_str() );
|
||||||
}
|
}
|
||||||
read = bytesRead;
|
read = bytesRead;
|
||||||
|
#else
|
||||||
|
read = fread( buf, 1, block, o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
if( read == 0 )
|
if( read == 0 )
|
||||||
{
|
{
|
||||||
// we might have been trying to read from a CD, which
|
// we might have been trying to read from a CD, which
|
||||||
|
@ -1395,9 +1410,17 @@ int idFile_Permanent::Write( const void* buffer, int len )
|
||||||
while( remaining )
|
while( remaining )
|
||||||
{
|
{
|
||||||
block = remaining;
|
block = remaining;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
DWORD bytesWritten;
|
DWORD bytesWritten;
|
||||||
WriteFile( o, buf, block, &bytesWritten, NULL );
|
WriteFile( o, buf, block, &bytesWritten, NULL );
|
||||||
written = bytesWritten;
|
written = bytesWritten;
|
||||||
|
#else
|
||||||
|
written = fwrite( buf, 1, block, o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
if( written == 0 )
|
if( written == 0 )
|
||||||
{
|
{
|
||||||
if( !tries )
|
if( !tries )
|
||||||
|
@ -1435,7 +1458,13 @@ idFile_Permanent::ForceFlush
|
||||||
*/
|
*/
|
||||||
void idFile_Permanent::ForceFlush()
|
void idFile_Permanent::ForceFlush()
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
FlushFileBuffers( o );
|
FlushFileBuffers( o );
|
||||||
|
#else
|
||||||
|
setvbuf( o, NULL, _IONBF, 0 );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1445,7 +1474,13 @@ idFile_Permanent::Flush
|
||||||
*/
|
*/
|
||||||
void idFile_Permanent::Flush()
|
void idFile_Permanent::Flush()
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
FlushFileBuffers( o );
|
FlushFileBuffers( o );
|
||||||
|
#else
|
||||||
|
fflush( o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1455,7 +1490,13 @@ idFile_Permanent::Tell
|
||||||
*/
|
*/
|
||||||
int idFile_Permanent::Tell() const
|
int idFile_Permanent::Tell() const
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
return SetFilePointer( o, 0, NULL, FILE_CURRENT );
|
return SetFilePointer( o, 0, NULL, FILE_CURRENT );
|
||||||
|
#else
|
||||||
|
return ftell( o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1488,6 +1529,8 @@ idFile_Permanent::Seek
|
||||||
*/
|
*/
|
||||||
int idFile_Permanent::Seek( long offset, fsOrigin_t origin )
|
int idFile_Permanent::Seek( long offset, fsOrigin_t origin )
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
int retVal = INVALID_SET_FILE_POINTER;
|
int retVal = INVALID_SET_FILE_POINTER;
|
||||||
switch( origin )
|
switch( origin )
|
||||||
{
|
{
|
||||||
|
@ -1502,6 +1545,37 @@ int idFile_Permanent::Seek( long offset, fsOrigin_t origin )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return ( retVal == INVALID_SET_FILE_POINTER ) ? -1 : 0;
|
return ( retVal == INVALID_SET_FILE_POINTER ) ? -1 : 0;
|
||||||
|
#else
|
||||||
|
int _origin;
|
||||||
|
|
||||||
|
switch( origin )
|
||||||
|
{
|
||||||
|
case FS_SEEK_CUR:
|
||||||
|
{
|
||||||
|
_origin = SEEK_CUR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case FS_SEEK_END:
|
||||||
|
{
|
||||||
|
_origin = SEEK_END;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case FS_SEEK_SET:
|
||||||
|
{
|
||||||
|
_origin = SEEK_SET;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
_origin = SEEK_CUR;
|
||||||
|
common->FatalError( "idFile_Permanent::Seek: bad origin for %s\n", name.c_str() );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fseek( o, offset, _origin );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
|
|
|
@ -456,7 +456,8 @@ idFileHandle idFileSystemLocal::OpenOSFile( const char* fileName, fsMode_t mode
|
||||||
{
|
{
|
||||||
idFileHandle fp;
|
idFileHandle fp;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
DWORD dwAccess = 0;
|
DWORD dwAccess = 0;
|
||||||
DWORD dwShare = 0;
|
DWORD dwShare = 0;
|
||||||
DWORD dwCreate = 0;
|
DWORD dwCreate = 0;
|
||||||
|
@ -489,6 +490,84 @@ idFileHandle idFileSystemLocal::OpenOSFile( const char* fileName, fsMode_t mode
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifndef __MWERKS__
|
||||||
|
#ifndef WIN32
|
||||||
|
// some systems will let you fopen a directory
|
||||||
|
struct stat buf;
|
||||||
|
if( stat( fileName, &buf ) != -1 && !S_ISREG( buf.st_mode ) )
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( mode == FS_WRITE )
|
||||||
|
{
|
||||||
|
fp = fopen( fileName, "wb" );
|
||||||
|
}
|
||||||
|
else if( mode == FS_READ )
|
||||||
|
{
|
||||||
|
fp = fopen( fileName, "rb" );
|
||||||
|
}
|
||||||
|
else if( mode == FS_APPEND )
|
||||||
|
{
|
||||||
|
fp = fopen( fileName, "ab" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !fp )//&& fs_caseSensitiveOS.GetBool() )
|
||||||
|
{
|
||||||
|
// RB: really any proper OS other than Windows should have a case sensitive filesystem
|
||||||
|
idStr fpath, entry;
|
||||||
|
idStrList list;
|
||||||
|
|
||||||
|
fpath = fileName;
|
||||||
|
fpath.StripFilename();
|
||||||
|
fpath.StripTrailing( PATHSEPARATOR_CHAR );
|
||||||
|
if( ListOSFiles( fpath, NULL, list ) == -1 )
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for( int i = 0; i < list.Num(); i++ )
|
||||||
|
{
|
||||||
|
entry = fpath + PATHSEPARATOR_CHAR + list[i];
|
||||||
|
if( !entry.Icmp( fileName ) )
|
||||||
|
{
|
||||||
|
if( mode == FS_WRITE )
|
||||||
|
{
|
||||||
|
fp = fopen( entry, "wb" );
|
||||||
|
}
|
||||||
|
else if( mode == FS_READ )
|
||||||
|
{
|
||||||
|
fp = fopen( entry, "rb" );
|
||||||
|
}
|
||||||
|
else if( mode == FS_APPEND )
|
||||||
|
{
|
||||||
|
fp = fopen( entry, "ab" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fp )
|
||||||
|
{
|
||||||
|
if( fs_debug.GetInteger() )
|
||||||
|
{
|
||||||
|
common->Printf( "idFileSystemLocal::OpenFileRead: changed %s to %s\n", fileName, entry.c_str() );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// not supposed to happen if ListOSFiles is doing it's job correctly
|
||||||
|
common->Warning( "idFileSystemLocal::OpenFileRead: fs_caseSensitiveOS 1 could not open %s", entry.c_str() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,7 +578,13 @@ idFileSystemLocal::CloseOSFile
|
||||||
*/
|
*/
|
||||||
void idFileSystemLocal::CloseOSFile( idFileHandle o )
|
void idFileSystemLocal::CloseOSFile( idFileHandle o )
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
::CloseHandle( o );
|
::CloseHandle( o );
|
||||||
|
#else
|
||||||
|
fclose( o );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -509,7 +594,21 @@ idFileSystemLocal::DirectFileLength
|
||||||
*/
|
*/
|
||||||
int idFileSystemLocal::DirectFileLength( idFileHandle o )
|
int idFileSystemLocal::DirectFileLength( idFileHandle o )
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
return GetFileSize( o, NULL );
|
return GetFileSize( o, NULL );
|
||||||
|
#else
|
||||||
|
int pos;
|
||||||
|
int end;
|
||||||
|
|
||||||
|
pos = ftell( o );
|
||||||
|
fseek( o, 0, SEEK_END );
|
||||||
|
end = ftell( o );
|
||||||
|
fseek( o, pos, SEEK_SET );
|
||||||
|
|
||||||
|
return end;
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1774,11 +1873,25 @@ void idFileSystemLocal::RemoveFile( const char* relativePath )
|
||||||
if( fs_basepath.GetString()[0] )
|
if( fs_basepath.GetString()[0] )
|
||||||
{
|
{
|
||||||
OSPath = BuildOSPath( fs_basepath.GetString(), gameFolder, relativePath );
|
OSPath = BuildOSPath( fs_basepath.GetString(), gameFolder, relativePath );
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
::DeleteFile( OSPath );
|
::DeleteFile( OSPath );
|
||||||
|
#else
|
||||||
|
remove( OSPath );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
OSPath = BuildOSPath( fs_savepath.GetString(), gameFolder, relativePath );
|
OSPath = BuildOSPath( fs_savepath.GetString(), gameFolder, relativePath );
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
::DeleteFile( OSPath );
|
::DeleteFile( OSPath );
|
||||||
|
#else
|
||||||
|
remove( OSPath );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2007,6 +2120,8 @@ bool idFileSystemLocal::RenameFile( const char* relativePath, const char* newNam
|
||||||
idStr oldOSPath = BuildOSPath( path, gameFolder, relativePath );
|
idStr oldOSPath = BuildOSPath( path, gameFolder, relativePath );
|
||||||
idStr newOSPath = BuildOSPath( path, gameFolder, newName );
|
idStr newOSPath = BuildOSPath( path, gameFolder, newName );
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(_WIN32)
|
||||||
// this gives atomic-delete-on-rename, like POSIX rename()
|
// this gives atomic-delete-on-rename, like POSIX rename()
|
||||||
// There is a MoveFileTransacted() on vista and above, not sure if that means there
|
// There is a MoveFileTransacted() on vista and above, not sure if that means there
|
||||||
// is a race condition inside MoveFileEx...
|
// is a race condition inside MoveFileEx...
|
||||||
|
@ -2017,6 +2132,17 @@ bool idFileSystemLocal::RenameFile( const char* relativePath, const char* newNam
|
||||||
const int err = GetLastError();
|
const int err = GetLastError();
|
||||||
idLib::Warning( "RenameFile( %s, %s ) error %i", newOSPath.c_str(), oldOSPath.c_str(), err );
|
idLib::Warning( "RenameFile( %s, %s ) error %i", newOSPath.c_str(), oldOSPath.c_str(), err );
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
const bool success = ( rename( oldOSPath.c_str(), newOSPath.c_str() ) == 0 );
|
||||||
|
|
||||||
|
if( !success )
|
||||||
|
{
|
||||||
|
const int err = errno;
|
||||||
|
idLib::Warning( "rename( %s, %s ) error %s", newOSPath.c_str(), oldOSPath.c_str(), strerror( errno ) );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
Doom 3 BFG Edition GPL Source Code
|
Doom 3 BFG Edition GPL Source Code
|
||||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||||
|
Copyright (C) 2012 Robert Beckebans
|
||||||
|
|
||||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||||
|
|
||||||
|
@ -32,8 +33,13 @@ If you have questions concerning this license or the applicable additional terms
|
||||||
#include "Common_local.h"
|
#include "Common_local.h"
|
||||||
#include "../renderer/Image.h"
|
#include "../renderer/Image.h"
|
||||||
#include "../renderer/ImageOpts.h"
|
#include "../renderer/ImageOpts.h"
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
#include "../../doomclassic/doom/doomlib.h"
|
#include "../../doomclassic/doom/doomlib.h"
|
||||||
#include "../../doomclassic/doom/globaldata.h"
|
#include "../../doomclassic/doom/globaldata.h"
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -135,7 +141,13 @@ int idGameThread::Run()
|
||||||
// we should have consumed all of our usercmds
|
// we should have consumed all of our usercmds
|
||||||
if( userCmdMgr )
|
if( userCmdMgr )
|
||||||
{
|
{
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
if( userCmdMgr->HasUserCmdForPlayer( game->GetLocalClientNum() ) && common->GetCurrentGame() == DOOM3_BFG )
|
if( userCmdMgr->HasUserCmdForPlayer( game->GetLocalClientNum() ) && common->GetCurrentGame() == DOOM3_BFG )
|
||||||
|
#else
|
||||||
|
if( userCmdMgr->HasUserCmdForPlayer( game->GetLocalClientNum() ) )
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
{
|
{
|
||||||
idLib::Printf( "idGameThread::Run: didn't consume all usercmds\n" );
|
idLib::Printf( "idGameThread::Run: didn't consume all usercmds\n" );
|
||||||
}
|
}
|
||||||
|
@ -241,6 +253,8 @@ void idCommonLocal::Draw()
|
||||||
{
|
{
|
||||||
loadGUI->Render( renderSystem, Sys_Milliseconds() );
|
loadGUI->Render( renderSystem, Sys_Milliseconds() );
|
||||||
}
|
}
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
else if( currentGame == DOOM_CLASSIC || currentGame == DOOM2_CLASSIC )
|
else if( currentGame == DOOM_CLASSIC || currentGame == DOOM2_CLASSIC )
|
||||||
{
|
{
|
||||||
const float sysWidth = renderSystem->GetWidth() * renderSystem->GetPixelAspect();
|
const float sysWidth = renderSystem->GetWidth() * renderSystem->GetPixelAspect();
|
||||||
|
@ -265,6 +279,8 @@ void idCommonLocal::Draw()
|
||||||
renderSystem->SetColor4( 1, 1, 1, 1 );
|
renderSystem->SetColor4( 1, 1, 1, 1 );
|
||||||
renderSystem->DrawStretchPic( barWidth, barHeight, SCREEN_WIDTH - barWidth * 2.0f, SCREEN_HEIGHT - barHeight * 2.0f, 0, 0, 1, 1, doomClassicMaterial );
|
renderSystem->DrawStretchPic( barWidth, barHeight, SCREEN_WIDTH - barWidth * 2.0f, SCREEN_HEIGHT - barHeight * 2.0f, 0, 0, 1, 1, doomClassicMaterial );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
else if( game && game->Shell_IsActive() )
|
else if( game && game->Shell_IsActive() )
|
||||||
{
|
{
|
||||||
bool gameDraw = game->Draw( game->GetLocalClientNum() );
|
bool gameDraw = game->Draw( game->GetLocalClientNum() );
|
||||||
|
@ -440,9 +456,13 @@ void idCommonLocal::Frame()
|
||||||
com_forceGenericSIMD.ClearModified();
|
com_forceGenericSIMD.ClearModified();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
// Do the actual switch between Doom 3 and the classics here so
|
// Do the actual switch between Doom 3 and the classics here so
|
||||||
// that things don't get confused in the middle of the frame.
|
// that things don't get confused in the middle of the frame.
|
||||||
PerformGameSwitch();
|
PerformGameSwitch();
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
// pump all the events
|
// pump all the events
|
||||||
Sys_GenerateEvents();
|
Sys_GenerateEvents();
|
||||||
|
@ -461,7 +481,14 @@ void idCommonLocal::Frame()
|
||||||
|
|
||||||
// if the console or another gui is down, we don't need to hold the mouse cursor
|
// if the console or another gui is down, we don't need to hold the mouse cursor
|
||||||
bool chatting = false;
|
bool chatting = false;
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
if( console->Active() || Dialog().IsDialogActive() || session->IsSystemUIShowing() || ( game && game->InhibitControls() && !IsPlayingDoomClassic() ) )
|
if( console->Active() || Dialog().IsDialogActive() || session->IsSystemUIShowing() || ( game && game->InhibitControls() && !IsPlayingDoomClassic() ) )
|
||||||
|
#else
|
||||||
|
if( console->Active() || Dialog().IsDialogActive() || session->IsSystemUIShowing() || ( game && game->InhibitControls() ) )
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
{
|
{
|
||||||
Sys_GrabMouseCursor( false );
|
Sys_GrabMouseCursor( false );
|
||||||
usercmdGen->InhibitUsercmd( INHIBIT_SESSION, true );
|
usercmdGen->InhibitUsercmd( INHIBIT_SESSION, true );
|
||||||
|
@ -473,7 +500,13 @@ void idCommonLocal::Frame()
|
||||||
usercmdGen->InhibitUsercmd( INHIBIT_SESSION, false );
|
usercmdGen->InhibitUsercmd( INHIBIT_SESSION, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
const bool pauseGame = ( !mapSpawned || ( !IsMultiplayer() && ( Dialog().IsDialogPausing() || session->IsSystemUIShowing() || ( game && game->Shell_IsActive() ) ) ) ) && !IsPlayingDoomClassic();
|
const bool pauseGame = ( !mapSpawned || ( !IsMultiplayer() && ( Dialog().IsDialogPausing() || session->IsSystemUIShowing() || ( game && game->Shell_IsActive() ) ) ) ) && !IsPlayingDoomClassic();
|
||||||
|
#else
|
||||||
|
const bool pauseGame = ( !mapSpawned || ( !IsMultiplayer() && ( Dialog().IsDialogPausing() || session->IsSystemUIShowing() || ( game && game->Shell_IsActive() ) ) ) );
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
// save the screenshot and audio from the last draw if needed
|
// save the screenshot and audio from the last draw if needed
|
||||||
if( aviCaptureMode )
|
if( aviCaptureMode )
|
||||||
|
@ -705,11 +738,15 @@ void idCommonLocal::Frame()
|
||||||
userCmdMgr.PutUserCmdForPlayer( game->GetLocalClientNum(), newCmd );
|
userCmdMgr.PutUserCmdForPlayer( game->GetLocalClientNum(), newCmd );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
// If we're in Doom or Doom 2, run tics and upload the new texture.
|
// If we're in Doom or Doom 2, run tics and upload the new texture.
|
||||||
if( ( GetCurrentGame() == DOOM_CLASSIC || GetCurrentGame() == DOOM2_CLASSIC ) && !( Dialog().IsDialogPausing() || session->IsSystemUIShowing() ) )
|
if( ( GetCurrentGame() == DOOM_CLASSIC || GetCurrentGame() == DOOM2_CLASSIC ) && !( Dialog().IsDialogPausing() || session->IsSystemUIShowing() ) )
|
||||||
{
|
{
|
||||||
RunDoomClassicFrame();
|
RunDoomClassicFrame();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
// start the game / draw command generation thread going in the background
|
// start the game / draw command generation thread going in the background
|
||||||
gameReturn_t ret = gameThread.RunGameAndDraw( numGameFrames, userCmdMgr, IsClient(), gameFrame - numGameFrames );
|
gameReturn_t ret = gameThread.RunGameAndDraw( numGameFrames, userCmdMgr, IsClient(), gameFrame - numGameFrames );
|
||||||
|
@ -805,6 +842,9 @@ void idCommonLocal::Frame()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RB begin
|
||||||
|
#if defined(USE_DOOMCLASSIC)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
idCommonLocal::RunDoomClassicFrame
|
idCommonLocal::RunDoomClassicFrame
|
||||||
|
@ -855,3 +895,7 @@ void idCommonLocal::RunDoomClassicFrame()
|
||||||
renderSystem->UploadImage( "_doomClassic", doomClassicImageData.Ptr(), DOOMCLASSIC_RENDERWIDTH, DOOMCLASSIC_RENDERHEIGHT );
|
renderSystem->UploadImage( "_doomClassic", doomClassicImageData.Ptr(), DOOMCLASSIC_RENDERWIDTH, DOOMCLASSIC_RENDERHEIGHT );
|
||||||
doomTics++;
|
doomTics++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// RB end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue