mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-03-31 23:41:25 +00:00
Merge remote-tracking branch 'yquake2/master'
This commit is contained in:
commit
42d5958d98
6 changed files with 86 additions and 17 deletions
|
@ -65,6 +65,11 @@ option(CURL_SUPPORT "cURL support" ON)
|
|||
option(OPENAL_SUPPORT "OpenAL support" ON)
|
||||
option(SYSTEMWIDE_SUPPORT "Enable systemwide installation of game assets" OFF)
|
||||
option(SDL3_SUPPORT "Build against SDL 3 instead of SDL2" OFF)
|
||||
option(GL1_RENDERER "Build the GL3 renderer" ON)
|
||||
option(GL3_RENDERER "Build the GL3 renderer" ON)
|
||||
option(GLES1_RENDERER "Build the GLES1 renderer" OFF)
|
||||
option(GLES3_RENDERER "Build the GLES3 renderer" ON)
|
||||
option(SOFT_RENDERER "Build the software renderer" ON)
|
||||
|
||||
set(SYSTEMDIR "" CACHE STRING "Override the system default directory")
|
||||
|
||||
|
@ -189,11 +194,13 @@ else()
|
|||
list(APPEND yquake2SDLLinkerFlags ${SDL2_LIBRARY})
|
||||
endif()
|
||||
|
||||
# We need an OpenGL implementation.
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
find_package(OpenGL REQUIRED)
|
||||
list(APPEND yquake2IncludeDirectories ${OPENGL_INCLUDE_DIR})
|
||||
list(APPEND yquake2OpenGLLinkerFlags ${OPENGL_LIBRARIES})
|
||||
if(GL1_RENDERER)
|
||||
# We need an OpenGL implementation.
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
find_package(OpenGL REQUIRED)
|
||||
list(APPEND yquake2IncludeDirectories ${OPENGL_INCLUDE_DIR})
|
||||
list(APPEND yquake2OpenGLLinkerFlags ${OPENGL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
# backtrace lookup
|
||||
# Some systems like Linux has it within the libc some like the BSD, Haiku ...
|
||||
|
@ -852,6 +859,8 @@ else() # single-config, like normal Makefiles
|
|||
endif()
|
||||
target_link_libraries(game ${yquake2LinkerFlags})
|
||||
|
||||
if(${GL1_RENDERER})
|
||||
|
||||
# Build the GL1 dynamic library
|
||||
add_library(ref_gl1 MODULE ${GL1-Source} ${GL1-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gl1 PROPERTIES
|
||||
|
@ -866,6 +875,10 @@ if(SDL3_SUPPORT)
|
|||
target_link_libraries(ref_gl1 SDL3::SDL3)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(${GL3_RENDERER})
|
||||
|
||||
# Build the GL3 dynamic library
|
||||
add_library(ref_gl3 MODULE ${GL3-Source} ${Glad-GL3-Source} ${GL3-Header} ${Glad-GL3-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gl3 PROPERTIES
|
||||
|
@ -880,6 +893,10 @@ if(SDL3_SUPPORT)
|
|||
target_link_libraries(ref_gl3 SDL3::SDL3)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(${GLES3_RENDERER})
|
||||
|
||||
# Build the GLES3 dynamic library
|
||||
add_library(ref_gles3 MODULE ${GL3-Source} ${Glad-GLES3-Source} ${GL3-Header} ${Glad-GLES3-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_gles3 PROPERTIES
|
||||
|
@ -896,6 +913,10 @@ if(SDL3_SUPPORT)
|
|||
target_link_libraries(ref_gles3 SDL3::SDL3)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(${SOFT_RENDERER})
|
||||
|
||||
# Build the soft renderer dynamic library
|
||||
add_library(ref_soft MODULE ${SOFT-Source} ${SOFT-Header} ${REF-Platform-Specific-Source})
|
||||
set_target_properties(ref_soft PROPERTIES
|
||||
|
@ -909,7 +930,9 @@ if(SDL3_SUPPORT)
|
|||
target_link_libraries(ref_soft SDL3::SDL3)
|
||||
endif()
|
||||
|
||||
if(FALSE)
|
||||
endif()
|
||||
|
||||
if(${GLES1_RENDERER})
|
||||
|
||||
# Build the GLES1 dynamic library
|
||||
add_library(ref_gles1 MODULE ${GL1-Source} ${Glad-GLES1-Source} ${GL1-Header} ${Glad-GLES1-Header} ${REF-Platform-Specific-Source})
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include "../../common/header/shared.h"
|
||||
#include "../../common/header/common.h"
|
||||
|
||||
#if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun)
|
||||
#if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) || defined(__APPLE__)
|
||||
#include <unistd.h> // readlink(), amongst others
|
||||
#endif
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
|||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h> // GetModuleFileNameA()
|
||||
#include <wchar.h> // _wgetcwd()
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
@ -146,6 +147,31 @@ static void SetExecutablePath(char* exePath)
|
|||
#endif
|
||||
}
|
||||
|
||||
qboolean Sys_GetCwd(char *buf, size_t size)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
WCHAR wpath[PATH_MAX];
|
||||
DWORD len;
|
||||
|
||||
if (_wgetcwd(wpath, PATH_MAX) == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
len = WideCharToMultiByte(CP_UTF8, 0, wpath, -1, buf, size, NULL, NULL);
|
||||
if (len <= 0 || len == size)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
if (getcwd(buf, size) == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
return Q_strlcat(buf, "/", size) == 1;
|
||||
}
|
||||
|
||||
|
||||
const char *Sys_GetBinaryDir(void)
|
||||
{
|
||||
static char exeDir[PATH_MAX] = {0};
|
||||
|
@ -157,8 +183,11 @@ const char *Sys_GetBinaryDir(void)
|
|||
SetExecutablePath(exeDir);
|
||||
|
||||
if (exeDir[0] == '\0') {
|
||||
Com_Printf("Couldn't determine executable path. Using ./ instead.\n");
|
||||
Q_strlcpy(exeDir, "./", sizeof(exeDir));
|
||||
if (Sys_GetCwd(exeDir, sizeof(exeDir)) == false)
|
||||
{
|
||||
Q_strlcpy(exeDir, "./", sizeof(exeDir));
|
||||
}
|
||||
Com_Printf("Couldn't determine executable path. Using %s instead.\n", exeDir);
|
||||
} else {
|
||||
// cut off executable name
|
||||
char *lastSlash = strrchr(exeDir, '/');
|
||||
|
|
|
@ -1909,6 +1909,10 @@ RE_InitContext(void *win)
|
|||
SDL_SetRenderVSync(renderer, 1);
|
||||
#else
|
||||
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
if(!renderer)
|
||||
{
|
||||
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE | SDL_RENDERER_PRESENTVSYNC);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
|
@ -1917,8 +1921,16 @@ RE_InitContext(void *win)
|
|||
renderer = SDL_CreateRenderer(window, NULL);
|
||||
#else
|
||||
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
|
||||
if(!renderer)
|
||||
{
|
||||
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if(!renderer) {
|
||||
Com_Printf("Can't create renderer: %s\n", SDL_GetError());
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Select the color for drawing. It is set to black here. */
|
||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
||||
|
@ -1964,7 +1976,10 @@ RE_InitContext(void *win)
|
|||
#endif
|
||||
SDL_TEXTUREACCESS_STREAMING,
|
||||
vid_buffer_width, vid_buffer_height);
|
||||
|
||||
if(!texture) {
|
||||
Com_Printf("Can't create texture: %s\n", SDL_GetError());
|
||||
return false;
|
||||
}
|
||||
R_InitGraphics(vid_buffer_width, vid_buffer_height);
|
||||
SWimp_CreateRender(vid_buffer_width, vid_buffer_height);
|
||||
|
||||
|
|
|
@ -720,13 +720,15 @@ GLimp_ShutdownGraphics(void)
|
|||
void
|
||||
GLimp_GrabInput(qboolean grab)
|
||||
{
|
||||
static qboolean seen_error = false;
|
||||
if(window != NULL)
|
||||
{
|
||||
SDL_SetWindowGrab(window, grab ? SDL_TRUE : SDL_FALSE);
|
||||
}
|
||||
|
||||
if(SDL_SetRelativeMouseMode(grab ? SDL_TRUE : SDL_FALSE) < 0)
|
||||
if(SDL_SetRelativeMouseMode(grab ? SDL_TRUE : SDL_FALSE) < 0 && !seen_error)
|
||||
{
|
||||
seen_error = true;
|
||||
Com_Printf("WARNING: Setting Relative Mousemode failed, reason: %s\n", SDL_GetError());
|
||||
Com_Printf(" You should probably update to SDL 2.0.3 or newer!\n");
|
||||
}
|
||||
|
|
|
@ -909,7 +909,7 @@ Cmd_CompleteMapCommand(const char *partial)
|
|||
{
|
||||
char **mapNames;
|
||||
int i, j, k, nbMatches, len, nMaps;
|
||||
char *mapName;
|
||||
char *mapName, *lastsep;
|
||||
char *pmatch[1024];
|
||||
qboolean partialFillContinue = true;
|
||||
|
||||
|
@ -921,9 +921,9 @@ Cmd_CompleteMapCommand(const char *partial)
|
|||
|
||||
for (i = 0; i < nMaps - 1; i++)
|
||||
{
|
||||
if (strrchr(mapNames[i], '/'))
|
||||
if ((lastsep = strrchr(mapNames[i], '/')))
|
||||
{
|
||||
mapName = strrchr(mapNames[i], '/') + 1;
|
||||
mapName = lastsep + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -325,7 +325,7 @@ SV_ListMaps_f(void)
|
|||
char **userMapNames;
|
||||
int nUserMaps = 0;
|
||||
int i;
|
||||
char* mapName;
|
||||
char* mapName, *lastsep;
|
||||
|
||||
Com_Printf("\n");
|
||||
|
||||
|
@ -333,9 +333,9 @@ SV_ListMaps_f(void)
|
|||
{
|
||||
for (i = 0; i < nUserMaps - 1; i++)
|
||||
{
|
||||
if (strrchr(userMapNames[i], '/'))
|
||||
if ((lastsep = strrchr(userMapNames[i], '/')))
|
||||
{
|
||||
mapName = strrchr(userMapNames[i], '/') + 1;
|
||||
mapName = lastsep + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue