X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2FDoom2DF.lpr;h=7f869f160006312da7185f9baf3d2a2a8e88cfe6;hb=dbf81afaefeb52e53d2b8af3a782277229c5adaa;hp=3c3c94a706a5f93a11c0733af44340fe056bf4cc;hpb=92c7868df227201d6914f9f07c9a29ba0e2863cb;p=d2df-sdl.git diff --git a/src/game/Doom2DF.lpr b/src/game/Doom2DF.lpr index 3c3c94a..7f869f1 100644 --- a/src/game/Doom2DF.lpr +++ b/src/game/Doom2DF.lpr @@ -2,8 +2,7 @@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * the Free Software Foundation, version 3 of the License ONLY. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,13 +21,52 @@ {$ENDIF} {$HINTS OFF} -{$IFDEF USE_SDLMIXER} - {$IFDEF USE_FMOD} - {$ERROR define only one of USE_SDLMIXER or USE_FMOD} - {$ENDIF} +{$IF DEFINED(USE_SYSSTUB)} + {$IF DEFINED(USE_SDL) OR DEFINED(USE_SDL2)} + {$ERROR Only one system driver must be selected!} + {$ENDIF} +{$ELSEIF DEFINED(USE_SDL)} + {$IF DEFINED(USE_SYSSTUB) OR DEFINED(USE_SDL2)} + {$ERROR Only one system driver must be selected!} + {$ENDIF} +{$ELSEIF DEFINED(USE_SDL2)} + {$IF DEFINED(USE_SYSSTUB) OR DEFINED(USE_SDL)} + {$ERROR Only one system driver must be selected!} + {$ENDIF} {$ELSE} - {$UNDEF USE_SDLMIXER} - {$DEFINE USE_FMOD} + {$ERROR System driver not selected. Use -dUSE_SYSSTUB or -dUSE_SDL or -dUSE_SDL2} +{$ENDIF} + +{$IF DEFINED(USE_SOUNDSTUB)} + {$IF DEFINED(USE_SDLMIXER) OR DEFINED(USE_FMOD) OR DEFINED(USE_OPENAL)} + {$ERROR Only one sound driver must be selected!} + {$ENDIF} +{$ELSEIF DEFINED(USE_SDLMIXER)} + {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_FMOD) OR DEFINED(USE_OPENAL)} + {$ERROR Only one sound driver must be selected!} + {$ENDIF} +{$ELSEIF DEFINED(USE_FMOD)} + {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_SDLMIXER) OR DEFINED(USE_OPENAL)} + {$ERROR Only one sound driver must be selected!} + {$ENDIF} +{$ELSEIF DEFINED(USE_OPENAL)} + {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_SDLMIXER) OR DEFINED(USE_FMOD)} + {$ERROR Only one sound driver must be selected!} + {$ENDIF} +{$ELSE} + {$ERROR Sound driver not selected. Use -dUSE_SOUNDSTUB or -dUSE_SDLMIXER or -dUSE_FMOD or -dUSE_OPENAL} +{$ENDIF} + +{$IFDEF ENABLE_HOLMES} + {$IFDEF HEADLESS} + {$ERROR Holmes in HEADLESS mode has no sense} + {$ENDIF} + {$IFNDEF USE_SDL2} + {$ERROR Holmes supported only with SDL2} + {$ENDIF} + {$IFDEF USE_GLES1} + {$ERROR Holmes not supported with GLES} + {$ENDIF} {$ENDIF} uses @@ -48,10 +86,52 @@ uses {$IFDEF USE_MINIUPNPC} miniupnpc in '../lib/miniupnpc/miniupnpc.pas', {$ENDIF} + +{$IFDEF USE_SDL} + SDL, +{$ENDIF} +{$IFDEF USE_SDL2} SDL2 in '../lib/sdl2/sdl2.pas', -{$IFDEF USE_SDLMIXER} - SDL2_mixer in '../lib/sdl2/SDL2_mixer.pas', + {$IFDEF USE_SDLMIXER} + SDL2_mixer in '../lib/sdl2/SDL2_mixer.pas', + {$ENDIF} {$ENDIF} + +{$IFDEF USE_OPENAL} + AL in '../lib/openal/al.pas', + e_soundfile in '../engine/e_soundfile.pas', + {$IF DEFINED(USE_SDL) OR DEFINED(USE_SDL2)} + e_soundfile_wav in '../engine/e_soundfile_wav.pas', + {$ENDIF} + {$IFDEF USE_VORBIS} + vorbis in '../lib/vorbis/vorbis.pas', + e_soundfile_vorbis in '../engine/e_soundfile_vorbis.pas', + {$ENDIF} + {$IFDEF USE_FLUIDSYNTH} + fluidsynth in '../lib/fluidsynth/fluidsynth.pas', + e_soundfile_fluid in '../engine/e_soundfile_fluid.pas', + {$ENDIF} + {$IFDEF USE_MODPLUG} + modplug in '../lib/modplug/modplug.pas', + e_soundfile_modplug in '../engine/e_soundfile_modplug.pas', + {$ENDIF} + {$IFDEF USE_XMP} + xmp in '../lib/xmp/xmp.pas', + e_soundfile_xmp in '../engine/e_soundfile_xmp.pas', + {$ENDIF} + {$IFDEF USE_MPG123} + mpg123 in '../lib/mpg123/mpg123.pas', + e_soundfile_mp3 in '../engine/e_soundfile_mp3.pas', + {$ENDIF} + {$IFDEF USE_OPUS} + opus in '../lib/opus/opus.pas', + e_soundfile_opus in '../engine/e_soundfile_opus.pas', + {$ENDIF} + {$IF DEFINED(USE_VORBIS) OR DEFINED(USE_OPUS)} + ogg in '../lib/vorbis/ogg.pas', // this has to come last because link order + {$ENDIF} +{$ENDIF} + ENet in '../lib/enet/enet.pp', e_graphics in '../engine/e_graphics.pas', e_input in '../engine/e_input.pas', @@ -93,6 +173,19 @@ uses g_triggers in 'g_triggers.pas', g_weapons in 'g_weapons.pas', g_window in 'g_window.pas', +{$IFDEF USE_SYSSTUB} + g_system in 'stub/g_system.pas', + g_touch in 'stub/g_touch.pas', +{$ENDIF} +{$IFDEF USE_SDL} + g_system in 'sdl/g_system.pas', + g_touch in 'sdl/g_touch.pas', +{$ENDIF} +{$IFDEF USE_SDL2} + g_system in 'sdl2/g_system.pas', + g_touch in 'sdl2/g_touch.pas', +{$ENDIF} + SysUtils, {$IFDEF USE_FMOD} fmod in '../lib/FMOD/fmod.pas', @@ -103,6 +196,7 @@ uses xprofiler in '../shared/xprofiler.pas', binheap in '../shared/binheap.pas', hashtable in '../shared/hashtable.pas', + fhashdb in '../shared/fhashdb.pas', idpool in '../shared/idpool.pas', xparser in '../shared/xparser.pas', xdynrec in '../shared/xdynrec.pas', @@ -141,6 +235,9 @@ function SDL_main(argc: CInt; argv: PPChar): CInt; cdecl; var f: Integer; noct: Boolean = false; +{$IFDEF ANDROID} + storage: String; +{$ENDIF} //tfo: Text; begin SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]); //k8: fuck off, that's why @@ -148,25 +245,53 @@ begin {$IFDEF ANDROID} {$I-} e_SetSafeSlowLog(true); - Chdir(SDL_AndroidGetExternalStoragePath()); + if SDL_AndroidGetExternalStorageState() <> 0 then + begin + storage := SDL_AndroidGetExternalStoragePath(); + Chdir(storage); + e_WriteLog('Use external storage: ' + storage, TMsgType.Notify) + end + else + begin + storage := SDL_AndroidGetInternalStoragePath(); + Chdir(storage); + e_WriteLog('Use internal storage: ' + storage, TMsgType.Notify) + end; if IOresult <> 0 then begin - Chdir(SDL_AndroidGetInternalStoragePath()); - if IOresult <> 0 then - begin - e_WriteLog('Fuck! Cant chdir to any game directory :(', TMsgType.Fatal); - result := 1; - exit; - end; + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, PChar('Invalid path'), PChar('Can''t chdir to ' + storage), nil); + result := 1; + exit end; + SetEnvVar('TIMIDITY_CFG', 'timidity.cfg'); {$ENDIF ANDROID} - for f := 1 to ParamCount do + f := 1; + while f <= ParamCount do + begin + case ParamStr(f) of + '--gdb': noct := true; + '--log': conbufDumpToStdOut := true; + '--safe-log': e_SetSafeSlowLog(true); + '--log-file': + if f + 1 <= ParamCount then + begin + Inc(f); + LogFileName := ParamStr(f) + end; + end; + Inc(f) + end; + + if LogFileName = '' then begin - if ParamStr(f) = '--gdb' then noct := true - else if ParamStr(f) = '--log' then conbufDumpToStdOut := true - else if ParamStr(f) = '--safe-log' then e_SetSafeSlowLog(true); +{$IFDEF HEADLESS} + LogFileName := 'Doom2DF_H.log'; +{$ELSE} + LogFileName := 'Doom2DF.log'; +{$ENDIF} end; + if noct then begin Main()