index bba2caea3efb5b0c8fba366594002bec6f6057ed..11fd1e08917bc047cf7e3bc60f9f16508f1176d2 100644 (file)
procedure sys_Init;
procedure sys_Final;
procedure sys_Init;
procedure sys_Final;
+ var (* hooks *)
+ sys_CharPress: procedure (ch: AnsiChar) = nil;
+ sys_ScreenResize: procedure (w, h: Integer) = nil;
+
implementation
uses
SysUtils, SDL, Math,
implementation
uses
SysUtils, SDL, Math,
- {$INCLUDE ../nogl/noGLuses.inc}
- e_log, e_graphics, e_input, e_sound,
- g_options, g_window, g_console, g_game, g_menu, g_gui, g_main, g_basic;
+ e_log, e_input, e_sound,
+ g_options, g_console, g_game, g_menu, g_gui, g_basic;
const
GameTitle = 'Doom 2D: Forever (SDL 1.2, %s)';
const
GameTitle = 'Doom 2D: Forever (SDL 1.2, %s)';
(* --------- Graphics --------- *)
(* --------- Graphics --------- *)
- procedure UpdateSize (w, h: Integer);
- begin
- gWinSizeX := w;
- gWinSizeY := h;
- gRC_Width := w;
- gRC_Height := h;
- if glRenderToFBO then
- begin
- // store real window size in gWinSize, downscale resolution now
- w := round(w / r_pixel_scale);
- h := round(h / r_pixel_scale);
- e_ResizeFramebuffer(w, h);
- end;
- gScreenWidth := w;
- gScreenHeight := h;
- {$IFDEF ENABLE_HOLMES}
- fuiScrWdt := w;
- fuiScrHgt := h;
- {$ENDIF}
- e_ResizeWindow(w, h);
- e_InitGL;
- g_Game_SetupScreenSize;
- g_Menu_Reset;
- g_Game_ClearLoading;
- end;
-
function GetTitle (): PChar;
var info: AnsiString;
begin
function GetTitle (): PChar;
var info: AnsiString;
begin
screen := SDL_SetVideoMode(w, h, bpp, flags);
if screen <> nil then
begin
screen := SDL_SetVideoMode(w, h, bpp, flags);
if screen <> nil then
begin
- {$IFDEF NOGL_INIT}
- nogl_Init;
- if glRenderToFBO and (not nogl_ExtensionSupported('GL_OES_framebuffer_object')) then
- {$ELSE}
- if glRenderToFBO and (not Load_GL_ARB_framebuffer_object()) then
- {$ENDIF}
- begin
- e_LogWriteln('SDL: no framebuffer object support detected');
- glRenderToFBO := False
- end;
SDL_WM_SetCaption(GetTitle(), nil);
gFullScreen := fullscreen;
gRC_FullScreen := fullscreen;
SDL_WM_SetCaption(GetTitle(), nil);
gFullScreen := fullscreen;
gRC_FullScreen := fullscreen;
- UpdateSize(w, h);
+ if @sys_ScreenResize <> nil then
+ sys_ScreenResize(w, h);
result := True
end
end
result := True
end
end
procedure sys_Repaint;
begin
procedure sys_Repaint;
begin
- if glRenderToFBO then
- e_BlitFramebuffer(gWinSizeX, gWinSizeY);
SDL_GL_SwapBuffers
end;
SDL_GL_SwapBuffers
end;
e_KeyUpDown(key, down);
g_Console_ProcessBind(key, down);
end
e_KeyUpDown(key, down);
g_Console_ProcessBind(key, down);
end
- else if gConsoleShow or gChatShow or (g_ActiveWindow <> nil) then
+ else
begin
begin
- KeyPress(key) // key repeat in menus and shit
+ g_Console_ProcessBindRepeat(key)
end;
end;
- if down and IsValid1251(ev.keysym.unicode) and IsPrintable1251(ch) then
- CharPress(ch)
+ if @sys_CharPress <> nil then
+ if down and IsValid1251(ev.keysym.unicode) and IsPrintable1251(ch) then
+ sys_CharPress(ch)
end;
procedure HandleResize (var ev: TSDL_ResizeEvent);
begin
if g_dbg_input then
e_LogWritefln('Input Debug: SDL_VIDEORESIZE %s %s', [ev.w, ev.h]);
end;
procedure HandleResize (var ev: TSDL_ResizeEvent);
begin
if g_dbg_input then
e_LogWritefln('Input Debug: SDL_VIDEORESIZE %s %s', [ev.w, ev.h]);
- if modeResize = 1 then
- UpdateSize(ev.w, ev.h)
+ if (modeResize = 1) and (@sys_ScreenResize <> nil) then
+ sys_ScreenResize(ev.w, ev.h)
else if modeResize > 1 then
InitWindow(ev.w, ev.h, gBPP, gFullscreen)
end;
else if modeResize > 1 then
InitWindow(ev.w, ev.h, gBPP, gFullscreen)
end;
for i := 0 to e_MaxJoys - 1 do
RemoveJoystick(i);
if screen <> nil then
for i := 0 to e_MaxJoys - 1 do
RemoveJoystick(i);
if screen <> nil then
- begin
- {$IFDEF NOGL_INIT}
- nogl_Quit;
- {$ENDIF}
- SDL_FreeSurface(screen)
- end;
+ SDL_FreeSurface(screen);
SDL_Quit
end;
SDL_Quit
end;