diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index da2db1b1a8a484e69016a2091ba9af103a9dbf1b..3f328d493c30067afc7bf9798db2688b0ea5c514 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
*
* 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
ANNOUNCE_ALL = 3;
CONFIG_FILENAME = 'Doom2DF.cfg';
- LOG_FILENAME = 'Doom2DF.log';
TEST_MAP_NAME = '$$$_TEST_$$$';
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');
//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;
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
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
+ 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,
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;
g_ActiveWindow.Draw();
end;
+{$IFNDEF HEADLESS}
g_Console_Draw();
+{$ENDIF}
if g_debug_Sounds and gGameOn then
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;
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
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;