{$IFDEF HEADLESS}
// HACK: shit this into env and hope for the best
SetEnvVar('SDL_AUDIODRIVER', 'dummy');
- {$ELSEIF}
+ {$ENDIF}
if NoOutput then begin Result := true; Exit end;
{$ENDIF}
e_WriteToStdOut := False; //{$IFDEF HEADLESS}True;{$ELSE}False;{$ENDIF}
- e_WriteLog('Init Input', TMsgType.Notify);
e_InitInput;
- e_WriteLog('Read config file', TMsgType.Notify);
+ sys_Init;
g_Options_Read(GameDir + '/' + CONFIG_FILENAME);
- g_Console_SysInit;
-
- //GetSystemDefaultLCID()
+ if sys_SetDisplayMode(gScreenWidth, gScreenHeight, gBPP, gFullScreen) = False then
+ raise Exception.Create('Failed to set videomode on startup.');
- //e_WriteLog('Read language file', MSG_NOTIFY);
- //g_Language_Load(DataDir + gLanguage + '.txt');
+ g_Console_SysInit;
e_WriteLog(gLanguage, TMsgType.Notify);
g_Language_Set(gLanguage);
- sys_Init;
-
{$IF not DEFINED(HEADLESS) and DEFINED(ENABLE_HOLMES)}
flexloaded := true;
if not fuiAddWad('flexui.wad') then
begin
Name := 'mOptionsControlsJoystickMenu';
for i := 0 to e_MaxJoys - 1 do
- if e_JoystickAvailable[i] then
- with AddScroll(Format(_lc[I_MENU_CONTROL_DEADZONE], [i + 1])) do
- begin
- Name := 'scDeadzone' + IntToStr(i);
- Max := 20
- end
+ with AddScroll(Format(_lc[I_MENU_CONTROL_DEADZONE], [i + 1])) do
+ begin
+ Name := 'scDeadzone' + IntToStr(i);
+ Max := 20
+ end
end;
Menu.DefControl := 'mOptionsControlsJoystickMenu';
g_GUI_AddWindow(Menu);
percentage: Integer;
begin
(* Display 0 = Primary display *)
- SDL_GetDesktopDisplayMode(0, @display);
- {$IF DEFINED(ANDROID)}
+ gScreenWidth := 640;
+ gScreenHeight := 480;
+ //gBPP := SDL_BITSPERPIXEL(dispaly.format);
+ gBPP := 32;
+ {$IFDEF ANDROID}
+ gFullScreen := True; (* rotation not allowed? *)
+ {$ELSE}
+ gFullScreen := False;
+ {$ENDIF}
+ if SDL_GetDesktopDisplayMode(0, @display) = 0 then
+ begin
+ {$IFDEF ANDROID}
gScreenWidth := display.w;
gScreenHeight := display.h;
- //gBPP := SDL_BITSPERPIXEL(dispaly.format);
- gBPP := 32;
- gFullScreen := True; (* rotation not allowed? *)
{$ELSE}
(* Window must be smaller than display *)
closest.w := display.w;
gScreenWidth := closest.w;
gScreenHeight := closest.h;
//gBPP := SDL_BITSPERPIXEL(closest.format); (* Resolution list didn't work for some reason *)
- gBPP := 32;
- gFullScreen := False;
{$ENDIF}
+ end
+ else
+ begin
+ e_LogWritefln('SDL: Failed to get desktop display mode: %s', [SDL_GetError])
+ end;
(* Must be positioned on primary display *)
gWinRealPosX := SDL_WINDOWPOS_CENTERED;
gWinRealPosY := SDL_WINDOWPOS_CENTERED;
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;
screen := SDL_SetVideoMode(w, h, bpp, flags);
if screen <> nil then
begin
+ {$IFDEF USE_NOGL}
+ nogl_Init;
+ {$ENDIF}
SDL_WM_SetCaption(GameTitle, nil);
UpdateSize(w, h);
result := True
(* --------- Init --------- *)
procedure sys_Init;
- var flags: Uint32; ok: Boolean; i: Integer;
+ var flags: Uint32; i: Integer;
begin
e_WriteLog('Init SDL', TMsgType.Notify);
flags := SDL_INIT_VIDEO or SDL_INIT_AUDIO or
(*or SDL_INIT_NOPARACHUTE*);
if SDL_Init(flags) <> 0 then
raise Exception.Create('SDL: Init failed: ' + SDL_GetError);
- ok := InitWindow(gScreenWidth, gScreenHeight, gBPP, gFullScreen);
- if not ok then
- raise Exception.Create('SDL: Failed to set videomode: ' + SDL_GetError);
SDL_EnableUNICODE(1);
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
for i := 0 to e_MaxJoys - 1 do
e_WriteLog('Releasing SDL', TMsgType.Notify);
for i := 0 to e_MaxJoys - 1 do
RemoveJoystick(i);
- SDL_FreeSurface(screen);
+ if screen <> nil then
+ begin
+ {$IFDEF USE_NOGL}
+ nogl_Quit;
+ {$ENDIF}
+ SDL_FreeSurface(screen)
+ end;
SDL_Quit
end;
uses
SysUtils, SDL2, Math,
e_log, e_graphics, e_input, e_sound,
+ {$INCLUDE ../nogl/noGLuses.inc}
{$IFDEF ENABLE_HOLMES}
g_holmes, sdlcarcass, fui_ctls,
{$ENDIF}
e_ResizeWindow(w, h);
e_InitGL;
g_Game_SetupScreenSize;
- g_Menu_Reset;
+ {$IFNDEF ANDOIRD}
+ (* This will fix menu reset on keyboard showing *)
+ g_Menu_Reset;
+ {$ENDIF}
g_Game_ClearLoading;
{$IFDEF ENABLE_HOLMES}
if assigned(oglInitCB) then oglInitCB;
context := SDL_GL_CreateContext(window);
if context <> nil then
begin
+ {$IFDEF USE_NOGL}
+ nogl_Init;
+ {$ENDIF}
UpdateSize(w, h);
result := true
end
(* --------- Init --------- *)
procedure sys_Init;
- var flags: UInt32; ok: Boolean;
+ var flags: UInt32;
begin
e_WriteLog('Init SDL2', TMsgType.Notify);
{$IFDEF HEADLESS}
SDL_SetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, '0');
if SDL_Init(flags) <> 0 then
raise Exception.Create('SDL: Init failed: ' + SDL_GetError);
- ok := InitWindow(gScreenWidth, gScreenHeight, gBPP, gFullscreen);
- if not ok then
- raise Exception.Create('SDL: Failed to set videomode: ' + SDL_GetError);
SDL_ShowCursor(SDL_DISABLE);
end;
begin
e_WriteLog('Releasing SDL2', TMsgType.Notify);
if context <> nil then
+ begin
+ {$IFDEF USE_NOGL}
+ nogl_Quit;
+ {$ENDIF}
SDL_GL_DeleteContext(context);
+ context := nil;
+ end;
if window <> nil then
+ begin
SDL_DestroyWindow(window);
- window := nil;
- context := nil;
+ window := nil;
+ end;
SDL_Quit
end;
{$ENDIF}
{$ELSE}
{$IFDEF DARWIN}
- {$LINKLIB libenet.a}
+ {$LINKLIB libenet}
{$DEFINE libraryLibENetDecl := cdecl}
{$DEFINE libraryLibENetImp := cdecl; external}
{$DEFINE libraryLibENetVar := cvar; external}
GL_KEEP = $1E00;
GL_INCR = $1E02;
GL_LINEAR = $2601;
- GL_EXTENSIONS = $1F03;
GL_TEXTURE_ENV = $2300;
GL_TEXTURE_ENV_MODE = $2200;
GL_MODULATE = $2100;
+ GL_VENDOR = $1F00;
+ GL_RENDERER = $1F01;
+ GL_VERSION = $1F02;
+ GL_EXTENSIONS = $1F03;
+ GL_SHADING_LANGUAGE_VERSION = $8B8C;
+
// const
// GL_CULL_FACE = $0B44;
// GL_FLOAT = $1406;