mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-06-27 15:32:53 +00:00
migrated to SDL3
This commit is contained in:
parent
41ffba600f
commit
a80b74dc62
@ -165,7 +165,7 @@ void fix_font_size(int& size) {
|
|||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
|
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
#if HDR
|
#if HDR
|
||||||
typedef SDL_Surface SDL_Renderer;
|
typedef SDL_Surface SDL_Renderer;
|
||||||
#define srend s
|
#define srend s
|
||||||
@ -174,7 +174,7 @@ typedef SDL_Surface SDL_Renderer;
|
|||||||
|
|
||||||
EX SDL_Surface *s;
|
EX SDL_Surface *s;
|
||||||
EX SDL_Surface *s_screen;
|
EX SDL_Surface *s_screen;
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
EX SDL_Renderer *s_renderer, *s_software_renderer;
|
EX SDL_Renderer *s_renderer, *s_software_renderer;
|
||||||
#if HDR
|
#if HDR
|
||||||
#define srend s_software_renderer
|
#define srend s_software_renderer
|
||||||
@ -196,10 +196,14 @@ EX color_t& qpixel(SDL_Surface *surf, int x, int y) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX void present_surface() {
|
EX void present_surface() {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
SDL_UpdateTexture(s_texture, nullptr, s->pixels, s->w * sizeof (Uint32));
|
SDL_UpdateTexture(s_texture, nullptr, s->pixels, s->w * sizeof (Uint32));
|
||||||
SDL_RenderClear(s_renderer);
|
SDL_RenderClear(s_renderer);
|
||||||
|
#if SDLVER >= 3
|
||||||
|
SDL_RenderTexture(s_renderer, s_texture, nullptr, nullptr);
|
||||||
|
#else
|
||||||
SDL_RenderCopy(s_renderer, s_texture, nullptr, nullptr);
|
SDL_RenderCopy(s_renderer, s_texture, nullptr, nullptr);
|
||||||
|
#endif
|
||||||
SDL_RenderPresent(s_renderer);
|
SDL_RenderPresent(s_renderer);
|
||||||
#else
|
#else
|
||||||
SDL_UpdateRect(s, 0, 0, 0, 0);
|
SDL_UpdateRect(s, 0, 0, 0, 0);
|
||||||
@ -209,7 +213,7 @@ EX void present_surface() {
|
|||||||
EX void present_screen() {
|
EX void present_screen() {
|
||||||
#if CAP_GL
|
#if CAP_GL
|
||||||
if(vid.usingGL) {
|
if(vid.usingGL) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
SDL_GL_SwapWindow(s_window);
|
SDL_GL_SwapWindow(s_window);
|
||||||
#else
|
#else
|
||||||
SDL_GL_SwapBuffers();
|
SDL_GL_SwapBuffers();
|
||||||
@ -610,7 +614,7 @@ EX void init_glfont(int size) {
|
|||||||
fix_font_size(siz);
|
fix_font_size(siz);
|
||||||
if(ch < 128) {
|
if(ch < 128) {
|
||||||
str[0] = ch;
|
str[0] = ch;
|
||||||
txt = TTF_RenderText_Blended(cfont->font[siz], str, white);
|
txt = TTF_RenderUTF8_Blended(cfont->font[siz], str, white);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
txt = TTF_RenderUTF8_Blended(cfont->font[siz], natchars[ch-128], white);
|
txt = TTF_RenderUTF8_Blended(cfont->font[siz], natchars[ch-128], white);
|
||||||
@ -620,7 +624,7 @@ EX void init_glfont(int size) {
|
|||||||
generateFont(ch, txt);
|
generateFont(ch, txt);
|
||||||
#endif
|
#endif
|
||||||
sdltogl(txt, f, ch);
|
sdltogl(txt, f, ch);
|
||||||
SDL_FreeSurface(txt);
|
SDL_DestroySurface(txt);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -895,7 +899,9 @@ EX bool displaystr(int x, int y, int shift, int size, const char *str, color_t c
|
|||||||
bool clicked = (mousex >= rect.x && mousey >= rect.y && mousex <= rect.x+rect.w && mousey <= rect.y+rect.h);
|
bool clicked = (mousex >= rect.x && mousey >= rect.y && mousex <= rect.x+rect.w && mousey <= rect.y+rect.h);
|
||||||
|
|
||||||
if(shift) {
|
if(shift) {
|
||||||
#if CAP_SDL2
|
#if SDLVER == 3
|
||||||
|
SDL_Surface* txt2 = SDL_ConvertSurface(txt, SDL_PIXELFORMAT_RGBA8888);
|
||||||
|
#elif SDLVER == 2
|
||||||
SDL_Surface* txt2 = SDL_ConvertSurfaceFormat(txt, SDL_PIXELFORMAT_RGBA8888, 0);
|
SDL_Surface* txt2 = SDL_ConvertSurfaceFormat(txt, SDL_PIXELFORMAT_RGBA8888, 0);
|
||||||
#else
|
#else
|
||||||
SDL_Surface* txt2 = SDL_DisplayFormat(txt);
|
SDL_Surface* txt2 = SDL_DisplayFormat(txt);
|
||||||
@ -909,12 +915,12 @@ EX bool displaystr(int x, int y, int shift, int size, const char *str, color_t c
|
|||||||
qpixel(s, rect.x+xx+shift, rect.y+yy) |= color & 0x00FFFF;
|
qpixel(s, rect.x+xx+shift, rect.y+yy) |= color & 0x00FFFF;
|
||||||
SDL_UnlockSurface(s);
|
SDL_UnlockSurface(s);
|
||||||
SDL_UnlockSurface(txt2);
|
SDL_UnlockSurface(txt2);
|
||||||
SDL_FreeSurface(txt2);
|
SDL_DestroySurface(txt2);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SDL_BlitSurface(txt, NULL, s,&rect);
|
SDL_BlitSurface(txt, NULL, s,&rect);
|
||||||
}
|
}
|
||||||
SDL_FreeSurface(txt);
|
SDL_DestroySurface(txt);
|
||||||
|
|
||||||
return clicked;
|
return clicked;
|
||||||
#endif
|
#endif
|
||||||
@ -1256,19 +1262,19 @@ EX bool need_to_apply_screen_settings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX void close_renderer() {
|
EX void close_renderer() {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
||||||
if(s_texture) SDL_DestroyTexture(s_texture), s_texture = nullptr;
|
if(s_texture) SDL_DestroyTexture(s_texture), s_texture = nullptr;
|
||||||
if(s) SDL_FreeSurface(s), s = nullptr;
|
if(s) SDL_DestroySurface(s), s = nullptr;
|
||||||
if(s_software_renderer) SDL_DestroyRenderer(s_software_renderer), s_software_renderer = nullptr;
|
if(s_software_renderer) SDL_DestroyRenderer(s_software_renderer), s_software_renderer = nullptr;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void close_window() {
|
EX void close_window() {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
close_renderer();
|
close_renderer();
|
||||||
if(s_have_context) {
|
if(s_have_context) {
|
||||||
SDL_GL_DeleteContext(s_context), s_have_context = false;
|
SDL_GL_DestroyContext(s_context), s_have_context = false;
|
||||||
}
|
}
|
||||||
if(s_window) SDL_DestroyWindow(s_window), s_window = nullptr;
|
if(s_window) SDL_DestroyWindow(s_window), s_window = nullptr;
|
||||||
#endif
|
#endif
|
||||||
@ -1289,7 +1295,7 @@ EX void apply_screen_settings() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
if(need_to_reopen_window())
|
if(need_to_reopen_window())
|
||||||
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
||||||
#endif
|
#endif
|
||||||
@ -1352,12 +1358,12 @@ EX void setvideomode() {
|
|||||||
#if CAP_GL
|
#if CAP_GL
|
||||||
vid.usingGL = vid.wantGL;
|
vid.usingGL = vid.wantGL;
|
||||||
if(vid.usingGL) {
|
if(vid.usingGL) {
|
||||||
flags = SDL12(SDL_OPENGL | SDL_HWSURFACE, SDL_WINDOW_OPENGL | SDL_WINDOW_ALLOW_HIGHDPI);
|
flags = SDL12(SDL_OPENGL | SDL_HWSURFACE, SDL_WINDOW_OPENGL | SDL_WINDOW_HIGH_PIXEL_DENSITY);
|
||||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
|
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
|
||||||
|
|
||||||
vid.current_vsync = want_vsync();
|
vid.current_vsync = want_vsync();
|
||||||
#if !ISMOBWEB && !CAP_SDL2
|
#if !ISMOBWEB && SDLVER == 1
|
||||||
if(vid.current_vsync)
|
if(vid.current_vsync)
|
||||||
SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, 1 );
|
SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, 1 );
|
||||||
else
|
else
|
||||||
@ -1393,15 +1399,15 @@ EX void setvideomode() {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
auto create_win = [&] {
|
auto create_win = [&] {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(s_window && current_window_flags != (flags | sizeflag)) {
|
if(s_window && current_window_flags != (flags | sizeflag)) {
|
||||||
if(s_have_context) {
|
if(s_have_context) {
|
||||||
SDL_GL_DeleteContext(s_context), s_have_context = false;
|
SDL_GL_DestroyContext(s_context), s_have_context = false;
|
||||||
glhr::glew = false;
|
glhr::glew = false;
|
||||||
}
|
}
|
||||||
SDL_DestroyWindow(s_window), s_window = nullptr;
|
SDL_DestroyWindow(s_window), s_window = nullptr;
|
||||||
@ -1409,10 +1415,7 @@ EX void setvideomode() {
|
|||||||
if(s_window)
|
if(s_window)
|
||||||
SDL_SetWindowSize(s_window, vid.xres, vid.yres);
|
SDL_SetWindowSize(s_window, vid.xres, vid.yres);
|
||||||
else
|
else
|
||||||
s_window = SDL_CreateWindow(CUSTOM_CAPTION, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
s_window = SDL_CreateWindow(CUSTOM_CAPTION, vid.xres, vid.yres, flags | sizeflag);
|
||||||
vid.xres, vid.yres,
|
|
||||||
flags | sizeflag
|
|
||||||
);
|
|
||||||
current_window_flags = (flags | sizeflag);
|
current_window_flags = (flags | sizeflag);
|
||||||
#else
|
#else
|
||||||
s = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | sizeflag);
|
s = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | sizeflag);
|
||||||
@ -1441,15 +1444,23 @@ EX void setvideomode() {
|
|||||||
create_win();
|
create_win();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
||||||
|
|
||||||
|
#if SDLVER >= 3
|
||||||
|
s_renderer = SDL_CreateRenderer(s_window, nullptr);
|
||||||
|
SDL_SetRenderVSync(s_renderer, vid.current_vsync ? 1 : SDL_RENDERER_VSYNC_DISABLED);
|
||||||
|
// todo VSYNC -- , SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER
|
||||||
|
#else
|
||||||
s_renderer = SDL_CreateRenderer(s_window, -1, vid.current_vsync ? SDL_RENDERER_PRESENTVSYNC : 0);
|
s_renderer = SDL_CreateRenderer(s_window, -1, vid.current_vsync ? SDL_RENDERER_PRESENTVSYNC : 0);
|
||||||
SDL_GetRendererOutputSize(s_renderer, &vid.xres, &vid.yres);
|
#endif
|
||||||
|
|
||||||
|
SDL_GetCurrentRenderOutputSize(s_renderer, &vid.xres, &vid.yres);
|
||||||
|
|
||||||
if(s_texture) SDL_DestroyTexture(s_texture), s_texture = nullptr;
|
if(s_texture) SDL_DestroyTexture(s_texture), s_texture = nullptr;
|
||||||
s_texture = SDL_CreateTexture(s_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, vid.xres, vid.yres);
|
s_texture = SDL_CreateTexture(s_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, vid.xres, vid.yres);
|
||||||
|
|
||||||
if(s) SDL_FreeSurface(s), s = nullptr;
|
if(s) SDL_DestroySurface(s), s = nullptr;
|
||||||
s = shot::empty_surface(vid.xres, vid.yres, false);
|
s = shot::empty_surface(vid.xres, vid.yres, false);
|
||||||
|
|
||||||
if(s_software_renderer) SDL_DestroyRenderer(s_software_renderer), s_software_renderer = nullptr;
|
if(s_software_renderer) SDL_DestroyRenderer(s_software_renderer), s_software_renderer = nullptr;
|
||||||
@ -1469,8 +1480,8 @@ EX void setvideomode() {
|
|||||||
glDisable(GL_MULTISAMPLE_ARB);
|
glDisable(GL_MULTISAMPLE_ARB);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(s_have_context) SDL_GL_DeleteContext(s_context), s_have_context = false;
|
if(s_have_context) SDL_GL_DestroyContext(s_context), s_have_context = false;
|
||||||
if(!s_have_context) s_context = SDL_GL_CreateContext(s_window);
|
if(!s_have_context) s_context = SDL_GL_CreateContext(s_window);
|
||||||
s_have_context = true; glhr::glew = false;
|
s_have_context = true; glhr::glew = false;
|
||||||
#endif
|
#endif
|
||||||
@ -1487,13 +1498,14 @@ EX bool noGUI = false;
|
|||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
EX bool sdl_on = false;
|
EX bool sdl_on = false;
|
||||||
EX int SDL_Init1(Uint32 flags) {
|
EX bool SDL_Init1(Uint32 flags) {
|
||||||
if(!sdl_on) {
|
if(!sdl_on) {
|
||||||
sdl_on = true;
|
sdl_on = true;
|
||||||
return SDL_Init(flags);
|
return !SDL_error_in(SDL_Init(flags));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return !SDL_error_in(SDL_InitSubSystem(flags));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return SDL_InitSubSystem(flags);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1510,7 +1522,7 @@ EX void set_cfont() {
|
|||||||
|
|
||||||
EX void init_font() {
|
EX void init_font() {
|
||||||
#if CAP_SDLTTF
|
#if CAP_SDLTTF
|
||||||
if(TTF_Init() != 0) {
|
if(SDL_error_in(TTF_Init())) {
|
||||||
printf("Failed to initialize TTF.\n");
|
printf("Failed to initialize TTF.\n");
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
@ -1542,7 +1554,7 @@ EX void close_font() {
|
|||||||
|
|
||||||
EX void init_graph() {
|
EX void init_graph() {
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
if (SDL_Init1(SDL_INIT_VIDEO) == -1)
|
if (!SDL_Init1(SDL_INIT_VIDEO))
|
||||||
{
|
{
|
||||||
printf("Failed to initialize video.\n");
|
printf("Failed to initialize video.\n");
|
||||||
exit(2);
|
exit(2);
|
||||||
@ -1552,7 +1564,15 @@ EX void init_graph() {
|
|||||||
get_canvas_size();
|
get_canvas_size();
|
||||||
#else
|
#else
|
||||||
if(!vid.xscr) {
|
if(!vid.xscr) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 3
|
||||||
|
int count;
|
||||||
|
auto displays = SDL_GetDisplays(&count);
|
||||||
|
if(!count) { println(hlog, "error: no displays"); return; }
|
||||||
|
const SDL_DisplayMode* dm = SDL_GetCurrentDisplayMode(displays[0]);
|
||||||
|
if(!dm) println(hlog, "SDL_GetCurrentDisplayMode error: ", SDL_GetError());
|
||||||
|
if(dm) vid.xscr = vid.xres = dm->w;
|
||||||
|
if(dm) vid.yscr = vid.yres = dm->h;
|
||||||
|
#elif SDLVER >= 2
|
||||||
SDL_DisplayMode dm;
|
SDL_DisplayMode dm;
|
||||||
SDL_GetCurrentDisplayMode(0, &dm);
|
SDL_GetCurrentDisplayMode(0, &dm);
|
||||||
vid.xscr = vid.xres = dm.w;
|
vid.xscr = vid.xres = dm.w;
|
||||||
@ -1565,7 +1585,7 @@ EX void init_graph() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
SDL_WM_SetCaption(CUSTOM_CAPTION, CUSTOM_CAPTION);
|
SDL_WM_SetCaption(CUSTOM_CAPTION, CUSTOM_CAPTION);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -1587,7 +1607,7 @@ EX void init_graph() {
|
|||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
||||||
SDL_EnableUNICODE(1);
|
SDL_EnableUNICODE(1);
|
||||||
#endif
|
#endif
|
||||||
|
@ -118,7 +118,7 @@ EX color_t rainbow_color(ld sat, ld hue) {
|
|||||||
|
|
||||||
/** Adjust col to SDL_gfx functions. No adjustment is needed in SDL 1.2, but it is needed in SDL2 */
|
/** Adjust col to SDL_gfx functions. No adjustment is needed in SDL 1.2, but it is needed in SDL2 */
|
||||||
EX color_t align(color_t col) {
|
EX color_t align(color_t col) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
swap(part(col, 0), part(col, 3));
|
swap(part(col, 0), part(col, 3));
|
||||||
swap(part(col, 1), part(col, 2));
|
swap(part(col, 1), part(col, 2));
|
||||||
#endif
|
#endif
|
||||||
|
129
control.cpp
129
control.cpp
@ -32,7 +32,7 @@ EX int slider_x;
|
|||||||
EX function <void(int sym, int uni)> keyhandler = [] (int sym, int uni) {};
|
EX function <void(int sym, int uni)> keyhandler = [] (int sym, int uni) {};
|
||||||
EX function <bool(SDL_Event &ev)> joyhandler = [] (SDL_Event &ev) {return false;};
|
EX function <bool(SDL_Event &ev)> joyhandler = [] (SDL_Event &ev) {return false;};
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
EX void ignore_text(const SDL_TextInputEvent&) {}
|
EX void ignore_text(const SDL_TextInputEvent&) {}
|
||||||
EX function <void(const SDL_TextInputEvent&)> texthandler = ignore_text;
|
EX function <void(const SDL_TextInputEvent&)> texthandler = ignore_text;
|
||||||
#endif
|
#endif
|
||||||
@ -40,7 +40,7 @@ EX function <void(const SDL_TextInputEvent&)> texthandler = ignore_text;
|
|||||||
EX void reset_handlers() {
|
EX void reset_handlers() {
|
||||||
keyhandler = [] (int sym, int uni) {};
|
keyhandler = [] (int sym, int uni) {};
|
||||||
joyhandler = [] (SDL_Event &ev) {return false;};
|
joyhandler = [] (SDL_Event &ev) {return false;};
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
texthandler = ignore_text;
|
texthandler = ignore_text;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -253,10 +253,14 @@ EX void initJoysticks_async() {
|
|||||||
|
|
||||||
EX void countJoysticks() {
|
EX void countJoysticks() {
|
||||||
DEBB(DF_INIT, ("opening joysticks"));
|
DEBB(DF_INIT, ("opening joysticks"));
|
||||||
|
#if SDLVER <= 2
|
||||||
numsticks = SDL_NumJoysticks();
|
numsticks = SDL_NumJoysticks();
|
||||||
|
#else
|
||||||
|
SDL_GetJoysticks(&numsticks);
|
||||||
|
#endif
|
||||||
if(numsticks > 8) numsticks = 8;
|
if(numsticks > 8) numsticks = 8;
|
||||||
for(int i=0; i<numsticks; i++) {
|
for(int i=0; i<numsticks; i++) {
|
||||||
sticks[i] = SDL_JoystickOpen(i);
|
sticks[i] = SDL_OpenJoystick(i);
|
||||||
/* printf("axes = %d, balls = %d, buttons = %d, hats = %d\n",
|
/* printf("axes = %d, balls = %d, buttons = %d, hats = %d\n",
|
||||||
SDL_JoystickNumAxes(sticks[i]),
|
SDL_JoystickNumAxes(sticks[i]),
|
||||||
SDL_JoystickNumBalls(sticks[i]),
|
SDL_JoystickNumBalls(sticks[i]),
|
||||||
@ -271,7 +275,7 @@ EX void initJoysticks() {
|
|||||||
DEBBI(DF_INIT, ("init joystick"));
|
DEBBI(DF_INIT, ("init joystick"));
|
||||||
|
|
||||||
DEBB(DF_INIT, ("init joystick subsystem"));
|
DEBB(DF_INIT, ("init joystick subsystem"));
|
||||||
if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1)
|
if (SDL_error_in(SDL_InitSubSystem(SDL_INIT_JOYSTICK)))
|
||||||
{
|
{
|
||||||
printf("Failed to initialize joysticks.\n");
|
printf("Failed to initialize joysticks.\n");
|
||||||
numsticks = 0;
|
numsticks = 0;
|
||||||
@ -285,7 +289,7 @@ EX void initJoysticks() {
|
|||||||
EX void closeJoysticks() {
|
EX void closeJoysticks() {
|
||||||
DEBB(DF_INIT, ("close joysticks"));
|
DEBB(DF_INIT, ("close joysticks"));
|
||||||
for(int i=0; i<numsticks; i++) {
|
for(int i=0; i<numsticks; i++) {
|
||||||
SDL_JoystickClose(sticks[i]), sticks[i] = NULL;
|
SDL_CloseJoystick(sticks[i]), sticks[i] = NULL;
|
||||||
}
|
}
|
||||||
numsticks = 0;
|
numsticks = 0;
|
||||||
}
|
}
|
||||||
@ -834,8 +838,10 @@ EX void mainloopiter() {
|
|||||||
oldmousepan = mousepan;
|
oldmousepan = mousepan;
|
||||||
#if CAP_MOUSEGRAB
|
#if CAP_MOUSEGRAB
|
||||||
if(mousepan) {
|
if(mousepan) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 3
|
||||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
SDL_SetWindowRelativeMouseMode(s_window, true);
|
||||||
|
#elif SDLVER >= 2
|
||||||
|
SDL_SetRelativeMouseMode(SDL23(SDL_TRUE, true));
|
||||||
#else
|
#else
|
||||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
@ -843,8 +849,10 @@ EX void mainloopiter() {
|
|||||||
mouseaim_x = mouseaim_y = 0;
|
mouseaim_x = mouseaim_y = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 3
|
||||||
SDL_SetRelativeMouseMode(SDL_FALSE);
|
SDL_SetWindowRelativeMouseMode(s_window, false);
|
||||||
|
#elif SDLVER >= 2
|
||||||
|
SDL_SetRelativeMouseMode(SDL23(SDL_FALSE, false));
|
||||||
#else
|
#else
|
||||||
SDL_WM_GrabInput( SDL_GRAB_OFF );
|
SDL_WM_GrabInput( SDL_GRAB_OFF );
|
||||||
SDL_ShowCursor(SDL_ENABLE);
|
SDL_ShowCursor(SDL_ENABLE);
|
||||||
@ -860,7 +868,7 @@ EX void mainloopiter() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(timetowait > 0) {
|
if(timetowait > 0) {
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
SDL_Delay(timetowait);
|
SDL_Delay(timetowait);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -890,10 +898,9 @@ EX void mainloopiter() {
|
|||||||
|
|
||||||
getcshift = 1;
|
getcshift = 1;
|
||||||
|
|
||||||
#if CAP_SDL2
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
|
|
||||||
const Uint8 *keystate = SDL_GetKeyboardState(NULL);
|
|
||||||
|
|
||||||
|
#if SDLVER >= 2
|
||||||
pandora_rightclick = keystate[SDL_SCANCODE_RCTRL];
|
pandora_rightclick = keystate[SDL_SCANCODE_RCTRL];
|
||||||
pandora_leftclick = keystate[SDL_SCANCODE_RSHIFT];
|
pandora_leftclick = keystate[SDL_SCANCODE_RSHIFT];
|
||||||
|
|
||||||
@ -909,9 +916,6 @@ EX void mainloopiter() {
|
|||||||
if(keystate[SDL_SCANCODE_LALT] || keystate[SDL_SCANCODE_RALT]) getcshift *= 10;
|
if(keystate[SDL_SCANCODE_LALT] || keystate[SDL_SCANCODE_RALT]) getcshift *= 10;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
|
||||||
|
|
||||||
pandora_rightclick = keystate[SDLK_RCTRL];
|
pandora_rightclick = keystate[SDLK_RCTRL];
|
||||||
pandora_leftclick = keystate[SDLK_RSHIFT];
|
pandora_leftclick = keystate[SDLK_RSHIFT];
|
||||||
|
|
||||||
@ -1002,7 +1006,7 @@ EX void mainloopiter() {
|
|||||||
ld t = (ticks - lastticks) * shiftmul / 1000.;
|
ld t = (ticks - lastticks) * shiftmul / 1000.;
|
||||||
lastticks = ticks;
|
lastticks = ticks;
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(keystate[SDL_SCANCODE_END] && GDIM == 3 && DEFAULTNOR(SDL_SCANCODE_END)) full_forward_camera(-t);
|
if(keystate[SDL_SCANCODE_END] && GDIM == 3 && DEFAULTNOR(SDL_SCANCODE_END)) full_forward_camera(-t);
|
||||||
if(keystate[SDL_SCANCODE_HOME] && GDIM == 3 && DEFAULTNOR(SDL_SCANCODE_HOME)) full_forward_camera(t);
|
if(keystate[SDL_SCANCODE_HOME] && GDIM == 3 && DEFAULTNOR(SDL_SCANCODE_HOME)) full_forward_camera(t);
|
||||||
if(keystate[SDL_SCANCODE_RIGHT] && DEFAULTNOR(SDL_SCANCODE_RIGHT)) full_rotate_camera(0, -t);
|
if(keystate[SDL_SCANCODE_RIGHT] && DEFAULTNOR(SDL_SCANCODE_RIGHT)) full_rotate_camera(0, -t);
|
||||||
@ -1032,7 +1036,7 @@ EX void mainloopiter() {
|
|||||||
ld t = (ticks - lastticks) * shiftmul / 1000.;
|
ld t = (ticks - lastticks) * shiftmul / 1000.;
|
||||||
lastticks = ticks;
|
lastticks = ticks;
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
#define dkey(x) keystate[int(x - 'a' + 4)] && DEFAULTNOR(x - 'a' + 4)
|
#define dkey(x) keystate[int(x - 'a' + 4)] && DEFAULTNOR(x - 'a' + 4)
|
||||||
#else
|
#else
|
||||||
#define dkey(x) keystate[int(x)] && DEFAULTNOR(x)
|
#define dkey(x) keystate[int(x)] && DEFAULTNOR(x)
|
||||||
@ -1073,7 +1077,7 @@ EX void mainloopiter() {
|
|||||||
if(((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_MMASK)) && !mouseout2())
|
if(((SDL_GetMouseState(NULL, NULL) & SDL_BUTTON_MMASK)) && !mouseout2())
|
||||||
currently_scrolling = true;
|
currently_scrolling = true;
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(timetowait > 0) {
|
if(timetowait > 0) {
|
||||||
if(SDL_WaitEventTimeout(&ev, timetowait)) handle_event(ev);
|
if(SDL_WaitEventTimeout(&ev, timetowait)) handle_event(ev);
|
||||||
}
|
}
|
||||||
@ -1102,7 +1106,14 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
countJoysticks();
|
countJoysticks();
|
||||||
} */
|
} */
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER == 3
|
||||||
|
if(ev.type == SDL_EVENT_WINDOW_MOUSE_ENTER) outoffocus = false;
|
||||||
|
if(ev.type == SDL_EVENT_WINDOW_MOUSE_LEAVE) outoffocus = true;
|
||||||
|
if(ev.type == SDL_EVENT_WINDOW_EXPOSED) drawscreen();
|
||||||
|
if(ev.type == SDL_EVENT_WINDOW_RESIZED) resize_screen_to(ev.window.data1, ev.window.data2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER == 2
|
||||||
if(ev.type == SDL_WINDOWEVENT) {
|
if(ev.type == SDL_WINDOWEVENT) {
|
||||||
auto w = ev.window.event;
|
auto w = ev.window.event;
|
||||||
if(w == SDL_WINDOWEVENT_ENTER)
|
if(w == SDL_WINDOWEVENT_ENTER)
|
||||||
@ -1114,8 +1125,9 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
if(w == SDL_WINDOWEVENT_RESIZED)
|
if(w == SDL_WINDOWEVENT_RESIZED)
|
||||||
resize_screen_to(ev.window.data1, ev.window.data2);
|
resize_screen_to(ev.window.data1, ev.window.data2);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#if SDLVER == 1
|
||||||
if(ev.type == SDL_ACTIVEEVENT) {
|
if(ev.type == SDL_ACTIVEEVENT) {
|
||||||
if(ev.active.state & SDL_APPINPUTFOCUS) {
|
if(ev.active.state & SDL_APPINPUTFOCUS) {
|
||||||
if(ev.active.gain) {
|
if(ev.active.gain) {
|
||||||
@ -1136,7 +1148,7 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDLJOY
|
#if CAP_SDLJOY
|
||||||
if(ev.type == SDL_JOYAXISMOTION && normal && DEFAULTCONTROL) {
|
if(ev.type == SDL_EVENT_JOYSTICK_AXIS_MOTION && normal && DEFAULTCONTROL) {
|
||||||
if(ev.jaxis.which == 0) {
|
if(ev.jaxis.which == 0) {
|
||||||
if(ev.jaxis.axis == 0)
|
if(ev.jaxis.axis == 0)
|
||||||
joyx = ev.jaxis.value;
|
joyx = ev.jaxis.value;
|
||||||
@ -1159,64 +1171,65 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
|
|
||||||
if(joyhandler && joyhandler(ev)) ;
|
if(joyhandler && joyhandler(ev)) ;
|
||||||
|
|
||||||
else if(ev.type == SDL_JOYHATMOTION && !normal) {
|
else if(ev.type == SDL_EVENT_JOYSTICK_HAT_MOTION && !normal) {
|
||||||
if(ev.jhat.value == SDL_HAT_UP) sym = SDLK_UP;
|
if(ev.jhat.value == SDL_HAT_UP) sym = SDLK_UP;
|
||||||
if(ev.jhat.value == SDL_HAT_DOWN) sym = SDLK_DOWN;
|
if(ev.jhat.value == SDL_HAT_DOWN) sym = SDLK_DOWN;
|
||||||
if(ev.jhat.value == SDL_HAT_LEFT) sym = SDLK_LEFT;
|
if(ev.jhat.value == SDL_HAT_LEFT) sym = SDLK_LEFT;
|
||||||
if(ev.jhat.value == SDL_HAT_RIGHT) sym = SDLK_RIGHT;
|
if(ev.jhat.value == SDL_HAT_RIGHT) sym = SDLK_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(ev.type == SDL_JOYBUTTONDOWN && normal && DEFAULTCONTROL) {
|
else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && normal && DEFAULTCONTROL) {
|
||||||
flashMessages();
|
flashMessages();
|
||||||
movepcto(joydir);
|
movepcto(joydir);
|
||||||
joy_ignore_next = true;
|
joy_ignore_next = true;
|
||||||
checkjoy();
|
checkjoy();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(ev.type == SDL_JOYBUTTONDOWN && !normal) {
|
else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && !normal) {
|
||||||
sym = uni = SDLK_RETURN;
|
sym = uni = SDLK_RETURN;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(ev.type == SDL_KEYDOWN) {
|
if(ev.type == SDL_EVENT_KEY_DOWN) {
|
||||||
flashMessages();
|
flashMessages();
|
||||||
mousing = false;
|
mousing = false;
|
||||||
sym = ev.key.keysym.sym;
|
sym = SDL23(ev.key.keysym.sym, ev.key.key);
|
||||||
#if CAP_SDL2
|
auto mod = SDL23(ev.key.keysym.mod, ev.key.mod);
|
||||||
uni = ev.key.keysym.sym;
|
#if SDLVER >= 2
|
||||||
if(uni == '=' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '+';
|
uni = SDL23(ev.key.keysym.sym, ev.key.key);
|
||||||
if(uni == '1' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '!';
|
if(uni == '=' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '+';
|
||||||
if(uni == '2' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '@';
|
if(uni == '1' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '!';
|
||||||
if(uni == '3' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '#';
|
if(uni == '2' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '@';
|
||||||
if(uni == '4' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '$';
|
if(uni == '3' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '#';
|
||||||
if(uni == '5' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '%';
|
if(uni == '4' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '$';
|
||||||
if(uni == '6' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '^';
|
if(uni == '5' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '%';
|
||||||
if(uni == '7' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '&';
|
if(uni == '6' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '^';
|
||||||
if(uni == '8' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '*';
|
if(uni == '7' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '&';
|
||||||
if(uni == '9' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = '(';
|
if(uni == '8' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '*';
|
||||||
if(uni == '0' && (ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) uni = ')';
|
if(uni == '9' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = '(';
|
||||||
|
if(uni == '0' && (mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT))) uni = ')';
|
||||||
if(uni >= 'a' && uni <= 'z') {
|
if(uni >= 'a' && uni <= 'z') {
|
||||||
if(ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) uni -= 32;
|
if(mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT)) uni -= 32;
|
||||||
else if(ev.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) uni -= 96;
|
else if(mod & (SDL_KMOD_LCTRL | SDL_KMOD_RCTRL)) uni -= 96;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
uni = ev.key.keysym.unicode;
|
uni = ev.key.keysym.unicode;
|
||||||
if(uni == 0 && (sym >= 'a' && sym <= 'z')) {
|
if(uni == 0 && (sym >= 'a' && sym <= 'z')) {
|
||||||
if(ev.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) uni = sym - 96;
|
if(ev.key.keysym.mod & (SDL_KMOD_LCTRL | SDL_KMOD_RCTRL)) uni = sym - 96;
|
||||||
}
|
}
|
||||||
if(ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) shiftmul = -1;
|
if(ev.key.keysym.mod & (SDL_KMOD_LSHIFT | SDL_KMOD_RSHIFT)) shiftmul = -1;
|
||||||
if(ev.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) shiftmul /= 10;
|
if(ev.key.keysym.mod & (SDL_KMOD_LCTRL | SDL_KMOD_RCTRL)) shiftmul /= 10;
|
||||||
#endif
|
#endif
|
||||||
numlock_on = ev.key.keysym.mod & KMOD_NUM;
|
numlock_on = mod & SDL_KMOD_NUM;
|
||||||
if(sym == SDLK_RETURN && (ev.key.keysym.mod & (KMOD_LALT | KMOD_RALT))) {
|
if(sym == SDLK_RETURN && (mod & (SDL_KMOD_LALT | SDL_KMOD_RALT))) {
|
||||||
sym = 0; uni = 0;
|
sym = 0; uni = 0;
|
||||||
vid.want_fullscreen = !vid.want_fullscreen;
|
vid.want_fullscreen = !vid.want_fullscreen;
|
||||||
apply_screen_settings();
|
apply_screen_settings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
if(ev.type == SDL_TEXTINPUT) {
|
if(ev.type == SDL_EVENT_TEXT_INPUT) {
|
||||||
texthandler(ev.text);
|
texthandler(ev.text);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1228,8 +1241,8 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
|
|
||||||
bool rollchange = (cmode & sm::OVERVIEW) && getcstat >= 2000 && cheater;
|
bool rollchange = (cmode & sm::OVERVIEW) && getcstat >= 2000 && cheater;
|
||||||
|
|
||||||
if(ev.type == SDL_MOUSEBUTTONDOWN || ev.type == SDL_MOUSEBUTTONUP SDL12(, || ev.type == SDL_MOUSEWHEEL)) {
|
if(ev.type == SDL_EVENT_MOUSE_BUTTON_DOWN || ev.type == SDL_EVENT_MOUSE_BUTTON_UP SDL12(, || ev.type == SDL_EVENT_MOUSE_WHEEL)) {
|
||||||
mousepressed = ev.type == SDL_MOUSEBUTTONDOWN;
|
mousepressed = ev.type == SDL_EVENT_MOUSE_BUTTON_DOWN;
|
||||||
if(mousepressed) flashMessages();
|
if(mousepressed) flashMessages();
|
||||||
mousing = true;
|
mousing = true;
|
||||||
which_pointer = 0;
|
which_pointer = 0;
|
||||||
@ -1237,8 +1250,8 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
holdmouse = false;
|
holdmouse = false;
|
||||||
invslider = false;
|
invslider = false;
|
||||||
|
|
||||||
bool down = ev.type == SDL_MOUSEBUTTONDOWN SDL12(, || ev.type == SDL_MOUSEWHEEL);
|
bool down = ev.type == SDL_EVENT_MOUSE_BUTTON_DOWN SDL12(, || ev.type == SDL_EVENT_MOUSE_WHEEL);
|
||||||
bool up = ev.type == SDL_MOUSEBUTTONUP;
|
bool up = ev.type == SDL_EVENT_MOUSE_BUTTON_UP;
|
||||||
|
|
||||||
bool act = false;
|
bool act = false;
|
||||||
|
|
||||||
@ -1273,8 +1286,8 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
sym = getcstat, uni = getcstat, shiftmul = getcshift;
|
sym = getcstat, uni = getcstat, shiftmul = getcshift;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(SDL12(ev.button.button==SDL_BUTTON_WHEELDOWN || ev.button.button == SDL_BUTTON_WHEELUP, ev.type == SDL_MOUSEWHEEL)) {
|
else if(SDL12(ev.button.button==SDL_BUTTON_WHEELDOWN || ev.button.button == SDL_BUTTON_WHEELUP, ev.type == SDL_EVENT_MOUSE_WHEEL)) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
ld dir = ev.wheel.y * 0.25;
|
ld dir = ev.wheel.y * 0.25;
|
||||||
#else
|
#else
|
||||||
ld dir = ev.button.button == SDL_BUTTON_WHEELUP ? 0.25 : -0.25;
|
ld dir = ev.button.button == SDL_BUTTON_WHEELUP ? 0.25 : -0.25;
|
||||||
@ -1304,7 +1317,7 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ev.type == SDL_MOUSEMOTION) {
|
if(ev.type == SDL_EVENT_MOUSE_MOTION) {
|
||||||
mouseoh = mouseh;
|
mouseoh = mouseh;
|
||||||
|
|
||||||
int lmousex = mousex, lmousey = mousey;
|
int lmousex = mousex, lmousey = mousey;
|
||||||
@ -1350,7 +1363,7 @@ EX void handle_event(SDL_Event& ev) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ev.type == SDL_QUIT) {
|
if(ev.type == SDL_EVENT_QUIT) {
|
||||||
#if CAP_DAILY
|
#if CAP_DAILY
|
||||||
if(daily::on) daily::handleQuit(3);
|
if(daily::on) daily::handleQuit(3);
|
||||||
else
|
else
|
||||||
@ -1429,7 +1442,7 @@ EX bool interpret_as_direction(int sym, int uni) {
|
|||||||
#ifdef FAKE_SDL
|
#ifdef FAKE_SDL
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
return (sym >= SDLK_KP0 && sym <= SDLK_KP9 && !numlock_on);
|
return (sym >= int(SDLK_KP0) && sym <= int(SDLK_KP9) && !numlock_on);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
dialogs.cpp
12
dialogs.cpp
@ -1455,7 +1455,7 @@ EX namespace dialog {
|
|||||||
|
|
||||||
display();
|
display();
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
texthandler = [&ne] (const SDL_TextInputEvent& ev) {
|
texthandler = [&ne] (const SDL_TextInputEvent& ev) {
|
||||||
if(key_actions.count(ev.text[0])) return;
|
if(key_actions.count(ev.text[0])) return;
|
||||||
ne.s += ev.text;
|
ne.s += ev.text;
|
||||||
@ -1466,7 +1466,7 @@ EX namespace dialog {
|
|||||||
keyhandler = [this, &ne] (int sym, int uni) {
|
keyhandler = [this, &ne] (int sym, int uni) {
|
||||||
handleNavigation(sym, uni);
|
handleNavigation(sym, uni);
|
||||||
if((uni >= '0' && uni <= '9') || among(uni, '.', '+', '-', '*', '/', '^', '(', ')', ',', '|', 3) || (uni >= 'a' && uni <= 'z')) {
|
if((uni >= '0' && uni <= '9') || among(uni, '.', '+', '-', '*', '/', '^', '(', ')', ',', '|', 3) || (uni >= 'a' && uni <= 'z')) {
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
if(uni == 3) ne.s += "pi";
|
if(uni == 3) ne.s += "pi";
|
||||||
else ne.s += uni;
|
else ne.s += uni;
|
||||||
apply_edit();
|
apply_edit();
|
||||||
@ -1791,7 +1791,7 @@ EX namespace dialog {
|
|||||||
dialog::addItem("cancel", SDLK_ESCAPE);
|
dialog::addItem("cancel", SDLK_ESCAPE);
|
||||||
dialog::display();
|
dialog::display();
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
texthandler = [this] (const SDL_TextInputEvent& ev) {
|
texthandler = [this] (const SDL_TextInputEvent& ev) {
|
||||||
int i = isize(*cfileptr) - (editext?0:4);
|
int i = isize(*cfileptr) - (editext?0:4);
|
||||||
cfileptr->insert(i, ev.text);
|
cfileptr->insert(i, ev.text);
|
||||||
@ -1819,7 +1819,7 @@ EX namespace dialog {
|
|||||||
highlight_text = "//missing";
|
highlight_text = "//missing";
|
||||||
list_skip = 0;
|
list_skip = 0;
|
||||||
}
|
}
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
else if(uni >= 32 && uni < 127) {
|
else if(uni >= 32 && uni < 127) {
|
||||||
s.insert(i, s0 + char(uni));
|
s.insert(i, s0 + char(uni));
|
||||||
highlight_text = "//missing";
|
highlight_text = "//missing";
|
||||||
@ -1946,7 +1946,7 @@ EX namespace dialog {
|
|||||||
if(reaction) reaction();
|
if(reaction) reaction();
|
||||||
}
|
}
|
||||||
else if((u2 = checker(sym, uni)) != "") {
|
else if((u2 = checker(sym, uni)) != "") {
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
for(char c: u2) {
|
for(char c: u2) {
|
||||||
es.insert(editpos, 1, c);
|
es.insert(editpos, 1, c);
|
||||||
editpos ++;
|
editpos ++;
|
||||||
@ -1959,7 +1959,7 @@ EX namespace dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void string_dialog::handle_textinput() {
|
void string_dialog::handle_textinput() {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
texthandler = [this] (const SDL_TextInputEvent& ev) {
|
texthandler = [this] (const SDL_TextInputEvent& ev) {
|
||||||
auto& es = *edited_string;
|
auto& es = *edited_string;
|
||||||
string txt = ev.text;
|
string txt = ev.text;
|
||||||
|
@ -253,7 +253,7 @@ EX void glflush() {
|
|||||||
#if CAP_SDL && !ISMOBILE
|
#if CAP_SDL && !ISMOBILE
|
||||||
|
|
||||||
SDL_Surface *aux;
|
SDL_Surface *aux;
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
SDL_Renderer *auxrend;
|
SDL_Renderer *auxrend;
|
||||||
#else
|
#else
|
||||||
#define auxrend aux
|
#define auxrend aux
|
||||||
@ -2661,15 +2661,15 @@ EX void drawqueue() {
|
|||||||
if(current_display->separate_eyes() && !vid.usingGL) {
|
if(current_display->separate_eyes() && !vid.usingGL) {
|
||||||
|
|
||||||
if(aux && (aux->w != s->w || aux->h != s->h)) {
|
if(aux && (aux->w != s->w || aux->h != s->h)) {
|
||||||
SDL_FreeSurface(aux);
|
SDL_DestroySurface(aux);
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
SDL_DestroyRenderer(auxrend);
|
SDL_DestroyRenderer(auxrend);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!aux) {
|
if(!aux) {
|
||||||
aux = SDL_CreateRGBSurface(SDL_SWSURFACE,s->w,s->h,32,0,0,0,0);
|
aux = SDL_CreateRGBSurface(SDL_SWSURFACE,s->w,s->h,32,0,0,0,0);
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
auxrend = SDL_CreateSoftwareRenderer(aux);
|
auxrend = SDL_CreateSoftwareRenderer(aux);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ bool rawdisplaystr(int x, int y, int shift, int size, const char *str, int color
|
|||||||
bool clicked = (mousex >= rect.x && mousey >= rect.y && mousex <= rect.x+rect.w && mousey <= rect.y+rect.h);
|
bool clicked = (mousex >= rect.x && mousey >= rect.y && mousex <= rect.x+rect.w && mousey <= rect.y+rect.h);
|
||||||
|
|
||||||
SDL_BlitSurface(txt, NULL, s,&rect);
|
SDL_BlitSurface(txt, NULL, s,&rect);
|
||||||
SDL_FreeSurface(txt);
|
SDL_DestroySurface(txt);
|
||||||
|
|
||||||
return clicked;
|
return clicked;
|
||||||
}
|
}
|
||||||
|
@ -5549,7 +5549,7 @@ EX void drawthemap() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
lmouseover = mouseover;
|
lmouseover = mouseover;
|
||||||
lmouseover_distant = lmouseover;
|
lmouseover_distant = lmouseover;
|
||||||
bool useRangedOrb = (!(vid.shifttarget & 1) && haveRangedOrb() && lmouseover && lmouseover->cpdist > 1) || (keystate[SDL12(SDLK_RSHIFT, SDL_SCANCODE_RSHIFT)] | keystate[SDL12(SDLK_LSHIFT, SDL_SCANCODE_LSHIFT)]);
|
bool useRangedOrb = (!(vid.shifttarget & 1) && haveRangedOrb() && lmouseover && lmouseover->cpdist > 1) || (keystate[SDL12(SDLK_RSHIFT, SDL_SCANCODE_RSHIFT)] | keystate[SDL12(SDLK_LSHIFT, SDL_SCANCODE_LSHIFT)]);
|
||||||
@ -6045,7 +6045,7 @@ EX void drawscreen() {
|
|||||||
#if CAP_GL
|
#if CAP_GL
|
||||||
if(!vid.usingGL)
|
if(!vid.usingGL)
|
||||||
#endif
|
#endif
|
||||||
SDL_FillRect(s, NULL, backcolor);
|
SDL_FillSurfaceRect(s, NULL, backcolor);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// displaynum(vx,100, 0, 24, 0xc0c0c0, celldist(cwt.at), ":");
|
// displaynum(vx,100, 0, 24, 0xc0c0c0, celldist(cwt.at), ":");
|
||||||
|
23
history.cpp
23
history.cpp
@ -143,14 +143,14 @@ namespace spiral {
|
|||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
while(SDL_PollEvent(&event)) switch (event.type) {
|
while(SDL_PollEvent(&event)) switch (event.type) {
|
||||||
|
|
||||||
#if !CAP_SDL2
|
#if SDLVER == 1
|
||||||
case SDL_VIDEORESIZE: {
|
case SDL_VIDEORESIZE: {
|
||||||
resize_screen_to(event.resize.w, event.resize.h);
|
resize_screen_to(event.resize.w, event.resize.h);
|
||||||
precompute();
|
precompute();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if CAP_SDL2
|
#if SDLVER == 2
|
||||||
case SDL_WINDOWEVENT: {
|
case SDL_WINDOWEVENT: {
|
||||||
if(event.window.event == SDL_WINDOWEVENT_RESIZED)
|
if(event.window.event == SDL_WINDOWEVENT_RESIZED)
|
||||||
resize_screen_to(event.window.data1, event.window.data2);
|
resize_screen_to(event.window.data1, event.window.data2);
|
||||||
@ -158,13 +158,20 @@ namespace spiral {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
case SDL_QUIT: case SDL_MOUSEBUTTONDOWN:
|
#if SDLVER == 3
|
||||||
|
case SDL_EVENT_WINDOW_RESIZED: {
|
||||||
|
resize_screen_to(event.window.data1, event.window.data2);
|
||||||
|
precompute();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
case SDL_EVENT_QUIT: case SDL_EVENT_MOUSE_BUTTON_DOWN:
|
||||||
goto breakloop;
|
goto breakloop;
|
||||||
|
|
||||||
case SDL_KEYDOWN: {
|
case SDL_EVENT_KEY_DOWN: {
|
||||||
int sym = event.key.keysym.sym;
|
int sym = SDL23(event.key.keysym.sym, event.key.key);
|
||||||
int uni = 0;
|
int uni = 0;
|
||||||
numlock_on = event.key.keysym.mod & KMOD_NUM;
|
numlock_on = SDL23(event.key.keysym.mod, event.key.mod) & SDL_KMOD_NUM;
|
||||||
if(DKEY == SDLK_RIGHT) velx++;
|
if(DKEY == SDLK_RIGHT) velx++;
|
||||||
if(DKEY == SDLK_LEFT) velx--;
|
if(DKEY == SDLK_LEFT) velx--;
|
||||||
if(DKEY == SDLK_UP) vely++;
|
if(DKEY == SDLK_UP) vely++;
|
||||||
@ -481,7 +488,7 @@ EX namespace history {
|
|||||||
if(dospiral)
|
if(dospiral)
|
||||||
bands.push_back(band);
|
bands.push_back(band);
|
||||||
else
|
else
|
||||||
SDL_FreeSurface(band);
|
SDL_DestroySurface(band);
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!band) {
|
if(!band) {
|
||||||
@ -557,7 +564,7 @@ EX namespace history {
|
|||||||
|
|
||||||
if(dospiral) {
|
if(dospiral) {
|
||||||
spiral::loop(bands);
|
spiral::loop(bands);
|
||||||
for(int i=0; i<isize(bands); i++) SDL_FreeSurface(bands[i]);
|
for(int i=0; i<isize(bands); i++) SDL_DestroySurface(bands[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
34
multi.cpp
34
multi.cpp
@ -188,17 +188,17 @@ string listkeys(config& scfg, int id) {
|
|||||||
string lk = "";
|
string lk = "";
|
||||||
for(int i=0; i<SCANCODES; i++)
|
for(int i=0; i<SCANCODES; i++)
|
||||||
if(scfg.keyaction[i] == id)
|
if(scfg.keyaction[i] == id)
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
lk = lk + " " + SDL_GetScancodeName(SDL_Scancode(i));
|
lk = lk + " " + SDL_GetScancodeName(SDL_Scancode(i));
|
||||||
#else
|
#else
|
||||||
lk = lk + " " + SDL_GetKeyName(SDLKey(i));
|
lk = lk + " " + SDL_GetKeyName(SDLKey(i));
|
||||||
#endif
|
#endif
|
||||||
#if CAP_SDLJOY
|
#if CAP_SDLJOY
|
||||||
for(int i=0; i<numsticks; i++) for(int k=0; k<SDL_JoystickNumButtons(sticks[i]) && k<MAXBUTTON; k++)
|
for(int i=0; i<numsticks; i++) for(int k=0; k<SDL_GetNumJoystickButtons(sticks[i]) && k<MAXBUTTON; k++)
|
||||||
if(scfg.joyaction[i][k] == id) {
|
if(scfg.joyaction[i][k] == id) {
|
||||||
lk = lk + " " + cts('A'+i)+"-B"+its(k);
|
lk = lk + " " + cts('A'+i)+"-B"+its(k);
|
||||||
}
|
}
|
||||||
for(int i=0; i<numsticks; i++) for(int k=0; k<SDL_JoystickNumHats(sticks[i]) && k<MAXHAT; k++)
|
for(int i=0; i<numsticks; i++) for(int k=0; k<SDL_GetNumJoystickHats(sticks[i]) && k<MAXHAT; k++)
|
||||||
for(int d=0; d<4; d++)
|
for(int d=0; d<4; d++)
|
||||||
if(scfg.hataction[i][k][d] == id) {
|
if(scfg.hataction[i][k][d] == id) {
|
||||||
lk = lk + " " + cts('A'+i)+"-"+"URDL"[d];
|
lk = lk + " " + cts('A'+i)+"-"+"URDL"[d];
|
||||||
@ -293,7 +293,7 @@ struct key_configurer {
|
|||||||
|
|
||||||
#if CAP_SDLJOY
|
#if CAP_SDLJOY
|
||||||
joyhandler = [this] (SDL_Event& ev) {
|
joyhandler = [this] (SDL_Event& ev) {
|
||||||
if(ev.type == SDL_JOYBUTTONDOWN && setwhat) {
|
if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && setwhat) {
|
||||||
int joyid = ev.jbutton.which;
|
int joyid = ev.jbutton.which;
|
||||||
int button = ev.jbutton.button;
|
int button = ev.jbutton.button;
|
||||||
if(joyid < 8 && button < 32)
|
if(joyid < 8 && button < 32)
|
||||||
@ -302,7 +302,7 @@ struct key_configurer {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(ev.type == SDL_JOYHATMOTION && setwhat) {
|
else if(ev.type == SDL_EVENT_JOYSTICK_HAT_MOTION && setwhat) {
|
||||||
int joyid = ev.jhat.which;
|
int joyid = ev.jhat.which;
|
||||||
int hat = ev.jhat.hat;
|
int hat = ev.jhat.hat;
|
||||||
int dir = 4;
|
int dir = 4;
|
||||||
@ -357,8 +357,8 @@ struct joy_configurer {
|
|||||||
getcstat = ' ';
|
getcstat = ' ';
|
||||||
numaxeconfigs = 0;
|
numaxeconfigs = 0;
|
||||||
for(int j=0; j<numsticks; j++) {
|
for(int j=0; j<numsticks; j++) {
|
||||||
for(int ax=0; ax<SDL_JoystickNumAxes(sticks[j]) && ax < MAXAXE; ax++) if(numaxeconfigs<24) {
|
for(int ax=0; ax<SDL_GetNumJoystickAxes(sticks[j]) && ax < MAXAXE; ax++) if(numaxeconfigs<24) {
|
||||||
int y = SDL_JoystickGetAxis(sticks[j], ax);
|
int y = SDL_GetJoystickAxis(sticks[j], ax);
|
||||||
string buf = " ";
|
string buf = " ";
|
||||||
if(configdead)
|
if(configdead)
|
||||||
buf += its(y);
|
buf += its(y);
|
||||||
@ -614,7 +614,7 @@ void pressaction(int id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX int key_to_scan(int sym) {
|
EX int key_to_scan(int sym) {
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
return SDL_GetScancodeFromKey(sym);
|
return SDL_GetScancodeFromKey(sym);
|
||||||
#else
|
#else
|
||||||
return sym;
|
return sym;
|
||||||
@ -669,7 +669,7 @@ EX void initConfig() {
|
|||||||
|
|
||||||
int* t = scfg.keyaction;
|
int* t = scfg.keyaction;
|
||||||
|
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
|
|
||||||
t[SDL_SCANCODE_W] = 16 + 4;
|
t[SDL_SCANCODE_W] = 16 + 4;
|
||||||
t[SDL_SCANCODE_D] = 16 + 5;
|
t[SDL_SCANCODE_D] = 16 + 5;
|
||||||
@ -830,7 +830,7 @@ EX void initConfig() {
|
|||||||
EX void get_actions(config& scfg) {
|
EX void get_actions(config& scfg) {
|
||||||
|
|
||||||
#if !ISMOBILE
|
#if !ISMOBILE
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
|
|
||||||
for(auto& a: action_states_flat) a.last = a.held, a.held = 0;
|
for(auto& a: action_states_flat) a.last = a.held, a.held = 0;
|
||||||
|
|
||||||
@ -842,20 +842,20 @@ EX void get_actions(config& scfg) {
|
|||||||
#if CAP_SDLJOY
|
#if CAP_SDLJOY
|
||||||
for(int j=0; j<numsticks; j++) {
|
for(int j=0; j<numsticks; j++) {
|
||||||
|
|
||||||
for(int b=0; b<SDL_JoystickNumButtons(sticks[j]) && b<MAXBUTTON; b++)
|
for(int b=0; b<SDL_GetNumJoystickButtons(sticks[j]) && b<MAXBUTTON; b++)
|
||||||
if(SDL_JoystickGetButton(sticks[j], b))
|
if(SDL_GetJoystickButton(sticks[j], b))
|
||||||
pressaction(scfg.joyaction[j][b]);
|
pressaction(scfg.joyaction[j][b]);
|
||||||
|
|
||||||
for(int b=0; b<SDL_JoystickNumHats(sticks[j]) && b<MAXHAT; b++) {
|
for(int b=0; b<SDL_GetNumJoystickHats(sticks[j]) && b<MAXHAT; b++) {
|
||||||
int stat = SDL_JoystickGetHat(sticks[j], b);
|
int stat = SDL_GetJoystickHat(sticks[j], b);
|
||||||
if(stat & SDL_HAT_UP) pressaction(scfg.hataction[j][b][0]);
|
if(stat & SDL_HAT_UP) pressaction(scfg.hataction[j][b][0]);
|
||||||
if(stat & SDL_HAT_RIGHT) pressaction(scfg.hataction[j][b][1]);
|
if(stat & SDL_HAT_RIGHT) pressaction(scfg.hataction[j][b][1]);
|
||||||
if(stat & SDL_HAT_DOWN) pressaction(scfg.hataction[j][b][2]);
|
if(stat & SDL_HAT_DOWN) pressaction(scfg.hataction[j][b][2]);
|
||||||
if(stat & SDL_HAT_LEFT) pressaction(scfg.hataction[j][b][3]);
|
if(stat & SDL_HAT_LEFT) pressaction(scfg.hataction[j][b][3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int b=0; b<SDL_JoystickNumAxes(sticks[j]) && b<MAXAXE; b++) {
|
for(int b=0; b<SDL_GetNumJoystickAxes(sticks[j]) && b<MAXAXE; b++) {
|
||||||
int value = SDL_JoystickGetAxis(sticks[j], b);
|
int value = SDL_GetJoystickAxis(sticks[j], b);
|
||||||
int dz = scfg.deadzoneval[j][b];
|
int dz = scfg.deadzoneval[j][b];
|
||||||
if(value > dz) value -= dz; else if(value < -dz) value += dz;
|
if(value > dz) value -= dz; else if(value < -dz) value += dz;
|
||||||
else value = 0;
|
else value = 0;
|
||||||
@ -876,7 +876,7 @@ EX void handleInput(int delta, config &scfg) {
|
|||||||
|
|
||||||
get_actions(scfg);
|
get_actions(scfg);
|
||||||
|
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
|
|
||||||
if(keystate[SDL12(SDLK_LCTRL, SDL_SCANCODE_LCTRL)] || keystate[SDL12(SDLK_RCTRL, SDL_SCANCODE_RCTRL)]) d /= 5;
|
if(keystate[SDL12(SDLK_LCTRL, SDL_SCANCODE_LCTRL)] || keystate[SDL12(SDLK_RCTRL, SDL_SCANCODE_RCTRL)]) d /= 5;
|
||||||
|
|
||||||
|
16
mymake.cpp
16
mymake.cpp
@ -72,6 +72,10 @@ void set_linux() {
|
|||||||
opts = "-DFHS -DLINUX -I/usr/include/SDL2";
|
opts = "-DFHS -DLINUX -I/usr/include/SDL2";
|
||||||
libs = " -lSDL2 -lSDL2_ttf -lSDL2_mixer -lSDL2_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
libs = " -lSDL2 -lSDL2_ttf -lSDL2_mixer -lSDL2_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||||
}
|
}
|
||||||
|
else if(sdlver == 3) {
|
||||||
|
opts = "-DFHS -DLINUX -I/usr/include/SDL3";
|
||||||
|
libs = " -lSDL3 -lSDL3_ttf -lSDL3_mixer -lSDL3_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||||
|
}
|
||||||
else if(sdlver == 1) {
|
else if(sdlver == 1) {
|
||||||
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
||||||
libs = " -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
libs = " -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||||
@ -114,6 +118,7 @@ void set_mingw64_cross() {
|
|||||||
libs = " hyper64.res -static-libgcc -lopengl32";
|
libs = " hyper64.res -static-libgcc -lopengl32";
|
||||||
if(sdlver == 1) libs += " -lSDL -lSDL_gfx -lSDL_mixer -lSDL_ttf";
|
if(sdlver == 1) libs += " -lSDL -lSDL_gfx -lSDL_mixer -lSDL_ttf";
|
||||||
if(sdlver == 2) libs += " -lSDL2 -lSDL2_gfx -lSDL2_mixer -lSDL2_ttf";
|
if(sdlver == 2) libs += " -lSDL2 -lSDL2_gfx -lSDL2_mixer -lSDL2_ttf";
|
||||||
|
if(sdlver == 3) libs += " -lSDL3 -lSDL3_gfx -lSDL3_mixer -lSDL3_ttf";
|
||||||
libs += " -lpthread -lz -lglew32 -lpng";
|
libs += " -lpthread -lz -lglew32 -lpng";
|
||||||
setvbuf(stdout, NULL, _IONBF, 0); // MinGW is quirky with output buffering
|
setvbuf(stdout, NULL, _IONBF, 0); // MinGW is quirky with output buffering
|
||||||
if(!file_exists("hyper64.res"))
|
if(!file_exists("hyper64.res"))
|
||||||
@ -238,7 +243,7 @@ int main(int argc, char **argv) {
|
|||||||
set_os(os);
|
set_os(os);
|
||||||
obj_dir += "/sdl1";
|
obj_dir += "/sdl1";
|
||||||
setdir += "../";
|
setdir += "../";
|
||||||
opts += " -DCAP_SDL2=0";
|
opts += " -DSDLVER=1";
|
||||||
}
|
}
|
||||||
else if(s == "-sdl0") {
|
else if(s == "-sdl0") {
|
||||||
sdlver = 0;
|
sdlver = 0;
|
||||||
@ -252,7 +257,14 @@ int main(int argc, char **argv) {
|
|||||||
set_os(os);
|
set_os(os);
|
||||||
obj_dir += "/sdl2";
|
obj_dir += "/sdl2";
|
||||||
setdir += "../";
|
setdir += "../";
|
||||||
opts += " -DCAP_SDL2=1";
|
opts += " -DSDLVER=2";
|
||||||
|
}
|
||||||
|
else if(s == "-sdl3") {
|
||||||
|
sdlver = 3;
|
||||||
|
set_os(os);
|
||||||
|
obj_dir += "/sdl3";
|
||||||
|
setdir += "../";
|
||||||
|
opts += " -DSDLVER=3";
|
||||||
}
|
}
|
||||||
else if(s.substr(0, 2) == "-f" || s.substr(0, 2) == "-m") {
|
else if(s.substr(0, 2) == "-f" || s.substr(0, 2) == "-m") {
|
||||||
opts += " " + s;
|
opts += " " + s;
|
||||||
|
28
netgen.cpp
28
netgen.cpp
@ -342,12 +342,12 @@ EX namespace netgen {
|
|||||||
dynamicval<SDL_Surface*> ds(s);
|
dynamicval<SDL_Surface*> ds(s);
|
||||||
|
|
||||||
s = net = SDL_CreateRGBSurface(SDL_SWSURFACE,SX*nscale,SY*nscale,32,0,0,0,0);
|
s = net = SDL_CreateRGBSurface(SDL_SWSURFACE,SX*nscale,SY*nscale,32,0,0,0,0);
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
dynamicval<SDL_Renderer*> dr(srend);
|
dynamicval<SDL_Renderer*> dr(srend);
|
||||||
srend = SDL_CreateSoftwareRenderer(s);
|
srend = SDL_CreateSoftwareRenderer(s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SDL_FillRect(net, NULL, 0xFFFFFF);
|
SDL_FillSurfaceRect(net, NULL, 0xFFFFFF);
|
||||||
|
|
||||||
int pateks = 0;
|
int pateks = 0;
|
||||||
for(int i=0; i<CELLS; i++) patek[i].resize(ct[i]);
|
for(int i=0; i<CELLS; i++) patek[i].resize(ct[i]);
|
||||||
@ -442,9 +442,9 @@ EX namespace netgen {
|
|||||||
IMAGESAVE(quarter, hr::format("papermodel-page%d%d" IMAGEEXT, iy, ix).c_str());
|
IMAGESAVE(quarter, hr::format("papermodel-page%d%d" IMAGEEXT, iy, ix).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_FreeSurface(net);
|
SDL_DestroySurface(net);
|
||||||
SDL_FreeSurface(quarter);
|
SDL_DestroySurface(quarter);
|
||||||
#if CAP_SDL2
|
#if SDLVER >= 2
|
||||||
SDL_DestroyRenderer(srend);
|
SDL_DestroyRenderer(srend);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -624,28 +624,32 @@ EX namespace netgen {
|
|||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
||||||
while(SDL_PollEvent(&event)) switch (event.type) {
|
while(SDL_PollEvent(&event)) switch (event.type) {
|
||||||
case SDL_QUIT:
|
case SDL_EVENT_QUIT:
|
||||||
exit(1);
|
exit(1);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONDOWN: {
|
case SDL_EVENT_MOUSE_BUTTON_DOWN: {
|
||||||
clicked(event.button.x, event.button.y, event.button.button);
|
clicked(event.button.x, event.button.y, event.button.button);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONUP: {
|
case SDL_EVENT_MOUSE_BUTTON_UP: {
|
||||||
clicked(event.button.x, event.button.y, 16+event.button.button);
|
clicked(event.button.x, event.button.y, 16+event.button.button);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SDL_MOUSEMOTION: {
|
case SDL_EVENT_MOUSE_MOTION: {
|
||||||
clicked(event.motion.x, event.motion.y, 32);
|
clicked(event.motion.x, event.motion.y, 32);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SDL_KEYDOWN: {
|
case SDL_EVENT_KEY_DOWN: {
|
||||||
|
#if SDLVER >= 3
|
||||||
|
int key = event.key.key;
|
||||||
|
#else
|
||||||
int key = event.key.keysym.sym;
|
int key = event.key.keysym.sym;
|
||||||
#if CAP_SDL2
|
#endif
|
||||||
|
#if SDLVER >= 2
|
||||||
int uni = key;
|
int uni = key;
|
||||||
#else
|
#else
|
||||||
int uni = event.key.keysym.unicode;
|
int uni = event.key.keysym.unicode;
|
||||||
@ -663,7 +667,7 @@ EX namespace netgen {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SDL_KEYUP: {
|
case SDL_EVENT_KEY_UP: {
|
||||||
rs = 0;
|
rs = 0;
|
||||||
rz = 0;
|
rz = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -226,7 +226,7 @@ renderbuffer::~renderbuffer() {
|
|||||||
#endif
|
#endif
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
if(srf)
|
if(srf)
|
||||||
SDL_FreeSurface(srf);
|
SDL_DestroySurface(srf);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ void renderbuffer::clear(color_t col) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
SDL_FillRect(srf, NULL, col);
|
SDL_FillSurfaceRect(srf, NULL, col);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ void pass_time() {
|
|||||||
ld delta = t - last_t;
|
ld delta = t - last_t;
|
||||||
dynamicval<eGeometry> g(geometry, geometry == gTwistedProduct ? geometry : gCubeTiling);
|
dynamicval<eGeometry> g(geometry, geometry == gTwistedProduct ? geometry : gCubeTiling);
|
||||||
|
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
if(keystate['a'] || forcekey == 'a') current = apply_lorentz(current, lorentz(0, 2, delta*accel)), ang = 180, acc = true;
|
if(keystate['a'] || forcekey == 'a') current = apply_lorentz(current, lorentz(0, 2, delta*accel)), ang = 180, acc = true;
|
||||||
if(keystate['d'] || forcekey == 'd') current = apply_lorentz(current, lorentz(0, 2, -delta*accel)), ang = 0, acc = true;
|
if(keystate['d'] || forcekey == 'd') current = apply_lorentz(current, lorentz(0, 2, -delta*accel)), ang = 0, acc = true;
|
||||||
if(keystate['w'] || forcekey == 'w') current = apply_lorentz(current, lorentz(1, 2, delta*accel)), ang = 90, acc = true;
|
if(keystate['w'] || forcekey == 'w') current = apply_lorentz(current, lorentz(1, 2, delta*accel)), ang = 90, acc = true;
|
||||||
|
@ -432,7 +432,7 @@ void bantar_anim() {
|
|||||||
|
|
||||||
SDL_Event ev;
|
SDL_Event ev;
|
||||||
while(SDL_PollEvent(&ev))
|
while(SDL_PollEvent(&ev))
|
||||||
if(ev.type == SDL_KEYDOWN || ev.type == SDL_MOUSEBUTTONDOWN)
|
if(ev.type == SDL_EVENT_KEY_DOWN || ev.type == SDL_EVENT_MOUSE_BUTTON_DOWN)
|
||||||
breakanim = true;
|
breakanim = true;
|
||||||
}
|
}
|
||||||
mapeditor::drawplayer = true;
|
mapeditor::drawplayer = true;
|
||||||
|
@ -384,7 +384,7 @@ bool last_mkey = false;
|
|||||||
extern int mousepx, mousepy;
|
extern int mousepx, mousepy;
|
||||||
|
|
||||||
void game_frame() {
|
void game_frame() {
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
if(keystate['3'])
|
if(keystate['3'])
|
||||||
current_room->place_block_full(mousepx / block_x, mousepy / block_y, 0);
|
current_room->place_block_full(mousepx / block_x, mousepy / block_y, 0);
|
||||||
if(keystate['1'])
|
if(keystate['1'])
|
||||||
|
2
rug.cpp
2
rug.cpp
@ -1347,7 +1347,7 @@ EX void actDraw() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_HOLDKEYS
|
#if CAP_HOLDKEYS
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
if(keystate[SDL12(SDLK_LALT, SDL_SCANCODE_LALT)]) alpha /= 10;
|
if(keystate[SDL12(SDLK_LALT, SDL_SCANCODE_LALT)]) alpha /= 10;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
89
savepng.cpp
89
savepng.cpp
@ -5,17 +5,24 @@
|
|||||||
* http://www.libpng.org/pub/png/src/libpng-LICENSE.txt
|
* http://www.libpng.org/pub/png/src/libpng-LICENSE.txt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef CAP_SDL2
|
#ifndef SDLVER
|
||||||
#if CAP_SDL2
|
#define SDLVER 1
|
||||||
#define USE_SDL2
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SDL2
|
#if SDLVER == 1
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
#else
|
|
||||||
#include <SDL/SDL.h>
|
#include <SDL/SDL.h>
|
||||||
|
#define SDL23(x,y) x
|
||||||
#endif
|
#endif
|
||||||
|
#if SDLVER == 2
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#define SDL23(x,y) x
|
||||||
|
#endif
|
||||||
|
#if SDLVER == 3
|
||||||
|
#include <SDL3/SDL.h>
|
||||||
|
#define SDL23(x,y) y
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
#include <png.h>
|
#include <png.h>
|
||||||
|
|
||||||
#define SUCCESS 0
|
#define SUCCESS 0
|
||||||
@ -35,6 +42,18 @@
|
|||||||
#define amask 0xFF000000
|
#define amask 0xFF000000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER >= 3
|
||||||
|
struct pixformat { int BitsPerPixel; int BytesPerPixel; Uint32 Rmask, Gmask, Bmask, Amask; };
|
||||||
|
|
||||||
|
pixformat get_format(SDL_PixelFormat val) { pixformat pf; SDL_GetMasksForPixelFormat(val, &pf.BitsPerPixel, &pf.Rmask, &pf.Gmask, &pf.Bmask, &pf.Amask); pf.BytesPerPixel = (pf.BitsPerPixel+7) / 8; return pf; }
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
SDL_PixelFormat get_format(SDL_PixelFormat *val) { return *val; }
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* libpng callbacks */
|
/* libpng callbacks */
|
||||||
static void png_error_SDL(png_structp ctx, png_const_charp str)
|
static void png_error_SDL(png_structp ctx, png_const_charp str)
|
||||||
{
|
{
|
||||||
@ -42,8 +61,13 @@ static void png_error_SDL(png_structp ctx, png_const_charp str)
|
|||||||
}
|
}
|
||||||
static void png_write_SDL(png_structp png_ptr, png_bytep data, png_size_t length)
|
static void png_write_SDL(png_structp png_ptr, png_bytep data, png_size_t length)
|
||||||
{
|
{
|
||||||
|
#if SDLVER >= 3
|
||||||
|
SDL_IOStream *rw = (SDL_IOStream*)png_get_io_ptr(png_ptr);
|
||||||
|
SDL_WriteIO(rw, data, length);
|
||||||
|
#else
|
||||||
SDL_RWops *rw = (SDL_RWops*)png_get_io_ptr(png_ptr);
|
SDL_RWops *rw = (SDL_RWops*)png_get_io_ptr(png_ptr);
|
||||||
SDL_RWwrite(rw, data, sizeof(png_byte), length);
|
SDL_RWwrite(rw, data, sizeof(png_byte), length);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -54,8 +78,10 @@ SDL_Surface *SDL_PNGFormatAlpha(SDL_Surface *src)
|
|||||||
SDL_Surface *surf;
|
SDL_Surface *surf;
|
||||||
SDL_Rect rect = { 0, 0, 0, 0 };
|
SDL_Rect rect = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
|
auto pf = get_format(src->format);
|
||||||
|
|
||||||
/* NO-OP for images < 32bpp and 32bpp images that already have Alpha channel */
|
/* NO-OP for images < 32bpp and 32bpp images that already have Alpha channel */
|
||||||
if (src->format->BitsPerPixel <= 24 || src->format->Amask) {
|
if (pf.BitsPerPixel <= 24 || pf.Amask) {
|
||||||
src->refcount++;
|
src->refcount++;
|
||||||
return src;
|
return src;
|
||||||
}
|
}
|
||||||
@ -63,22 +89,31 @@ SDL_Surface *SDL_PNGFormatAlpha(SDL_Surface *src)
|
|||||||
/* Convert 32bpp alpha-less image to 24bpp alpha-less image */
|
/* Convert 32bpp alpha-less image to 24bpp alpha-less image */
|
||||||
rect.w = src->w;
|
rect.w = src->w;
|
||||||
rect.h = src->h;
|
rect.h = src->h;
|
||||||
surf = SDL_CreateRGBSurface(src->flags, src->w, src->h, 24,
|
#if SDLVER >= 3
|
||||||
src->format->Rmask, src->format->Gmask, src->format->Bmask, 0);
|
surf = SDL_CreateSurface(src->w, src->h, SDL_GetPixelFormatForMasks(24, pf.Rmask, pf.Gmask, pf.Bmask, 0));
|
||||||
|
SDL_BlitSurfaceUnchecked(src, &rect, surf, &rect);
|
||||||
|
#else
|
||||||
|
surf = SDL_CreateRGBSurface(src->flags, src->w, src->h, 24, pf.Rmask, pf.Gmask, pf.Bmask, 0);
|
||||||
SDL_LowerBlit(src, &rect, surf, &rect);
|
SDL_LowerBlit(src, &rect, surf, &rect);
|
||||||
|
#endif
|
||||||
|
|
||||||
return surf;
|
return surf;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
|
|
||||||
|
#define ERR SDL23(if (freedst) SDL_RWclose(dst); return (ERROR), if (freedst) SDL_CloseIO(dst); return (ERROR))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
int SDL_SavePNG_RW(SDL_Surface *surface, SDL23(SDL_RWops, SDL_IOStream) *dst, int freedst)
|
||||||
{
|
{
|
||||||
png_structp png_ptr;
|
png_structp png_ptr;
|
||||||
png_infop info_ptr;
|
png_infop info_ptr;
|
||||||
|
#if SDLVER <= 2
|
||||||
png_colorp pal_ptr;
|
png_colorp pal_ptr;
|
||||||
SDL_Palette *pal;
|
SDL_Palette *pal;
|
||||||
|
#endif
|
||||||
int i, colortype;
|
int i, colortype;
|
||||||
#ifdef USE_ROW_POINTERS
|
#ifdef USE_ROW_POINTERS
|
||||||
png_bytep *row_pointers;
|
png_bytep *row_pointers;
|
||||||
@ -92,29 +127,25 @@ int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
|||||||
if (!surface)
|
if (!surface)
|
||||||
{
|
{
|
||||||
SDL_SetError("Argument 1 to SDL_SavePNG_RW can't be NULL, expecting SDL_Surface*\n");
|
SDL_SetError("Argument 1 to SDL_SavePNG_RW can't be NULL, expecting SDL_Surface*\n");
|
||||||
if (freedst) SDL_RWclose(dst);
|
ERR;
|
||||||
return (ERROR);
|
|
||||||
}
|
}
|
||||||
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, png_error_SDL, NULL); /* err_ptr, err_fn, warn_fn */
|
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, png_error_SDL, NULL); /* err_ptr, err_fn, warn_fn */
|
||||||
if (!png_ptr)
|
if (!png_ptr)
|
||||||
{
|
{
|
||||||
SDL_SetError("Unable to png_create_write_struct on %s\n", PNG_LIBPNG_VER_STRING);
|
SDL_SetError("Unable to png_create_write_struct on %s\n", PNG_LIBPNG_VER_STRING);
|
||||||
if (freedst) SDL_RWclose(dst);
|
ERR;
|
||||||
return (ERROR);
|
|
||||||
}
|
}
|
||||||
info_ptr = png_create_info_struct(png_ptr);
|
info_ptr = png_create_info_struct(png_ptr);
|
||||||
if (!info_ptr)
|
if (!info_ptr)
|
||||||
{
|
{
|
||||||
SDL_SetError("Unable to png_create_info_struct\n");
|
SDL_SetError("Unable to png_create_info_struct\n");
|
||||||
png_destroy_write_struct(&png_ptr, NULL);
|
png_destroy_write_struct(&png_ptr, NULL);
|
||||||
if (freedst) SDL_RWclose(dst);
|
ERR;
|
||||||
return (ERROR);
|
|
||||||
}
|
}
|
||||||
if (setjmp(png_jmpbuf(png_ptr))) /* All other errors, see also "png_error_SDL" */
|
if (setjmp(png_jmpbuf(png_ptr))) /* All other errors, see also "png_error_SDL" */
|
||||||
{
|
{
|
||||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||||
if (freedst) SDL_RWclose(dst);
|
ERR;
|
||||||
return (ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup our RWops writer */
|
/* Setup our RWops writer */
|
||||||
@ -122,9 +153,10 @@ int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
|||||||
|
|
||||||
/* Prepare chunks */
|
/* Prepare chunks */
|
||||||
colortype = PNG_COLOR_MASK_COLOR;
|
colortype = PNG_COLOR_MASK_COLOR;
|
||||||
if (surface->format->BytesPerPixel > 0
|
auto pf = get_format(surface->format);
|
||||||
&& surface->format->BytesPerPixel <= 8
|
|
||||||
&& (pal = surface->format->palette))
|
#if SDLVER <= 2
|
||||||
|
if (pf.BytesPerPixel > 0 && pf.BytesPerPixel <= 8 && (pal = surface->format->palette))
|
||||||
{
|
{
|
||||||
colortype |= PNG_COLOR_MASK_PALETTE;
|
colortype |= PNG_COLOR_MASK_PALETTE;
|
||||||
pal_ptr = (png_colorp)malloc(pal->ncolors * sizeof(png_color));
|
pal_ptr = (png_colorp)malloc(pal->ncolors * sizeof(png_color));
|
||||||
@ -136,7 +168,10 @@ int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
|||||||
png_set_PLTE(png_ptr, info_ptr, pal_ptr, pal->ncolors);
|
png_set_PLTE(png_ptr, info_ptr, pal_ptr, pal->ncolors);
|
||||||
free(pal_ptr);
|
free(pal_ptr);
|
||||||
}
|
}
|
||||||
else if (surface->format->BytesPerPixel > 3 || surface->format->Amask)
|
#else
|
||||||
|
if(false) ;
|
||||||
|
#endif
|
||||||
|
else if (pf.BytesPerPixel > 3 || pf.Amask)
|
||||||
colortype |= PNG_COLOR_MASK_ALPHA;
|
colortype |= PNG_COLOR_MASK_ALPHA;
|
||||||
|
|
||||||
png_set_IHDR(png_ptr, info_ptr, surface->w, surface->h, 8, colortype,
|
png_set_IHDR(png_ptr, info_ptr, surface->w, surface->h, 8, colortype,
|
||||||
@ -145,9 +180,9 @@ int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
|||||||
// png_set_packing(png_ptr);
|
// png_set_packing(png_ptr);
|
||||||
|
|
||||||
/* Allow BGR surfaces */
|
/* Allow BGR surfaces */
|
||||||
if (surface->format->Rmask == bmask
|
if (pf.Rmask == bmask
|
||||||
&& surface->format->Gmask == gmask
|
&& pf.Gmask == gmask
|
||||||
&& surface->format->Bmask == rmask)
|
&& pf.Bmask == rmask)
|
||||||
png_set_bgr(png_ptr);
|
png_set_bgr(png_ptr);
|
||||||
|
|
||||||
/* Write everything */
|
/* Write everything */
|
||||||
@ -166,6 +201,6 @@ int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
|
|||||||
|
|
||||||
/* Done */
|
/* Done */
|
||||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||||
if (freedst) SDL_RWclose(dst);
|
if (freedst) SDL23(SDL_RWclose, SDL_CloseIO)(dst);
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,13 @@ extern "C" { /* This helps CPP projects that include this header */
|
|||||||
* Returns 0 success or -1 on failure, the error message is then retrievable
|
* Returns 0 success or -1 on failure, the error message is then retrievable
|
||||||
* via SDL_GetError().
|
* via SDL_GetError().
|
||||||
*/
|
*/
|
||||||
|
#if SDLVER >= 3
|
||||||
|
#define SDL_SavePNG(surface, file) \
|
||||||
|
SDL_SavePNG_RW(surface, SDL_IOFromFile(file, "wb"), 1)
|
||||||
|
#else
|
||||||
#define SDL_SavePNG(surface, file) \
|
#define SDL_SavePNG(surface, file) \
|
||||||
SDL_SavePNG_RW(surface, SDL_RWFromFile(file, "wb"), 1)
|
SDL_SavePNG_RW(surface, SDL_RWFromFile(file, "wb"), 1)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Save an SDL_Surface as a PNG file, using writable RWops.
|
* Save an SDL_Surface as a PNG file, using writable RWops.
|
||||||
@ -31,7 +36,11 @@ extern "C" { /* This helps CPP projects that include this header */
|
|||||||
* Returns 0 success or -1 on failure, the error message is then retrievable
|
* Returns 0 success or -1 on failure, the error message is then retrievable
|
||||||
* via SDL_GetError().
|
* via SDL_GetError().
|
||||||
*/
|
*/
|
||||||
|
#if SDLVER >= 3
|
||||||
|
extern int SDL_SavePNG_RW(SDL_Surface *surface, SDL_IOStream *rw, int freedst);
|
||||||
|
#else
|
||||||
extern int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *rw, int freedst);
|
extern int SDL_SavePNG_RW(SDL_Surface *surface, SDL_RWops *rw, int freedst);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return new SDL_Surface with a format suitable for PNG output.
|
* Return new SDL_Surface with a format suitable for PNG output.
|
||||||
|
@ -626,7 +626,7 @@ EX always_false in;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
IMAGESAVE(s, (filename + "-floors.png").c_str());
|
IMAGESAVE(s, (filename + "-floors.png").c_str());
|
||||||
SDL_FreeSurface(s);
|
SDL_DestroySurface(s);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -641,7 +641,7 @@ EX }
|
|||||||
void IMAGESAVE(SDL_Surface *s, const char *fname) {
|
void IMAGESAVE(SDL_Surface *s, const char *fname) {
|
||||||
SDL_Surface *s2 = SDL_PNGFormatAlpha(s);
|
SDL_Surface *s2 = SDL_PNGFormatAlpha(s);
|
||||||
SDL_SavePNG(s2, fname);
|
SDL_SavePNG(s2, fname);
|
||||||
if(s != s2) SDL_FreeSurface(s2);
|
if(s != s2) SDL_DestroySurface(s2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -741,7 +741,7 @@ EX void postprocess(string fname, SDL_Surface *sdark, SDL_Surface *sbright) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
output(sout, fname);
|
output(sout, fname);
|
||||||
SDL_FreeSurface(sout);
|
SDL_DestroySurface(sout);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -897,12 +897,8 @@ void movePlayer(monster *m, int delta) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
#if CAP_SDL2
|
bool forcetarget = (keystate[SDL12(SDLK_RSHIFT, SDL_SCANCODE_RSHIFT)] | keystate[SDL12(SDLK_LSHIFT, SDL_SCANCODE_LSHIFT)]);
|
||||||
bool forcetarget = (keystate[SDL_SCANCODE_RSHIFT] | keystate[SDL_SCANCODE_LSHIFT]);
|
|
||||||
#else
|
|
||||||
bool forcetarget = (keystate[SDLK_RSHIFT] | keystate[SDLK_LSHIFT]);
|
|
||||||
#endif
|
|
||||||
if(((mousepressed && !forcetarget) || facemouse) && delta > 0 && !mouseout() && !stdracing && GDIM == 2) {
|
if(((mousepressed && !forcetarget) || facemouse) && delta > 0 && !mouseout() && !stdracing && GDIM == 2) {
|
||||||
// playermoved = true;
|
// playermoved = true;
|
||||||
hyperpoint h = inverse_shift(m->pat, mouseh);
|
hyperpoint h = inverse_shift(m->pat, mouseh);
|
||||||
|
@ -214,7 +214,7 @@ EX void initAudio() {
|
|||||||
audio = loadMusicInfo();
|
audio = loadMusicInfo();
|
||||||
|
|
||||||
if(audio) {
|
if(audio) {
|
||||||
if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 2048) != 0) {
|
if(SDL23(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 2048) != 0, !Mix_OpenAudio(0, nullptr))) {
|
||||||
fprintf(stderr, "Unable to initialize audio: %s\n", Mix_GetError());
|
fprintf(stderr, "Unable to initialize audio: %s\n", Mix_GetError());
|
||||||
audio = false;
|
audio = false;
|
||||||
}
|
}
|
||||||
|
167
sysconfig.h
167
sysconfig.h
@ -129,8 +129,12 @@
|
|||||||
#define CAP_SDL (!ISMOBILE)
|
#define CAP_SDL (!ISMOBILE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CAP_SDL2
|
#ifndef SDLVER
|
||||||
#define CAP_SDL2 0
|
#ifdef CAP_SDL
|
||||||
|
#define SDLVER 1
|
||||||
|
#else
|
||||||
|
#define SDLVER 0
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CAP_TIMEOFDAY
|
#ifndef CAP_TIMEOFDAY
|
||||||
@ -357,57 +361,76 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#if CAP_SDL
|
#if CAP_SDL
|
||||||
#if CAP_SDL2
|
#if SDLVER == 3
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL3/SDL.h>
|
||||||
#define SDL12(x,y) y
|
|
||||||
#define SDLK_KP1 SDLK_KP_1
|
|
||||||
#define SDLK_KP2 SDLK_KP_2
|
|
||||||
#define SDLK_KP3 SDLK_KP_3
|
|
||||||
#define SDLK_KP4 SDLK_KP_4
|
|
||||||
#define SDLK_KP5 SDLK_KP_5
|
|
||||||
#define SDLK_KP6 SDLK_KP_6
|
|
||||||
#define SDLK_KP7 SDLK_KP_7
|
|
||||||
#define SDLK_KP8 SDLK_KP_8
|
|
||||||
#define SDLK_KP9 SDLK_KP_9
|
|
||||||
#define SDLK_KP0 SDLK_KP_0
|
|
||||||
#define SDL12_GetKeyState SDL_GetKeyboardState
|
|
||||||
#define KEYSTATES SDL_NUM_SCANCODES
|
|
||||||
#else
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
#define SDL12(x,y) x
|
|
||||||
#define SDL12_GetKeyState SDL_GetKeyState
|
|
||||||
#define KEYSTATES SDLK_LAST
|
|
||||||
#endif
|
#endif
|
||||||
|
#if SDLVER == 2
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#endif
|
||||||
|
#if SDLVER == 1
|
||||||
|
#include <SDL/SDL.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER >= 3
|
||||||
|
#define SDL23(x,y) y
|
||||||
|
#else
|
||||||
|
#define SDL23(x,y) x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER >= 2
|
||||||
|
#define SDL12(x,y) y
|
||||||
|
#else
|
||||||
|
#define SDL12(x,y) x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SDL123(x,y,z) SDL12(x,SDL23(y,z))
|
||||||
|
|
||||||
|
#define SDL12_GetKeyState SDL12(SDL_GetKeyState, SDL_GetKeyboardState)
|
||||||
|
#define sdl_keystate_type SDL23(Uint8, bool)
|
||||||
|
#define KEYSTATES SDL123(SDLK_LAST, SDL_NUM_SCANCODES, SDL_SCANCODE_COUNT)
|
||||||
|
|
||||||
#if !ISMAC
|
#if !ISMAC
|
||||||
#undef main
|
#undef main
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDLAUDIO
|
#if CAP_SDLAUDIO
|
||||||
#if CAP_SDL2
|
#if SDLVER == 1
|
||||||
#include <SDL2/SDL_mixer.h>
|
|
||||||
#else
|
|
||||||
#include <SDL/SDL_mixer.h>
|
#include <SDL/SDL_mixer.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if SDLVER == 2
|
||||||
|
#include <SDL2/SDL_mixer.h>
|
||||||
|
#endif
|
||||||
|
#if SDLVER == 3
|
||||||
|
#include <SDL3_mixer/SDL_mixer.h>
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDLTTF
|
#if CAP_SDLTTF
|
||||||
#if CAP_SDL2
|
#if SDLVER == 1
|
||||||
#include <SDL2/SDL_ttf.h>
|
|
||||||
#else
|
|
||||||
#include <SDL/SDL_ttf.h>
|
#include <SDL/SDL_ttf.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if SDLVER == 2
|
||||||
|
#include <SDL2/SDL_ttf.h>
|
||||||
|
#endif
|
||||||
|
#if SDLVER == 3
|
||||||
|
#include <SDL3_ttf/SDL_ttf.h>
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CAP_SDLGFX
|
#if CAP_SDLGFX
|
||||||
#if CAP_SDL2
|
#if SDLVER == 1
|
||||||
#include <SDL2/SDL2_gfxPrimitives.h>
|
|
||||||
#else
|
|
||||||
#include <SDL/SDL_gfxPrimitives.h>
|
#include <SDL/SDL_gfxPrimitives.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if SDLVER == 2
|
||||||
|
#include <SDL2/SDL2_gfxPrimitives.h>
|
||||||
|
#endif
|
||||||
|
#if SDLVER == 3
|
||||||
|
#include <SDL3_gfx/SDL3_gfxPrimitives.h>
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#elif !ISFAKEMOBILE
|
#if !CAP_SDLGFX && !ISFAKEMOBILE
|
||||||
#define SDLK_F1 (123001)
|
#define SDLK_F1 (123001)
|
||||||
#define SDLK_F2 (123002)
|
#define SDLK_F2 (123002)
|
||||||
#define SDLK_F3 (123003)
|
#define SDLK_F3 (123003)
|
||||||
@ -451,6 +474,86 @@ typedef int SDL_Event;
|
|||||||
typedef unsigned int Uint32;
|
typedef unsigned int Uint32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CAP_SDL
|
||||||
|
#define SDL_error_in(x) SDL23(((x) < 0), !(x))
|
||||||
|
|
||||||
|
#if SDLVER == 3
|
||||||
|
#define SDL_SWSURFACE 0 /* unused parameter */
|
||||||
|
inline SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) {
|
||||||
|
return SDL_CreateSurface(width, height, SDL_GetPixelFormatForMasks(depth, Rmask, Gmask, Bmask, Amask));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int TTF_SizeUTF8(TTF_Font *font, const char *text, int *w, int *h) {
|
||||||
|
return TTF_GetStringSize(font, text, strlen(text), w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline SDL_Surface* TTF_RenderUTF8_Blended(TTF_Font *font, const char *text, SDL_Color fg) {
|
||||||
|
return TTF_RenderText_Blended(font, text, strlen(text), fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline SDL_Surface* TTF_RenderUTF8_Solid(TTF_Font *font, const char *text, SDL_Color fg) {
|
||||||
|
return TTF_RenderText_Solid(font, text, strlen(text), fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define Mix_GetError SDL_GetError
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER >= 2
|
||||||
|
#define SDLK_KP1 SDLK_KP_1
|
||||||
|
#define SDLK_KP2 SDLK_KP_2
|
||||||
|
#define SDLK_KP3 SDLK_KP_3
|
||||||
|
#define SDLK_KP4 SDLK_KP_4
|
||||||
|
#define SDLK_KP5 SDLK_KP_5
|
||||||
|
#define SDLK_KP6 SDLK_KP_6
|
||||||
|
#define SDLK_KP7 SDLK_KP_7
|
||||||
|
#define SDLK_KP8 SDLK_KP_8
|
||||||
|
#define SDLK_KP9 SDLK_KP_9
|
||||||
|
#define SDLK_KP0 SDLK_KP_0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER < 3
|
||||||
|
#define SDL_EVENT_QUIT SDL_QUIT
|
||||||
|
#define SDL_EVENT_MOUSE_BUTTON_DOWN SDL_MOUSEBUTTONDOWN
|
||||||
|
#define SDL_EVENT_MOUSE_BUTTON_UP SDL_MOUSEBUTTONUP
|
||||||
|
#define SDL_EVENT_MOUSE_MOTION SDL_MOUSEMOTION
|
||||||
|
#define SDL_EVENT_MOUSE_WHEEL SDL_MOUSEWHEEL
|
||||||
|
#define SDL_EVENT_KEY_DOWN SDL_KEYDOWN
|
||||||
|
#define SDL_EVENT_KEY_UP SDL_KEYUP
|
||||||
|
#define SDL_EVENT_JOYSTICK_BUTTON_DOWN SDL_JOYBUTTONDOWN
|
||||||
|
#define SDL_EVENT_JOYSTICK_HAT_MOTION SDL_JOYHATMOTION
|
||||||
|
#define SDL_EVENT_JOYSTICK_AXIS_MOTION SDL_JOYAXISMOTION
|
||||||
|
#define SDL_EVENT_WINDOW SDL_WINDOWEVENT
|
||||||
|
#define SDL_EVENT_TEXT_INPUT SDL_TEXTINPUT
|
||||||
|
|
||||||
|
#define SDL_KMOD_NUM KMOD_NUM
|
||||||
|
#define SDL_KMOD_LSHIFT KMOD_LSHIFT
|
||||||
|
#define SDL_KMOD_LCTRL KMOD_LCTRL
|
||||||
|
#define SDL_KMOD_LALT KMOD_LALT
|
||||||
|
#define SDL_KMOD_RSHIFT KMOD_RSHIFT
|
||||||
|
#define SDL_KMOD_RCTRL KMOD_RCTRL
|
||||||
|
#define SDL_KMOD_RALT KMOD_RALT
|
||||||
|
|
||||||
|
#define SDL_DestroySurface SDL_FreeSurface
|
||||||
|
#define SDL_FillSurfaceRect SDL_FillRect
|
||||||
|
#define SDL_GL_DestroyContext SDL_GL_DeleteContext
|
||||||
|
#define SDL_WINDOW_HIGH_PIXEL_DENSITY SDL_WINDOW_ALLOW_HIGHDPI
|
||||||
|
#define SDL_CreateWindow(a,b,c,d) SDL_CreateWindow(a,SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,b,c,d)
|
||||||
|
#define SDL_GetCurrentRenderOutputSize SDL_GetRendererOutputSize
|
||||||
|
#define SDL_GetNumJoystickButtons SDL_JoystickNumButtons
|
||||||
|
#define SDL_GetJoystickButton SDL_JoystickGetButton
|
||||||
|
#define SDL_GetJoystickHat SDL_JoystickGetHat
|
||||||
|
#define SDL_GetNumJoystickHats SDL_JoystickNumHats
|
||||||
|
#define SDL_GetNumJoystickAxes SDL_JoystickNumAxes
|
||||||
|
#define SDL_GetJoystickAxis SDL_JoystickGetAxis
|
||||||
|
#define SDL_OpenJoystick SDL_JoystickOpen
|
||||||
|
#define SDL_CloseJoystick SDL_JoystickClose
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SDLVER >= 3
|
||||||
|
#define SDL_GetScancodeFromKey(x) SDL_GetScancodeFromKey(x, nullptr)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ISWEB
|
#if ISWEB
|
||||||
extern "C" {
|
extern "C" {
|
||||||
Uint8 *SDL_GetKeyState(void*);
|
Uint8 *SDL_GetKeyState(void*);
|
||||||
|
13
textures.cpp
13
textures.cpp
@ -143,6 +143,10 @@ EX cpatterntype cgroup;
|
|||||||
|
|
||||||
#if CAP_PNG
|
#if CAP_PNG
|
||||||
SDL_Surface *convertSurface(SDL_Surface* s) {
|
SDL_Surface *convertSurface(SDL_Surface* s) {
|
||||||
|
#if SDLVER >= 3
|
||||||
|
return SDL_ConvertSurface(s, SDL_PIXELFORMAT_BGRA8888);
|
||||||
|
|
||||||
|
#else
|
||||||
SDL_PixelFormat fmt;
|
SDL_PixelFormat fmt;
|
||||||
// fmt.format = SDL_PIXELFORMAT_BGRA8888;
|
// fmt.format = SDL_PIXELFORMAT_BGRA8888;
|
||||||
fmt.BitsPerPixel = 32;
|
fmt.BitsPerPixel = 32;
|
||||||
@ -159,12 +163,13 @@ SDL_Surface *convertSurface(SDL_Surface* s) {
|
|||||||
fmt.Aloss = fmt.Rloss = fmt.Gloss = fmt.Bloss = 0;
|
fmt.Aloss = fmt.Rloss = fmt.Gloss = fmt.Bloss = 0;
|
||||||
fmt.palette = NULL;
|
fmt.palette = NULL;
|
||||||
|
|
||||||
#if !CAP_SDL2
|
#if SDLVER <= 1
|
||||||
fmt.alpha = 0;
|
fmt.alpha = 0;
|
||||||
fmt.colorkey = 0x1ffffff;
|
fmt.colorkey = 0x1ffffff;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return SDL_ConvertSurface(s, &fmt, SDL_SWSURFACE);
|
return SDL_ConvertSurface(s, &fmt, SDL_SWSURFACE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -244,7 +249,7 @@ bool texture_data::readtexture(string tn) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
auto txt2 = convertSurface(txt);
|
auto txt2 = convertSurface(txt);
|
||||||
SDL_FreeSurface(txt);
|
SDL_DestroySurface(txt);
|
||||||
|
|
||||||
tx = txt2->w, ty = txt2->h;
|
tx = txt2->w, ty = txt2->h;
|
||||||
|
|
||||||
@ -367,7 +372,7 @@ bool texture_data::readtexture(string tn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_SDL_IMG
|
#if CAP_SDL_IMG
|
||||||
SDL_FreeSurface(txt2);
|
SDL_DestroySurface(txt2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -382,7 +387,7 @@ void texture_data::saveRawTexture(string tn) {
|
|||||||
for(int x=0; x<twidth; x++)
|
for(int x=0; x<twidth; x++)
|
||||||
qpixel(sraw,x,y) = get_texture_pixel(x, y);
|
qpixel(sraw,x,y) = get_texture_pixel(x, y);
|
||||||
IMAGESAVE(sraw, tn.c_str());
|
IMAGESAVE(sraw, tn.c_str());
|
||||||
SDL_FreeSurface(sraw);
|
SDL_DestroySurface(sraw);
|
||||||
addMessage(XLAT("Saved the raw texture to %1", tn));
|
addMessage(XLAT("Saved the raw texture to %1", tn));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
vr.cpp
8
vr.cpp
@ -1636,12 +1636,8 @@ EX void show_vr_quickmenu() {
|
|||||||
bool vr_keys(int sym, int uni) {
|
bool vr_keys(int sym, int uni) {
|
||||||
#if !ISMOBILE
|
#if !ISMOBILE
|
||||||
if(!(cmode & sm::NORMAL)) return false;
|
if(!(cmode & sm::NORMAL)) return false;
|
||||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
const sdl_keystate_type *keystate = SDL12_GetKeyState(NULL);
|
||||||
#if CAP_SDL2
|
if(keystate[SDL12(SDLK_LALT, SDL_SCANCODE_LALT)] || keystate[SDL12(SDLK_RALT, SDL_SCANCODE_RALT)])
|
||||||
if(keystate[SDL_SCANCODE_LALT] || keystate[SDL_SCANCODE_RALT])
|
|
||||||
#else
|
|
||||||
if(keystate[SDLK_LALT] || keystate[SDLK_RALT])
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
dialog::key_actions.clear();
|
dialog::key_actions.clear();
|
||||||
callhooks(vr_quickmenu_extensions);
|
callhooks(vr_quickmenu_extensions);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user