X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2FDoom2DF.lpr;h=98c39b5d6c5b15c55b27976b3878433cdea94d66;hb=b874151ca697386d74cfbd29e1c21bca1b4825e2;hp=d1fbc06443004070580798c0383ac96451e82199;hpb=a5e92d259e7300450033800543944cc406510214;p=d2df-sdl.git diff --git a/src/game/Doom2DF.lpr b/src/game/Doom2DF.lpr index d1fbc06..98c39b5 100644 --- a/src/game/Doom2DF.lpr +++ b/src/game/Doom2DF.lpr @@ -123,11 +123,20 @@ uses g_res_downloader in 'g_res_downloader.pas', g_grid in 'g_grid.pas', g_game in 'g_game.pas', - g_gfx in 'g_gfx.pas', - g_gui in 'g_gui.pas', + {$IFDEF ENABLE_GFX} + g_gfx in 'g_gfx.pas', + {$ENDIF} + {$IFDEF ENABLE_GIBS} + g_gibs in 'g_gibs.pas', + {$ENDIF} + {$IFDEF ENABLE_SHELLS} + g_shells in 'g_shells.pas', + {$ENDIF} + {$IFDEF ENABLE_CORPSES} + g_corpses in 'g_corpses.pas', + {$ENDIF} g_items in 'g_items.pas', g_map in 'g_map.pas', - g_menu in 'g_menu.pas', g_monsters in 'g_monsters.pas', g_options in 'g_options.pas', g_phys in 'g_phys.pas', @@ -135,38 +144,72 @@ uses g_playermodel in 'g_playermodel.pas', g_saveload in 'g_saveload.pas', g_sound in 'g_sound.pas', - g_textures in 'g_textures.pas', + g_animations in 'g_animations.pas', 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} - r_console in 'opengl/r_console.pas', - r_game in 'opengl/r_game.pas', - r_gfx in 'opengl/r_gfx.pas', - r_graphics in 'opengl/r_graphics.pas', - r_items in 'opengl/r_items.pas', - r_map in 'opengl/r_map.pas', - r_monsters in 'opengl/r_monsters.pas', - r_netmaster in 'opengl/r_netmaster.pas', - r_panel in 'opengl/r_panel.pas', - r_player in 'opengl/r_player.pas', - r_playermodel in 'opengl/r_playermodel.pas', - r_texture in 'opengl/r_texture.pas', - r_weapons in 'opengl/r_weapons.pas', - r_window in 'opengl/r_window.pas', - r_render in 'opengl/r_render.pas', + {$IFDEF ENABLE_SYSTEM} + {$IFDEF USE_SYSSTUB} + g_system in 'stub/g_system.pas', + {$ENDIF} + {$IFDEF USE_SDL} + g_system in 'sdl/g_system.pas', + {$ENDIF} + {$IFDEF USE_SDL2} + g_system in 'sdl2/g_system.pas', + {$ENDIF} + {$ENDIF} + + {$IFDEF ENABLE_MENU} + g_gui in 'g_gui.pas', + g_menu in 'g_menu.pas', + {$ENDIF} + +{$IFDEF ENABLE_RENDER} + {$IF DEFINED(USE_OPENGL) OR DEFINED(USE_GLES1) OR DEFINED(USE_GLSTUB)} + {$I ../shared/vampimg.inc} + r_animations in 'opengl/r_animations.pas', + r_console in 'opengl/r_console.pas', + r_game in 'opengl/r_game.pas', + {$IFDEF ENABLE_GFX} + r_gfx in 'opengl/r_gfx.pas', + {$ENDIF} + r_graphics in 'opengl/r_graphics.pas', + r_items in 'opengl/r_items.pas', + r_map in 'opengl/r_map.pas', + r_monsters in 'opengl/r_monsters.pas', + r_netmaster in 'opengl/r_netmaster.pas', + r_player in 'opengl/r_player.pas', + r_playermodel in 'opengl/r_playermodel.pas', + r_render in 'opengl/r_render.pas', + r_texture in 'opengl/r_texture.pas', + r_textures in 'opengl/r_textures.pas', + r_weapons in 'opengl/r_weapons.pas', + r_window in 'opengl/r_window.pas', + {$IFDEF ENABLE_TOUCH} + r_touch in 'opengl/r_touch.pas', + {$ENDIF} + {$IFDEF ENABLE_MENU} + r_gui in 'opengl/r_gui.pas', + {$ENDIF} + {$ELSEIF DEFINED(USE_STUBRENDER)} + r_render in 'renders/stub/r_render.pas', + {$ELSEIF DEFINED(USE_NEWGL)} + {$I ../shared/vampimg.inc} + r_render in 'renders/opengl/r_render.pas', + r_atlas in 'renders/opengl/r_atlas.pas', + r_textures in 'renders/opengl/r_textures.pas', + r_draw in 'renders/opengl/r_draw.pas', + r_map in 'renders/opengl/r_map.pas', + r_fonts in 'renders/opengl/r_fonts.pas', + r_common in 'renders/opengl/r_common.pas', + r_console in 'renders/opengl/r_console.pas', + r_gui in 'renders/opengl/r_gui.pas', + {$ELSE} + {$FATAL render driver not selected} + {$ENDIF} +{$ENDIF} {$IFDEF USE_FMOD} fmod in '../lib/FMOD/fmod.pas', @@ -200,7 +243,6 @@ uses fui_flexlay in '../flexui/fui_flexlay.pas', fui_ctls in '../flexui/fui_ctls.pas', {$ENDIF} - {$I ../shared/vampimg.inc} SysUtils, Classes; @@ -219,11 +261,7 @@ uses UseNativeMusic: Boolean; {$ENDIF} - wLoadingQuit: Boolean = false; - Time, Time_Delta, Time_Old: Int64; - Frame: Int64; - flag: Boolean = false; - + Time_Old: Int64; NoSound: Boolean; procedure Update (); @@ -235,6 +273,9 @@ begin if (NetMode = NET_SERVER) then g_Net_Host_Update() else if (NetMode = NET_CLIENT) then g_Net_Client_Update(); // think +{$IFDEF ENABLE_RENDER} + r_Render_Update; +{$ENDIF} g_Game_Update(); // server: send any accumulated outgoing data to clients if NetMode = NET_SERVER then g_Net_Flush(); @@ -243,10 +284,17 @@ end; function ProcessMessage (): Boolean; var i, t: Integer; + flag: Boolean; + Time, Time_Delta: Int64; + Frame: Int64; begin - result := sys_HandleInput(); + {$IFDEF ENABLE_SYSTEM} + Result := sys_HandleInput(); + {$ELSE} + Result := False; + {$ENDIF} - Time := sys_GetTicks(); + Time := GetTickCount64(); Time_Delta := Time-Time_Old; flag := false; @@ -272,12 +320,6 @@ begin g_Map_ProfilersEnd(); g_Mons_ProfilersEnd(); - if wLoadingQuit then - begin - g_Game_Free(); - g_Game_Quit(); - end; - if (gExit = EXIT_QUIT) then begin result := true; @@ -298,12 +340,16 @@ begin gLerpFactor := 1.0 else gLerpFactor := nmin(1.0, (Time - Time_Old) / 28.0); - r_Game_Draw; - sys_Repaint; + {$IFDEF ENABLE_RENDER} + r_Render_Draw; + {$ENDIF} + {$IFDEF ENABLE_SYSTEM} + sys_Repaint; + {$ENDIF} Frame := Time end else - sys_Delay(1); + Sleep(1); e_SoundUpdate(); end; @@ -325,19 +371,21 @@ begin Inc(idx); //if arg = '--twinkletwinkle' then gwin_k8_enable_light_experiments := true; if arg = '--jah' then g_profile_history_size := 100; - if arg = '--no-particles' then gpart_dbg_enabled := false; if arg = '--no-los' then gmon_dbg_los_enabled := false; if arg = '--profile-render' then g_profile_frame_draw := true; if arg = '--profile-coldet' then g_profile_collision := true; if arg = '--profile-los' then g_profile_los := true; - if arg = '--no-part-phys' then gpart_dbg_phys_enabled := false; - if arg = '--no-part-physics' then gpart_dbg_phys_enabled := false; - if arg = '--no-particles-phys' then gpart_dbg_phys_enabled := false; - if arg = '--no-particles-physics' then gpart_dbg_phys_enabled := false; - if arg = '--no-particle-phys' then gpart_dbg_phys_enabled := false; - if arg = '--no-particle-physics' then gpart_dbg_phys_enabled := false; + {$IFDEF ENABLE_GFX} + if arg = '--no-particles' then gpart_dbg_enabled := false; + if arg = '--no-part-phys' then gpart_dbg_phys_enabled := false; + if arg = '--no-part-physics' then gpart_dbg_phys_enabled := false; + if arg = '--no-particles-phys' then gpart_dbg_phys_enabled := false; + if arg = '--no-particles-physics' then gpart_dbg_phys_enabled := false; + if arg = '--no-particle-phys' then gpart_dbg_phys_enabled := false; + if arg = '--no-particle-physics' then gpart_dbg_phys_enabled := false; + {$ENDIF} if arg = '--debug-input' then g_dbg_input := True; @@ -363,7 +411,6 @@ begin begin itmp := 0; val(ParamStr(idx), itmp, valres); - {$IFNDEF HEADLESS} if (valres = 0) and (not g_holmes_imfunctional) then begin case itmp of @@ -372,11 +419,6 @@ begin 16: uiContext.font := 'win16'; end; end; - {$ELSE} - // fuck off, fpc! - itmp := itmp; - valres := valres; - {$ENDIF} Inc(idx); end; end; @@ -951,6 +993,27 @@ end; end; end; + procedure ScreenResize (w, h: Integer); + begin + {$IFDEF ENABLE_RENDER} + r_Render_Resize(w, h); + {$IFDEF ENABLE_HOLMES} + fuiScrWdt := w; + fuiScrHgt := h; + {$ENDIF} + {$IFNDEF ANDROID} + (* This will fix menu reset on keyboard showing *) + {$IFDEF ENABLE_MENU} + g_Menu_Reset; + {$ENDIF} + {$ENDIF} + //g_Game_ClearLoading; + {$IFDEF ENABLE_HOLMES} + if assigned(oglInitCB) then oglInitCB; + {$ENDIF} + {$ENDIF} + end; + procedure Startup; begin Randomize; @@ -959,48 +1022,64 @@ end; InitPrep; e_Input_Initialize; InitSound; - sys_Init; - sys_CharPress := @CharPress; (* install hook *) + {$IFDEF ENABLE_SYSTEM} + sys_Init; + sys_CharPress := @CharPress; (* install hook *) + sys_ScreenResize := @ScreenResize; (* install hook *) + {$ENDIF} g_Options_SetDefault; g_Options_SetDefaultVideo; g_Console_Initialize; // TODO move load configs here g_Language_Set(gLanguage); - r_Render_Initialize; - g_Touch_Init; + {$IFDEF ENABLE_RENDER} + r_Render_Initialize; + {$ENDIF} DebugOptions; g_Net_InitLowLevel; // TODO init serverlist {$IFDEF ENABLE_HOLMES} InitHolmes; {$ENDIF} + {$IFDEF ENABLE_RENDER} + g_PlayerModel_LoadAll; + r_Render_Load; + {$ELSE} + g_PlayerModel_LoadFake('doomer', 'doomer.wad'); + {$ENDIF} g_Game_Init; - {$IFNDEF HEADLESS} + {$IFDEF ENABLE_MENU} g_Menu_Init; - g_GUI_Init; {$ENDIF} g_Game_Process_Params; // TODO reload GAME textures g_Console_Init; // welcome message - {$IFNDEF HEADLESS} + {$IFDEF ENABLE_MENU} if (not gGameOn) and gAskLanguage then g_Menu_AskLanguage; {$ENDIF} - Time_Old := sys_GetTicks(); + Time_Old := GetTickCount64(); while not ProcessMessage() do begin end; g_Console_WriteGameConfig; - {$IFNDEF HEADLESS} + {$IFDEF ENABLE_MENU} g_GUI_Destroy; g_Menu_Free; {$ENDIF} + {$IFDEF ENABLE_RENDER} + r_Render_Free; + {$ENDIF} {$IFDEF ENABLE_HOLMES} FreeHolmes; {$ENDIF} g_Net_Slist_ShutdownAll; g_Net_DeinitLowLevel; (* g_Touch_Finalize; *) - r_Render_Finalize; - sys_Final; + {$IFDEF ENABLE_RENDER} + r_Render_Finalize; + {$ENDIF} + {$IFDEF ENABLE_SYSTEM} + sys_Final; + {$ENDIF} g_Console_Finalize; e_ReleaseSoundSystem; e_Input_Finalize;