mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-04-02 08:47:03 +00:00
HyperRogue ported to SDL2 (in mymake do -sdl2)
This commit is contained in:
parent
87cbfaeac3
commit
f00696711a
108
basegraph.cpp
108
basegraph.cpp
@ -130,8 +130,21 @@ void fix_font_size(int& size) {
|
||||
#endif
|
||||
|
||||
#if CAP_SDL
|
||||
|
||||
#if !CAP_SDL2
|
||||
#if HDR
|
||||
typedef SDL_Surface SDL_Renderer
|
||||
#define srend s
|
||||
#endif
|
||||
#endif
|
||||
|
||||
EX SDL_Surface *s;
|
||||
EX SDL_Surface *s_screen;
|
||||
#if CAP_SDL2
|
||||
EX SDL_Renderer *srend;
|
||||
EX SDL_Texture *s_texture;
|
||||
EX SDL_Window *s_window;
|
||||
#endif
|
||||
|
||||
EX color_t qpixel_pixel_outside;
|
||||
|
||||
@ -143,6 +156,31 @@ EX color_t& qpixel(SDL_Surface *surf, int x, int y) {
|
||||
return pi[x];
|
||||
}
|
||||
|
||||
EX void present_surface() {
|
||||
#if CAP_SDL2
|
||||
SDL_UpdateTexture(s_texture, NULL, s, s->w * sizeof (Uint32));
|
||||
SDL_RenderClear(srend);
|
||||
SDL_RenderCopy(srend, s_texture, NULL, NULL);
|
||||
SDL_RenderPresent(srend);
|
||||
#else
|
||||
SDL_UpdateRect(s, 0, 0, 0, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
EX void present_screen() {
|
||||
#if CAP_GL
|
||||
if(vid.usingGL) {
|
||||
#if CAP_SDL2
|
||||
SDL_GL_SwapWindow(s_window);
|
||||
#else
|
||||
SDL_GL_SwapBuffers();
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
present_surface();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if CAP_SDLTTF
|
||||
@ -733,7 +771,11 @@ 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);
|
||||
|
||||
if(shift) {
|
||||
#if CAP_SDL2
|
||||
SDL_Surface* txt2 = SDL_ConvertSurfaceFormat(txt, SDL_PIXELFORMAT_RGBA8888, 0);
|
||||
#else
|
||||
SDL_Surface* txt2 = SDL_DisplayFormat(txt);
|
||||
#endif
|
||||
SDL_LockSurface(txt2);
|
||||
SDL_LockSurface(s);
|
||||
color_t c0 = qpixel(txt2, 0, 0);
|
||||
@ -993,12 +1035,12 @@ EX void drawCircle(int x, int y, int size, color_t color, color_t fillcolor IS(0
|
||||
gdpush(4); gdpush(color); gdpush(x); gdpush(y); gdpush(size);
|
||||
#elif CAP_SDLGFX
|
||||
if(pconf.stretch == 1) {
|
||||
if(fillcolor) filledCircleColor(s, x, y, size, fillcolor);
|
||||
if(color) ((vid.antialias && AA_NOGL)?aacircleColor:circleColor) (s, x, y, size, color);
|
||||
if(fillcolor) filledCircleColor(srend, x, y, size, fillcolor);
|
||||
if(color) ((vid.antialias && AA_NOGL)?aacircleColor:circleColor) (srend, x, y, size, color);
|
||||
}
|
||||
else {
|
||||
if(fillcolor) filledEllipseColor(s, x, y, size, size * pconf.stretch, fillcolor);
|
||||
if(color) ((vid.antialias && AA_NOGL)?aaellipseColor:ellipseColor) (s, x, y, size, size * pconf.stretch, color);
|
||||
if(fillcolor) filledEllipseColor(srend, x, y, size, size * pconf.stretch, fillcolor);
|
||||
if(color) ((vid.antialias && AA_NOGL)?aaellipseColor:ellipseColor) (srend, x, y, size, size * pconf.stretch, color);
|
||||
}
|
||||
#elif CAP_SDL
|
||||
int pts = size * 4;
|
||||
@ -1109,6 +1151,10 @@ EX pair<int, int> get_requested_resolution() {
|
||||
return { vid.window_x, vid.window_y };
|
||||
}
|
||||
|
||||
#ifndef CUSTOM_CAPTION
|
||||
#define CUSTOM_CAPTION ("HyperRogue " VER)
|
||||
#endif
|
||||
|
||||
#if CAP_SDL
|
||||
EX void setvideomode() {
|
||||
|
||||
@ -1127,11 +1173,12 @@ EX void setvideomode() {
|
||||
#if CAP_GL
|
||||
vid.usingGL = vid.wantGL;
|
||||
if(vid.usingGL) {
|
||||
flags = SDL_OPENGL | SDL_HWSURFACE;
|
||||
flags = SDL12(SDL_OPENGL | SDL_HWSURFACE, SDL_WINDOW_OPENGL);
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
|
||||
|
||||
vid.current_vsync = want_vsync();
|
||||
#if !ISMOBWEB
|
||||
#if !ISMOBWEB && !CAP_SDL2
|
||||
if(vid.current_vsync)
|
||||
SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, 1 );
|
||||
else
|
||||
@ -1146,7 +1193,7 @@ EX void setvideomode() {
|
||||
vid.usingGL = false;
|
||||
#endif
|
||||
|
||||
int sizeflag = (vid.full ? SDL_FULLSCREEN : SDL_RESIZABLE);
|
||||
int sizeflag = SDL12(vid.full ? SDL_FULLSCREEN : SDL_RESIZABLE, vid.full ? SDL_WINDOW_FULLSCREEN : SDL_WINDOW_RESIZABLE);
|
||||
|
||||
#ifdef WINDOWS
|
||||
#ifndef OLD_MINGW
|
||||
@ -1167,23 +1214,49 @@ EX void setvideomode() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
s = s_screen = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | sizeflag);
|
||||
auto create_win = [&] {
|
||||
#if CAP_SDL2
|
||||
if(s_window) SDL_DestroyWindow(s_window);
|
||||
s_window = SDL_CreateWindow(CUSTOM_CAPTION, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||
vid.xres, vid.yres,
|
||||
flags | sizeflag
|
||||
);
|
||||
#else
|
||||
s = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | sizeflag);
|
||||
#endif
|
||||
};
|
||||
|
||||
create_win();
|
||||
|
||||
if(vid.full && !s) {
|
||||
vid.xres = vid.xscr;
|
||||
vid.yres = vid.yscr;
|
||||
vid.fsize = 10;
|
||||
s = s_screen = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | SDL_FULLSCREEN);
|
||||
sizeflag = SDL12(SDL_FULLSCREEN, SDL_WINDOW_FULLSCREEN);
|
||||
create_win();
|
||||
}
|
||||
|
||||
if(!s) {
|
||||
addMessage("Failed to set the graphical mode: "+its(vid.xres)+"x"+its(vid.yres)+(vid.full ? " fullscreen" : " windowed"));
|
||||
vid.xres = 640;
|
||||
vid.yres = 480;
|
||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
|
||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
|
||||
vid.antialias &= ~AA_MULTI;
|
||||
s = s_screen = SDL_SetVideoMode(vid.xres, vid.yres, 32, flags | SDL_RESIZABLE);
|
||||
sizeflag = SDL12(SDL_RESIZABLE, SDL_WINDOW_RESIZABLE);
|
||||
create_win();
|
||||
}
|
||||
|
||||
#if CAP_SDL2
|
||||
if(srend) SDL_DestroyRenderer(srend);
|
||||
srend = SDL_CreateRenderer(s_window, -1, vid.current_vsync ? SDL_RENDERER_PRESENTVSYNC : 0);
|
||||
|
||||
if(s_texture) SDL_DestroyTexture(s_texture);
|
||||
s_texture = SDL_CreateTexture(srend, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, vid.xres, vid.yres);
|
||||
|
||||
if(s) SDL_FreeSurface(s);
|
||||
s = shot::empty_surface(vid.xres, vid.yres, false);
|
||||
#endif
|
||||
s_screen = s;
|
||||
|
||||
#if CAP_GL
|
||||
if(vid.usingGL) {
|
||||
@ -1251,16 +1324,21 @@ EX void init_graph() {
|
||||
get_canvas_size();
|
||||
#else
|
||||
if(!vid.xscr) {
|
||||
#if CAP_SDL2
|
||||
SDL_DisplayMode dm;
|
||||
SDL_GetCurrentDisplayMode(0, &dm);
|
||||
vid.xscr = vid.xres = dm.w;
|
||||
vid.yscr = vid.yres = dm.h;
|
||||
#else
|
||||
const SDL_VideoInfo *inf = SDL_GetVideoInfo();
|
||||
vid.xscr = vid.xres = inf->current_w;
|
||||
vid.yscr = vid.yres = inf->current_h;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CUSTOM_CAPTION
|
||||
#if !CAP_SDL2
|
||||
SDL_WM_SetCaption(CUSTOM_CAPTION, CUSTOM_CAPTION);
|
||||
#else
|
||||
SDL_WM_SetCaption("HyperRogue " VER, "HyperRogue " VER);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -1271,8 +1349,10 @@ EX void init_graph() {
|
||||
exit(2);
|
||||
}
|
||||
|
||||
#if !CAP_SDL2
|
||||
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
||||
SDL_EnableUNICODE(1);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ISANDROID
|
||||
|
106
control.cpp
106
control.cpp
@ -728,14 +728,22 @@ EX void mainloopiter() {
|
||||
oldmousepan = mousepan;
|
||||
#if CAP_MOUSEGRAB
|
||||
if(mousepan) {
|
||||
#if CAP_SDL2
|
||||
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||
#else
|
||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
#endif
|
||||
mouseaim_x = mouseaim_y = 0;
|
||||
}
|
||||
else {
|
||||
#if CAP_SDL2
|
||||
SDL_SetRelativeMouseMode(SDL_FALSE);
|
||||
#else
|
||||
SDL_WM_GrabInput( SDL_GRAB_OFF );
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
SDL_WarpMouse(vid.xres/2, vid.yres/2);
|
||||
#endif
|
||||
mouseaim_x = mouseaim_y = 0;
|
||||
}
|
||||
#endif
|
||||
@ -769,6 +777,30 @@ EX void mainloopiter() {
|
||||
lastframe = ticks;
|
||||
}
|
||||
|
||||
wheelclick = false;
|
||||
|
||||
getcshift = 1;
|
||||
|
||||
#if CAP_SDL2
|
||||
|
||||
const Uint8 *keystate = SDL_GetKeyboardState(NULL);
|
||||
|
||||
pandora_rightclick = keystate[SDL_SCANCODE_RCTRL];
|
||||
pandora_leftclick = keystate[SDL_SCANCODE_RSHIFT];
|
||||
|
||||
lshiftclick = keystate[SDL_SCANCODE_LSHIFT];
|
||||
rshiftclick = keystate[SDL_SCANCODE_RSHIFT];
|
||||
|
||||
lctrlclick = keystate[SDL_SCANCODE_LCTRL];
|
||||
rctrlclick = keystate[SDL_SCANCODE_RCTRL];
|
||||
|
||||
hiliteclick = keystate[SDL_SCANCODE_LALT] | keystate[SDL_SCANCODE_RALT];
|
||||
if(keystate[SDL_SCANCODE_LSHIFT] || keystate[SDL_SCANCODE_RSHIFT]) getcshift = -1;
|
||||
if(keystate[SDL_SCANCODE_LCTRL] || keystate[SDL_SCANCODE_RCTRL]) getcshift /= 10;
|
||||
if(keystate[SDL_SCANCODE_LALT] || keystate[SDL_SCANCODE_RALT]) getcshift *= 10;
|
||||
|
||||
#else
|
||||
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
|
||||
pandora_rightclick = keystate[SDLK_RCTRL];
|
||||
@ -776,21 +808,22 @@ EX void mainloopiter() {
|
||||
|
||||
lshiftclick = keystate[SDLK_LSHIFT];
|
||||
rshiftclick = keystate[SDLK_RSHIFT];
|
||||
anyshiftclick = lshiftclick | rshiftclick;
|
||||
|
||||
lctrlclick = keystate[SDLK_LCTRL];
|
||||
rctrlclick = keystate[SDLK_RCTRL];
|
||||
anyctrlclick = lctrlclick | rctrlclick;
|
||||
|
||||
forcetarget = anyshiftclick;
|
||||
hiliteclick = keystate[SDLK_LALT] | keystate[SDLK_RALT];
|
||||
wheelclick = false;
|
||||
|
||||
getcshift = 1;
|
||||
hiliteclick = keystate[SDLK_LALT] | keystate[SDLK_RALT];
|
||||
if(keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT]) getcshift = -1;
|
||||
if(keystate[SDLK_LCTRL] || keystate[SDLK_RCTRL]) getcshift /= 10;
|
||||
if(keystate[SDLK_LALT] || keystate[SDLK_RALT]) getcshift *= 10;
|
||||
|
||||
#endif
|
||||
|
||||
anyshiftclick = lshiftclick | rshiftclick;
|
||||
anyctrlclick = lctrlclick | rctrlclick;
|
||||
|
||||
forcetarget = anyshiftclick;
|
||||
|
||||
didsomething = false;
|
||||
|
||||
if(vid.shifttarget&1) {
|
||||
@ -858,6 +891,20 @@ EX void mainloopiter() {
|
||||
auto& lastticks = sc_ticks;
|
||||
ld t = (ticks - lastticks) * shiftmul / 1000.;
|
||||
lastticks = ticks;
|
||||
|
||||
#if CAP_SDL2
|
||||
const Uint8 *keystate = SDL_GetKeyboardState(NULL);
|
||||
|
||||
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_RIGHT] && DEFAULTNOR(SDL_SCANCODE_RIGHT)) full_rotate_camera(0, -t);
|
||||
if(keystate[SDL_SCANCODE_LEFT] && DEFAULTNOR(SDL_SCANCODE_LEFT)) full_rotate_camera(0, t);
|
||||
if(keystate[SDL_SCANCODE_UP] && DEFAULTNOR(SDL_SCANCODE_UP)) full_rotate_camera(1, t);
|
||||
if(keystate[SDL_SCANCODE_DOWN] && DEFAULTNOR(SDL_SCANCODE_DOWN)) full_rotate_camera(1, -t);
|
||||
if(keystate[SDL_SCANCODE_PAGEUP] && DEFAULTNOR(SDL_SCANCODE_PAGEUP)) full_rotate_view(t * 180 / M_PI, t);
|
||||
if(keystate[SDL_SCANCODE_PAGEDOWN] && DEFAULTNOR(SDL_SCANCODE_PAGEDOWN)) full_rotate_view(-t * 180 / M_PI, t);
|
||||
|
||||
#else
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
|
||||
if(keystate[SDLK_END] && GDIM == 3 && DEFAULTNOR(SDLK_END)) full_forward_camera(-t);
|
||||
@ -868,6 +915,7 @@ EX void mainloopiter() {
|
||||
if(keystate[SDLK_DOWN] && DEFAULTNOR(SDLK_DOWN)) full_rotate_camera(1, -t);
|
||||
if(keystate[SDLK_PAGEUP] && DEFAULTNOR(SDLK_PAGEUP)) full_rotate_view(t * 180 / M_PI, t);
|
||||
if(keystate[SDLK_PAGEDOWN] && DEFAULTNOR(SDLK_PAGEDOWN)) full_rotate_view(-t * 180 / M_PI, t);
|
||||
#endif
|
||||
}
|
||||
else sc_ticks = ticks;
|
||||
|
||||
@ -905,6 +953,20 @@ EX void handle_event(SDL_Event& ev) {
|
||||
initJoysticks();
|
||||
} */
|
||||
|
||||
#if CAP_SDL2
|
||||
if(ev.type == SDL_WINDOWEVENT) {
|
||||
auto w = ev.window.event;
|
||||
if(w == SDL_WINDOWEVENT_ENTER)
|
||||
outoffocus = false;
|
||||
if(w == SDL_WINDOWEVENT_LEAVE)
|
||||
outoffocus = true;
|
||||
if(w == SDL_WINDOWEVENT_EXPOSED)
|
||||
drawscreen();
|
||||
if(w == SDL_WINDOWEVENT_RESIZED)
|
||||
resize_screen_to(ev.window.data1, ev.window.data2);
|
||||
}
|
||||
|
||||
#else
|
||||
if(ev.type == SDL_ACTIVEEVENT) {
|
||||
if(ev.active.state & SDL_APPINPUTFOCUS) {
|
||||
if(ev.active.gain) {
|
||||
@ -917,11 +979,12 @@ EX void handle_event(SDL_Event& ev) {
|
||||
}
|
||||
|
||||
if(ev.type == SDL_VIDEORESIZE)
|
||||
resize_screen_to(ev.resize.w, ev.resize.h);
|
||||
resize_screen_to(ev.resize.w, ev.resize.h);
|
||||
|
||||
if(ev.type == SDL_VIDEOEXPOSE) {
|
||||
drawscreen();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CAP_SDLJOY
|
||||
if(ev.type == SDL_JOYAXISMOTION && normal && DEFAULTCONTROL) {
|
||||
@ -970,9 +1033,17 @@ EX void handle_event(SDL_Event& ev) {
|
||||
flashMessages();
|
||||
mousing = false;
|
||||
sym = ev.key.keysym.sym;
|
||||
#if CAP_SDL2
|
||||
uni = ev.key.keysym.sym;
|
||||
if(uni >= 'a' && uni <= 'z') {
|
||||
if(ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) uni -= 32;
|
||||
else if(ev.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) uni -= 96;
|
||||
}
|
||||
#else
|
||||
uni = ev.key.keysym.unicode;
|
||||
if(ev.key.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) shiftmul = -1;
|
||||
if(ev.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) shiftmul /= 10;
|
||||
#endif
|
||||
numlock_on = ev.key.keysym.mod & KMOD_NUM;
|
||||
if(sym == SDLK_RETURN && (ev.key.keysym.mod & (KMOD_LALT | KMOD_RALT))) {
|
||||
sym = 0; uni = 0;
|
||||
@ -988,7 +1059,7 @@ EX void handle_event(SDL_Event& ev) {
|
||||
|
||||
bool rollchange = (cmode & sm::OVERVIEW) && getcstat >= 2000 && cheater;
|
||||
|
||||
if(ev.type == SDL_MOUSEBUTTONDOWN || ev.type == SDL_MOUSEBUTTONUP) {
|
||||
if(ev.type == SDL_MOUSEBUTTONDOWN || ev.type == SDL_MOUSEBUTTONUP SDL12(, || ev.type == SDL_MOUSEWHEEL)) {
|
||||
mousepressed = ev.type == SDL_MOUSEBUTTONDOWN;
|
||||
if(mousepressed) flashMessages();
|
||||
mousing = true;
|
||||
@ -996,19 +1067,22 @@ EX void handle_event(SDL_Event& ev) {
|
||||
bool was_holdmouse = holdmouse;
|
||||
holdmouse = false;
|
||||
|
||||
bool down = ev.type == SDL_MOUSEBUTTONDOWN SDL12(, || ev.type == SDL_MOUSEWHEEL);
|
||||
bool up = ev.type == SDL_MOUSEBUTTONUP;
|
||||
|
||||
bool act = false;
|
||||
|
||||
if(vid.quickmouse) {
|
||||
act = ev.type == SDL_MOUSEBUTTONDOWN;
|
||||
act = down;
|
||||
}
|
||||
else {
|
||||
act = actonrelease && ev.type == SDL_MOUSEBUTTONUP;
|
||||
actonrelease = ev.type == SDL_MOUSEBUTTONDOWN;
|
||||
act = actonrelease && up;
|
||||
actonrelease = down;
|
||||
}
|
||||
|
||||
fix_mouseh();
|
||||
|
||||
if(was_holdmouse && ev.type == SDL_MOUSEBUTTONUP)
|
||||
if(was_holdmouse && up)
|
||||
sym = uni = PSEUDOKEY_RELEASE;
|
||||
|
||||
/* simulate RMB and MMB for Mac users etc. */
|
||||
@ -1029,8 +1103,12 @@ EX void handle_event(SDL_Event& ev) {
|
||||
sym = getcstat, uni = getcstat, shiftmul = getcshift;
|
||||
}
|
||||
|
||||
else if(ev.button.button==SDL_BUTTON_WHEELDOWN || ev.button.button == SDL_BUTTON_WHEELUP) {
|
||||
else if(SDL12(ev.button.button==SDL_BUTTON_WHEELDOWN || ev.button.button == SDL_BUTTON_WHEELUP, ev.type == SDL_MOUSEWHEEL)) {
|
||||
#if CAP_SDL2
|
||||
ld dir = ev.wheel.y * 0.25;
|
||||
#else
|
||||
ld dir = ev.button.button == SDL_BUTTON_WHEELUP ? 0.25 : -0.25;
|
||||
#endif
|
||||
if(lshiftclick && rshiftclick && !rug::rugged && GDIM == 2) {
|
||||
mapeditor::scaleall(pow(2, dir), lctrlclick);
|
||||
pconf.alpha *= pow(2, dir);
|
||||
|
36
drawing.cpp
36
drawing.cpp
@ -251,7 +251,14 @@ EX void glflush() {
|
||||
#endif
|
||||
|
||||
#if CAP_SDL && !ISMOBILE
|
||||
|
||||
SDL_Surface *aux;
|
||||
#if CAP_SDL2
|
||||
SDL_Renderer *auxrend;
|
||||
#else
|
||||
#define auxrend aux
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if CAP_POLY
|
||||
@ -552,17 +559,17 @@ void addpoly(const shiftmatrix& V, const vector<glvertex> &tab, int ofs, int cnt
|
||||
}
|
||||
|
||||
#if CAP_SDLGFX
|
||||
void aapolylineColor(SDL_Surface *s, int*x, int *y, int polyi, color_t col) {
|
||||
void aapolylineColor(SDL_Renderer *s, int*x, int *y, int polyi, color_t col) {
|
||||
for(int i=1; i<polyi; i++)
|
||||
aalineColor(s, x[i-1], y[i-1], x[i], y[i], col);
|
||||
}
|
||||
|
||||
void polylineColor(SDL_Surface *s, int *x, int *y, int polyi, color_t col) {
|
||||
void polylineColor(SDL_Renderer *s, int *x, int *y, int polyi, color_t col) {
|
||||
for(int i=1; i<polyi; i++)
|
||||
lineColor(s, x[i-1], y[i-1], x[i], y[i], col);
|
||||
}
|
||||
|
||||
EX void filledPolygonColorI(SDL_Surface *s, int* px, int *py, int polyi, color_t col) {
|
||||
EX void filledPolygonColorI(SDL_Renderer *s, int* px, int *py, int polyi, color_t col) {
|
||||
std::vector<Sint16> spx(px, px + polyi);
|
||||
std::vector<Sint16> spy(py, py + polyi);
|
||||
filledPolygonColor(s, spx.data(), spy.data(), polyi, col);
|
||||
@ -1977,19 +1984,19 @@ void dqi_poly::draw() {
|
||||
polyx[i] = 0; polyy[i] = vid.yres; i++;
|
||||
polyx[i] = 0; polyy[i] = 0; i++;
|
||||
}
|
||||
filledPolygonColorI(s, polyx, polyy, polyi+5, color);
|
||||
filledPolygonColorI(srend, polyx, polyy, polyi+5, color);
|
||||
}
|
||||
else if(poly_flags & POLY_TRIANGLES) {
|
||||
for(int i=0; i<polyi; i+=3)
|
||||
filledPolygonColorI(s, polyx+i, polyy+i, 3, color);
|
||||
filledPolygonColorI(srend, polyx+i, polyy+i, 3, color);
|
||||
}
|
||||
else
|
||||
filledPolygonColorI(s, polyx, polyy, polyi, color);
|
||||
filledPolygonColorI(srend, polyx, polyy, polyi, color);
|
||||
|
||||
if(current_display->stereo_active()) filledPolygonColorI(aux, polyxr, polyy, polyi, color);
|
||||
if(current_display->stereo_active()) filledPolygonColorI(auxrend, polyxr, polyy, polyi, color);
|
||||
|
||||
((vid.antialias & AA_NOGL) ?aapolylineColor:polylineColor)(s, polyx, polyy, polyi, outline);
|
||||
if(current_display->stereo_active()) aapolylineColor(aux, polyxr, polyy, polyi, outline);
|
||||
((vid.antialias & AA_NOGL) ?aapolylineColor:polylineColor)(srend, polyx, polyy, polyi, outline);
|
||||
if(current_display->stereo_active()) aapolylineColor(auxrend, polyxr, polyy, polyi, outline);
|
||||
|
||||
if(vid.xres >= 2000 || fatborder) {
|
||||
int xmi = 3000, xma = -3000;
|
||||
@ -1997,7 +2004,7 @@ void dqi_poly::draw() {
|
||||
|
||||
if(xma > xmi + 20) for(int x=-1; x<2; x++) for(int y=-1; y<=2; y++) if(x*x+y*y == 1) {
|
||||
for(int t=0; t<polyi; t++) polyx[t] += x, polyy[t] += y;
|
||||
aapolylineColor(s, polyx, polyy, polyi, outline);
|
||||
aapolylineColor(srend, polyx, polyy, polyi, outline);
|
||||
for(int t=0; t<polyi; t++) polyx[t] -= x, polyy[t] -= y;
|
||||
}
|
||||
}
|
||||
@ -2425,11 +2432,18 @@ EX void drawqueue() {
|
||||
#if CAP_SDL
|
||||
if(current_display->stereo_active() && !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);
|
||||
#if CAP_SDL2
|
||||
SDL_DestroyRenderer(auxrend);
|
||||
#endif
|
||||
}
|
||||
|
||||
if(!aux) {
|
||||
aux = SDL_CreateRGBSurface(SDL_SWSURFACE,s->w,s->h,32,0,0,0,0);
|
||||
#if CAP_SDL2
|
||||
auxrend = SDL_CreateSoftwareRenderer(aux);
|
||||
#endif
|
||||
}
|
||||
|
||||
// SDL_LockSurface(aux);
|
||||
|
13
graph.cpp
13
graph.cpp
@ -4798,9 +4798,9 @@ EX void drawthemap() {
|
||||
}
|
||||
|
||||
#if CAP_SDL
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
||||
lmouseover = mouseover;
|
||||
bool useRangedOrb = (!(vid.shifttarget & 1) && haveRangedOrb() && lmouseover && lmouseover->cpdist > 1) || (keystate[SDLK_RSHIFT] | keystate[SDLK_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)]);
|
||||
if(!useRangedOrb && !(cmode & sm::MAP) && !(cmode & sm::DRAW) && DEFAULTCONTROL && !mouseout() && !dual::state) {
|
||||
dynamicval<eGravity> gs(gravity_state, gravity_state);
|
||||
void calcMousedest();
|
||||
@ -5291,13 +5291,8 @@ EX void drawscreen() {
|
||||
#if CAP_VR
|
||||
vrhr::submit();
|
||||
#endif
|
||||
|
||||
#if CAP_SDL
|
||||
#if CAP_GL
|
||||
if(vid.usingGL) SDL_GL_SwapBuffers(); else
|
||||
#endif
|
||||
SDL_UpdateRect(s, 0, 0, vid.xres, vid.yres);
|
||||
#endif
|
||||
|
||||
present_screen();
|
||||
|
||||
#if CAP_VR
|
||||
vrhr::handoff();
|
||||
|
18
history.cpp
18
history.cpp
@ -108,31 +108,41 @@ namespace spiral {
|
||||
displaystr(SX/2, vid.fsize*2, 0, vid.fsize, "arrows = navigate, ESC = return, h = hide help", forecolor, 8);
|
||||
displaystr(SX/2, SY - vid.fsize*2, 0, vid.fsize, XLAT("s = save to " IMAGEEXT, buf), forecolor, 8);
|
||||
}
|
||||
SDL_UpdateRect(s, 0, 0, 0, 0);
|
||||
present_surface();
|
||||
shiftx += velx; shifty += vely;
|
||||
|
||||
SDL_Event event;
|
||||
while(SDL_PollEvent(&event)) switch (event.type) {
|
||||
|
||||
#if !CAP_SDL2
|
||||
case SDL_VIDEORESIZE: {
|
||||
resize_screen_to(event.resize.w, event.resize.h);
|
||||
precompute();
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if CAP_SDL2
|
||||
case SDL_WINDOWEVENT: {
|
||||
if(event.window.event == SDL_WINDOWEVENT_RESIZED)
|
||||
resize_screen_to(event.window.data1, event.window.data2);
|
||||
precompute();
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case SDL_QUIT: case SDL_MOUSEBUTTONDOWN:
|
||||
goto breakloop;
|
||||
|
||||
case SDL_KEYDOWN: {
|
||||
int sym = event.key.keysym.sym;
|
||||
int uni = event.key.keysym.unicode;
|
||||
int uni = 0;
|
||||
numlock_on = event.key.keysym.mod & KMOD_NUM;
|
||||
if(DKEY == SDLK_RIGHT) velx++;
|
||||
if(DKEY == SDLK_LEFT) velx--;
|
||||
if(DKEY == SDLK_UP) vely++;
|
||||
if(DKEY == SDLK_DOWN) vely--;
|
||||
if(sym == SDLK_ESCAPE) goto breakloop;
|
||||
if(uni == 'h') displayhelp = !displayhelp;
|
||||
if(uni == 's') dosave = true;
|
||||
if(sym == 'h') displayhelp = !displayhelp;
|
||||
if(sym == 's') dosave = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
46
multi.cpp
46
multi.cpp
@ -167,7 +167,11 @@ string listkeys(int id) {
|
||||
string lk = "";
|
||||
for(int i=0; i<512; i++)
|
||||
if(scfg.keyaction[i] == id)
|
||||
#if CAP_SDL2
|
||||
lk = lk + " " + SDL_GetScancodeName(SDL_Scancode(i));
|
||||
#else
|
||||
lk = lk + " " + SDL_GetKeyName(SDLKey(i));
|
||||
#endif
|
||||
#if CAP_SDLJOY
|
||||
for(int i=0; i<numsticks; i++) for(int k=0; k<SDL_JoystickNumButtons(sticks[i]) && k<MAXBUTTON; k++)
|
||||
if(scfg.joyaction[i][k] == id) {
|
||||
@ -551,6 +555,43 @@ EX void initConfig() {
|
||||
|
||||
char* t = scfg.keyaction;
|
||||
|
||||
#if CAP_SDL2
|
||||
|
||||
t[SDL_SCANCODE_W] = 16 + 4;
|
||||
t[SDL_SCANCODE_D] = 16 + 5;
|
||||
t[SDL_SCANCODE_S] = 16 + 6;
|
||||
t[SDL_SCANCODE_A] = 16 + 7;
|
||||
|
||||
t[SDL_SCANCODE_KP_8] = 16 + 4;
|
||||
t[SDL_SCANCODE_KP_6] = 16 + 5;
|
||||
t[SDL_SCANCODE_KP_2] = 16 + 6;
|
||||
t[SDL_SCANCODE_KP_4] = 16 + 7;
|
||||
|
||||
t[SDL_SCANCODE_F] = 16 + pcFire;
|
||||
t[SDL_SCANCODE_G] = 16 + pcFace;
|
||||
t[SDL_SCANCODE_H] = 16 + pcFaceFire;
|
||||
t[SDL_SCANCODE_R] = 16 + pcDrop;
|
||||
t[SDL_SCANCODE_T] = 16 + pcOrbPower;
|
||||
t[SDL_SCANCODE_Y] = 16 + pcCenter;
|
||||
|
||||
t[SDL_SCANCODE_I] = 32 + 4;
|
||||
t[SDL_SCANCODE_L] = 32 + 5;
|
||||
t[SDL_SCANCODE_K] = 32 + 6;
|
||||
t[SDL_SCANCODE_J] = 32 + 7;
|
||||
t[SDL_SCANCODE_SEMICOLON] = 32 + 8;
|
||||
t[SDL_SCANCODE_APOSTROPHE] = 32 + 9;
|
||||
t[SDL_SCANCODE_P] = 32 + 10;
|
||||
t[SDL_SCANCODE_LEFTBRACKET] = 32 + pcCenter;
|
||||
|
||||
t[SDL_SCANCODE_UP] = 48 ;
|
||||
t[SDL_SCANCODE_RIGHT] = 48 + 1;
|
||||
t[SDL_SCANCODE_DOWN] = 48 + 2;
|
||||
t[SDL_SCANCODE_LEFT] = 48 + 3;
|
||||
t[SDL_SCANCODE_PAGEUP] = 48 + 4;
|
||||
t[SDL_SCANCODE_PAGEDOWN] = 48 + 5;
|
||||
t[SDL_SCANCODE_HOME] = 48 + 6;
|
||||
|
||||
#else
|
||||
t[(int)'w'] = 16 + 4;
|
||||
t[(int)'d'] = 16 + 5;
|
||||
t[(int)'s'] = 16 + 6;
|
||||
@ -588,6 +629,7 @@ EX void initConfig() {
|
||||
t[SDLK_PAGEDOWN] = 48 + 5;
|
||||
t[SDLK_HOME] = 48 + 6;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
scfg.joyaction[0][0] = 16 + pcFire;
|
||||
scfg.joyaction[0][1] = 16 + pcOrbPower;
|
||||
@ -671,7 +713,7 @@ EX void handleInput(int delta) {
|
||||
#if CAP_SDL
|
||||
double d = delta / 500.;
|
||||
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
||||
|
||||
for(int i=0; i<NUMACT; i++)
|
||||
lactionpressed[i] = actionspressed[i],
|
||||
@ -679,7 +721,7 @@ EX void handleInput(int delta) {
|
||||
|
||||
for(int i=0; i<SHMUPAXES; i++) axespressed[i] = 0;
|
||||
|
||||
for(int i=0; i<SDLK_LAST; i++) if(keystate[i])
|
||||
for(int i=0; i<KEYSTATES; i++) if(keystate[i])
|
||||
pressaction(scfg.keyaction[i]);
|
||||
|
||||
#if CAP_SDLJOY
|
||||
|
62
mymake.cpp
62
mymake.cpp
@ -34,12 +34,28 @@ string libs;
|
||||
int batch_size = thread::hardware_concurrency() + 1;
|
||||
bool mingw64 = false;
|
||||
|
||||
int sdlver = 2;
|
||||
|
||||
#if defined(MAC)
|
||||
string os = "mac";
|
||||
#elif defined(WINDOWS)
|
||||
string os = "mingw64";
|
||||
#else
|
||||
string os = "linux";
|
||||
#endif
|
||||
|
||||
void set_linux() {
|
||||
preprocessor = "g++ -E";
|
||||
compiler = "g++ -Wall -Wextra -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-implicit-fallthrough -rdynamic -fdiagnostics-color=always -c";
|
||||
linker = "g++ -rdynamic -o hyper";
|
||||
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
||||
libs = " savepng.o -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||
if(sdlver == 2) {
|
||||
opts = "-DFHS -DLINUX -I/usr/include/SDL2";
|
||||
libs = " savepng.o -lSDL2 -lSDL2_ttf -lSDL2_mixer -lSDL2_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||
}
|
||||
else {
|
||||
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
||||
libs = " savepng.o -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||
}
|
||||
}
|
||||
|
||||
void set_mac() {
|
||||
@ -73,6 +89,18 @@ void set_web() {
|
||||
libs = "";
|
||||
}
|
||||
|
||||
void set_os(string o) {
|
||||
os = o;
|
||||
if(os == "linux") set_linux();
|
||||
else if(os == "mac") set_mac();
|
||||
else if(os == "mingw64") set_mingw64();
|
||||
else if(os == "web") set_web();
|
||||
else {
|
||||
fprintf(stderr, "unknown OS");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
vector<string> modules;
|
||||
|
||||
time_t get_file_time(const string s) {
|
||||
@ -97,13 +125,7 @@ bool file_exists(string fname) {
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
#if defined(MAC)
|
||||
set_mac();
|
||||
#elif defined(WINDOWS)
|
||||
set_mingw64();
|
||||
#else
|
||||
set_linux();
|
||||
#endif
|
||||
set_os(os);
|
||||
int retval = 0; // for storing return values of some function calls
|
||||
for(string fname: {"Makefile.loc", "Makefile.simple", "Makefile"})
|
||||
if(file_exists(fname)) {
|
||||
@ -122,26 +144,40 @@ int main(int argc, char **argv) {
|
||||
else obj_dir += c;
|
||||
}
|
||||
else if(s == "-mingw64") {
|
||||
set_mingw64();
|
||||
set_os("mingw64");
|
||||
obj_dir += "/mingw64";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-mac") {
|
||||
set_mac();
|
||||
set_os("mac");
|
||||
obj_dir += "/mac";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-linux") {
|
||||
set_linux();
|
||||
set_os("linux");
|
||||
obj_dir += "/linux";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-web") {
|
||||
set_web();
|
||||
set_os("web");
|
||||
modules.push_back("hyperweb");
|
||||
obj_dir += "/web";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-sdl1") {
|
||||
sdlver = 1;
|
||||
set_os(os);
|
||||
obj_dir += "/sdl1";
|
||||
setdir += "../";
|
||||
opts += " -DCAP_SDL2=0";
|
||||
}
|
||||
else if(s == "-sdl2") {
|
||||
sdlver = 2;
|
||||
set_os(os);
|
||||
obj_dir += "/sdl2";
|
||||
setdir += "../";
|
||||
opts += " -DCAP_SDL2=1";
|
||||
}
|
||||
else if(s.substr(0, 2) == "-f") {
|
||||
opts += " " + s;
|
||||
obj_dir += "/";
|
||||
|
30
netgen.cpp
30
netgen.cpp
@ -208,7 +208,7 @@ EX namespace netgen {
|
||||
|
||||
void blackline(vec v1, vec v2, color_t col = 0x000000FF) {
|
||||
#if CAP_SDLGFX
|
||||
aalineColor(s, int(v1.x), int(v1.y), int(v2.x), int(v2.y), col);
|
||||
aalineColor(srend, int(v1.x), int(v1.y), int(v2.x), int(v2.y), col);
|
||||
#elif CAP_SDL
|
||||
SDL_LockSurface(s);
|
||||
int len = abs(v1.x-v2.x) + abs(v1.y-v2.y);
|
||||
@ -226,7 +226,7 @@ EX namespace netgen {
|
||||
polyy[0] = int(v1.y);
|
||||
polyy[1] = int(v2.y);
|
||||
polyy[2] = int(v3.y);
|
||||
filledPolygonColorI(s, polyx, polyy, 3, col);
|
||||
filledPolygonColorI(srend, polyx, polyy, 3, col);
|
||||
#elif CAP_SDL
|
||||
SDL_LockSurface(s);
|
||||
int len = abs(v1.x-v2.x) + abs(v1.y-v2.y);
|
||||
@ -238,7 +238,7 @@ EX namespace netgen {
|
||||
|
||||
void blackcircle(vec v, int r, color_t col = 0x000000FF) {
|
||||
#if CAP_SDLGFX
|
||||
aacircleColor(s, int(v.x), int(v.y), r, col);
|
||||
aacircleColor(srend, int(v.x), int(v.y), r, col);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -338,9 +338,14 @@ EX namespace netgen {
|
||||
drawline(hvec(i,e), hvec(i,7), 0x80808080);
|
||||
} */
|
||||
|
||||
SDL_Surface *sav = s;
|
||||
dynamicval<SDL_Surface*> ds(s);
|
||||
|
||||
s = net = SDL_CreateRGBSurface(SDL_SWSURFACE,SX*nscale,SY*nscale,32,0,0,0,0);
|
||||
#if CAP_SDL2
|
||||
dynamicval<SDL_Renderer*> dr(srend);
|
||||
srend = SDL_CreateSoftwareRenderer(s);
|
||||
#endif
|
||||
|
||||
SDL_FillRect(net, NULL, 0xFFFFFF);
|
||||
|
||||
int pateks = 0;
|
||||
@ -440,8 +445,9 @@ EX namespace netgen {
|
||||
|
||||
SDL_FreeSurface(net);
|
||||
SDL_FreeSurface(quarter);
|
||||
|
||||
s = sav;
|
||||
#if CAP_SDL2
|
||||
SDL_DestroyRenderer(srend);
|
||||
#endif
|
||||
}
|
||||
|
||||
vec mousepos, rel;
|
||||
@ -554,7 +560,8 @@ EX namespace netgen {
|
||||
}
|
||||
|
||||
SDL_UnlockSurface(s);
|
||||
SDL_UpdateRect(s, 0, 0, 0, 0);
|
||||
|
||||
present_surface();
|
||||
}
|
||||
|
||||
double rs, rz;
|
||||
@ -609,9 +616,13 @@ EX namespace netgen {
|
||||
break;
|
||||
}
|
||||
|
||||
case SDL_KEYDOWN: {
|
||||
case SDL_KEYDOWN: {
|
||||
int key = event.key.keysym.sym;
|
||||
#if CAP_SDL2
|
||||
int uni = key;
|
||||
#else
|
||||
int uni = event.key.keysym.unicode;
|
||||
#endif
|
||||
|
||||
if(uni == 'q' || key == SDLK_ESCAPE || key == SDLK_F10)
|
||||
return;
|
||||
@ -636,7 +647,10 @@ EX namespace netgen {
|
||||
}
|
||||
|
||||
void designNet() {
|
||||
#if !CAP_SDL2
|
||||
// fstx
|
||||
s = SDL_SetVideoMode(SX, SY, 32, 0);
|
||||
#endif
|
||||
netgen_loop();
|
||||
saveData();
|
||||
setvideomode();
|
||||
|
20
rug.cpp
20
rug.cpp
@ -1333,20 +1333,20 @@ EX void actDraw() {
|
||||
lastticks = ticks;
|
||||
|
||||
#if CAP_HOLDKEYS
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
if(keystate[SDLK_LALT]) alpha /= 10;
|
||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
||||
if(keystate[SDL12(SDLK_LALT, SDL_SCANCODE_LALT)]) alpha /= 10;
|
||||
#endif
|
||||
|
||||
#if CAP_HOLDKEYS
|
||||
auto perform_finger = [=] () {
|
||||
if(keystate[SDLK_HOME]) finger_range /= exp(alpha);
|
||||
if(keystate[SDLK_END]) finger_range *= exp(alpha);
|
||||
if(keystate[SDLK_LEFT]) finger_on(0, -alpha);
|
||||
if(keystate[SDLK_RIGHT]) finger_on(0, alpha);
|
||||
if(keystate[SDLK_UP]) finger_on(1, alpha);
|
||||
if(keystate[SDLK_DOWN]) finger_on(1, -alpha);
|
||||
if(keystate[SDLK_PAGEDOWN]) finger_on(2, -alpha);
|
||||
if(keystate[SDLK_PAGEUP]) finger_on(2, +alpha);
|
||||
if(keystate[SDL12(SDLK_HOME, SDL_SCANCODE_HOME)]) finger_range /= exp(alpha);
|
||||
if(keystate[SDL12(SDLK_END, SDL_SCANCODE_END)]) finger_range *= exp(alpha);
|
||||
if(keystate[SDL12(SDLK_LEFT, SDL_SCANCODE_LEFT)]) finger_on(0, -alpha);
|
||||
if(keystate[SDL12(SDLK_RIGHT, SDL_SCANCODE_RIGHT)]) finger_on(0, alpha);
|
||||
if(keystate[SDL12(SDLK_UP, SDL_SCANCODE_UP)]) finger_on(1, alpha);
|
||||
if(keystate[SDL12(SDLK_DOWN, SDL_SCANCODE_DOWN)]) finger_on(1, -alpha);
|
||||
if(keystate[SDL12(SDLK_PAGEDOWN, SDL_SCANCODE_PAGEDOWN)]) finger_on(2, -alpha);
|
||||
if(keystate[SDL12(SDLK_PAGEUP, SDL_SCANCODE_PAGEUP)]) finger_on(2, +alpha);
|
||||
};
|
||||
|
||||
if(finger_center)
|
||||
|
@ -876,8 +876,12 @@ void movePlayer(monster *m, int delta) {
|
||||
}
|
||||
|
||||
#if CAP_SDL
|
||||
Uint8 *keystate = SDL_GetKeyState(NULL);
|
||||
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
||||
#if CAP_SDL2
|
||||
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) {
|
||||
// playermoved = true;
|
||||
hyperpoint h = inverse_shift(m->pat, mouseh);
|
||||
|
36
sysconfig.h
36
sysconfig.h
@ -121,6 +121,10 @@
|
||||
#define CAP_SDL (!ISMOBILE)
|
||||
#endif
|
||||
|
||||
#ifndef CAP_SDL2
|
||||
#define CAP_SDL2 1
|
||||
#endif
|
||||
|
||||
#ifndef CAP_COMPASS
|
||||
#define CAP_COMPASS ISMOBILE
|
||||
#endif
|
||||
@ -340,23 +344,55 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#if CAP_SDL
|
||||
#if CAP_SDL2
|
||||
#include <SDL2/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
|
||||
|
||||
#if !ISMAC
|
||||
#undef main
|
||||
#endif
|
||||
|
||||
#if CAP_SDLAUDIO
|
||||
#if CAP_SDL2
|
||||
#include <SDL2/SDL_mixer.h>
|
||||
#else
|
||||
#include <SDL/SDL_mixer.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if CAP_SDLTTF
|
||||
#if CAP_SDL2
|
||||
#include <SDL2/SDL_ttf.h>
|
||||
#else
|
||||
#include <SDL/SDL_ttf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if CAP_SDLGFX
|
||||
#if CAP_SDL2
|
||||
#include <SDL2/SDL2_gfxPrimitives.h>
|
||||
#else
|
||||
#include <SDL/SDL_gfxPrimitives.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif !ISFAKEMOBILE
|
||||
#define SDLK_F1 (123001)
|
||||
|
@ -155,7 +155,7 @@ SDL_Surface *convertSurface(SDL_Surface* s) {
|
||||
fmt.Aloss = fmt.Rloss = fmt.Gloss = fmt.Bloss = 0;
|
||||
fmt.palette = NULL;
|
||||
|
||||
#ifndef SDL2
|
||||
#if !CAP_SDL2
|
||||
fmt.alpha = 0;
|
||||
fmt.colorkey = 0x1ffffff;
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user