X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=0d5a73cdc2fc772cd49063dd7987c594d8d0c176;hb=82108dd50fb12ef54f0cd04891901782781fe442;hp=7a1f2978e5f18dd9d594cd83b157422f072e3d3c;hpb=cabbec9701799f82a1d1bde30cb6e235fe7a74a4;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 7a1f297..0d5a73c 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -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 @@ -211,12 +210,17 @@ const ANNOUNCE_ALL = 3; CONFIG_FILENAME = 'Doom2DF.cfg'; - LOG_FILENAME = 'Doom2DF.log'; TEST_MAP_NAME = '$$$_TEST_$$$'; STD_PLAYER_MODEL = 'Doomer'; +{$IFDEF HEADLESS} + DEFAULT_PLAYERS = 0; +{$ELSE} + DEFAULT_PLAYERS = 1; +{$ENDIF} + var gStdFont: DWORD; gGameSettings: TGameSettings; @@ -809,7 +813,9 @@ begin begin s := g_ExtractWadName(MegaWAD.endpic); if s = '' then s := MapsDir+WAD else s := GameDir+'/wads/'; + TEXTUREFILTER := GL_LINEAR; g_Texture_CreateWADEx('TEXTURE_endpic', s+MegaWAD.endpic); + TEXTUREFILTER := GL_NEAREST; end; MegaWAD.endmus := cfg.ReadStr('megawad', 'endmus', 'Standart.wad:D2DMUS\ÊÎÍÅÖ'); if MegaWAD.endmus <> '' then @@ -1335,8 +1341,10 @@ begin g_Sound_CreateWADEx('MUSIC_ROUNDMUS', GameWAD+':MUSIC\ROUNDMUS', True, True); g_Sound_CreateWADEx('MUSIC_STDENDMUS', GameWAD+':MUSIC\ENDMUS', True); +{$IFNDEF HEADLESS} g_Game_SetLoadingText(_lc[I_LOAD_MENUS], 0, False); g_Menu_Init(); +{$ENDIF} gMusic := TMusic.Create(); gMusic.SetByName('MUSIC_MENU'); @@ -2167,7 +2175,9 @@ begin //e_WriteLog('Read language file', MSG_NOTIFY); //g_Language_Load(DataDir + gLanguage + '.txt'); g_Language_Set(gLanguage); +{$IFNDEF HEADLESS} g_Menu_Reset(); +{$ENDIF} gLanguageChange := False; end; end; @@ -3501,7 +3511,7 @@ end; procedure DrawPlayer(p: TPlayer); var - px, py, a, b, c, d: Integer; + px, py, a, b, c, d, i: Integer; //R: TRect; begin if (p = nil) or (p.FDummy) then @@ -3656,8 +3666,21 @@ begin renderMapInternal(-c, -d, true); - if (gGameSettings.GameMode <> GM_SINGLE) and gPlayerIndicator then - p.DrawIndicator(); + if (gGameSettings.GameMode <> GM_SINGLE) and (gPlayerIndicator > 0) then + case gPlayerIndicator of + 1: + p.DrawIndicator(_RGB(255, 255, 255)); + + 2: + for i := 0 to High(gPlayers) do + if gPlayers[i] <> nil then + if gPlayers[i] = p then p.DrawIndicator(_RGB(255, 255, 255)) + else if (gPlayers[i].Team = p.Team) and (gPlayers[i].Team <> TEAM_NONE) then + if gPlayerIndicatorStyle = 1 then + gPlayers[i].DrawIndicator(_RGB(192, 192, 192)) + else gPlayers[i].DrawIndicator(gPlayers[i].GetColor); + end; + if p.FSpectator then e_TextureFontPrintEx(p.GameX + PLAYER_RECT_CX - 4, p.GameY + PLAYER_RECT_CY - 4, @@ -3796,15 +3819,15 @@ begin if plView1 <> nil then begin gHearPoint1.Active := True; - gHearPoint1.Coords.X := plView1.GameX; - gHearPoint1.Coords.Y := plView1.GameY; + gHearPoint1.Coords.X := plView1.GameX + PLAYER_RECT.Width; + gHearPoint1.Coords.Y := plView1.GameY + PLAYER_RECT.Height DIV 2; end else gHearPoint1.Active := False; if plView2 <> nil then begin gHearPoint2.Active := True; - gHearPoint2.Coords.X := plView2.GameX; - gHearPoint2.Coords.Y := plView2.GameY; + gHearPoint2.Coords.X := plView2.GameX + PLAYER_RECT.Width; + gHearPoint2.Coords.Y := plView2.GameY + PLAYER_RECT.Height DIV 2; end else gHearPoint2.Active := False; @@ -3997,13 +4020,8 @@ begin if gState = STATE_ENDPIC then begin ID := DWORD(-1); - if not g_Texture_Get('TEXTURE_endpic', ID) then - g_Texture_Get(_lc[I_TEXTURE_ENDPIC], ID); - - if ID <> DWORD(-1) then - e_DrawSize(ID, 0, 0, 0, False, False, gScreenWidth, gScreenHeight) - else - e_Clear(GL_COLOR_BUFFER_BIT, 0, 0, 0); + if g_Texture_Get('TEXTURE_endpic', ID) then DrawMenuBackground('TEXTURE_endpic') + else DrawMenuBackground(_lc[I_TEXTURE_ENDPIC]); if g_ActiveWindow <> nil then begin @@ -4035,7 +4053,9 @@ begin g_ActiveWindow.Draw(); end; +{$IFNDEF HEADLESS} g_Console_Draw(); +{$ENDIF} if g_debug_Sounds and gGameOn then begin @@ -4071,7 +4091,9 @@ begin g_PlayerModel_FreeData(); g_Texture_DeleteAll(); g_Frames_DeleteAll(); +{$IFNDEF HEADLESS} //g_Menu_Free(); //k8: this segfaults after resolution change; who cares? +{$ENDIF} if NetInitDone then g_Net_Free; @@ -4611,6 +4633,7 @@ begin if not InMsg.Init(Ptr, NetEvent.packet^.dataLength, True) then continue; + InMsg.ReadLongWord(); // skip size MID := InMsg.ReadByte(); if (MID = NET_MSG_INFO) and (State = 0) then @@ -7199,27 +7222,14 @@ begin e_StopChannels(); end; -procedure g_Game_UpdateTriggerSounds(); -var - i: Integer; +procedure g_Game_UpdateTriggerSounds; + var i: Integer; begin if gTriggers <> nil then for i := 0 to High(gTriggers) do with gTriggers[i] do - if (TriggerType = TRIGGER_SOUND) and - (Sound <> nil) and - (tgcLocal) and - Sound.IsPlaying() then - begin - if ((gPlayer1 <> nil) and g_CollidePoint(gPlayer1.GameX, gPlayer1.GameY, X, Y, Width, Height)) or - ((gPlayer2 <> nil) and g_CollidePoint(gPlayer2.GameX, gPlayer2.GameY, X, Y, Width, Height)) then - begin - Sound.SetPan(0.5 - tgcPan/255.0); - Sound.SetVolume(tgcVolume/255.0); - end - else - Sound.SetCoords(X+(Width div 2), Y+(Height div 2), tgcVolume/255.0); - end; + if (TriggerType = TRIGGER_SOUND) and (Sound <> nil) and tgcLocal and Sound.IsPlaying() then + Sound.SetCoordsRect(X, Y, Width, Height, tgcVolume / 255.0) end; function g_Game_IsWatchedPlayer(UID: Word): Boolean; @@ -7806,9 +7816,9 @@ begin // Number of players: s := Find_Param_Value(pars, '-pl'); if (s = '') then - n := 1 + n := DEFAULT_PLAYERS else - n := StrToIntDef(s, 1); + n := StrToIntDef(s, DEFAULT_PLAYERS); // Start: s := Find_Param_Value(pars, '-port');