mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	HyperRogue ported to SDL2 (in mymake do -sdl2)
This commit is contained in:
		
							
								
								
									
										106
									
								
								basegraph.cpp
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								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,13 +1214,26 @@ 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) { | ||||
| @@ -1182,9 +1242,22 @@ EX void setvideomode() { | ||||
|     vid.yres = 480; | ||||
|     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,9 +1349,11 @@ 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 | ||||
|   vid.full = vid.want_fullscreen; | ||||
|   | ||||
							
								
								
									
										102
									
								
								control.cpp
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								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; | ||||
|   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) { | ||||
| @@ -922,6 +984,7 @@ EX void handle_event(SDL_Event& ev) { | ||||
|     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); | ||||
|   | ||||
							
								
								
									
										11
									
								
								graph.cpp
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								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(); | ||||
| @@ -5292,12 +5292,7 @@ EX void drawscreen() { | ||||
|   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; | ||||
| @@ -587,6 +628,7 @@ EX void initConfig() { | ||||
|   t[SDLK_PAGEUP] = 48 + 4; | ||||
|   t[SDLK_PAGEDOWN] = 48 + 5; | ||||
|   t[SDLK_HOME] = 48 + 6; | ||||
| #endif | ||||
|   #endif | ||||
|  | ||||
|   scfg.joyaction[0][0] = 16 + pcFire; | ||||
| @@ -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   | ||||
|   | ||||
							
								
								
									
										58
									
								
								mymake.cpp
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								mymake.cpp
									
									
									
									
									
								
							| @@ -34,13 +34,29 @@ 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"; | ||||
|   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() { | ||||
|   preprocessor = "g++ -E"; | ||||
| @@ -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 += "/"; | ||||
|   | ||||
							
								
								
									
										28
									
								
								netgen.cpp
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								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; | ||||
| @@ -611,7 +618,11 @@ EX namespace netgen { | ||||
|          | ||||
|         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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue