diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 602fa4207f83800a25267accedefe238d58b35af..ce8c5787d770a68a1ca9adcf66b60b62931abb18 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
{$IFDEF ENABLE_MENU}
procedure g_Game_InGameMenu(Show: Boolean);
{$ENDIF}
-{$IFNDEF HEADLESS}
+{$IFDEF ENABLE_SYSTEM}
procedure CharPress (C: AnsiChar);
{$ENDIF}
+
procedure KeyPress (K: Word);
{ procedure SetWinPause(Enable: Boolean); }
gPlayer2Settings: TPlayerSettings;
gGameOn: Boolean;
gPlayerScreenSize: TDFPoint;
- gPlayer1ScreenCoord: TDFPoint;
- gPlayer2ScreenCoord: TDFPoint;
gPlayer1: TPlayer = nil;
gPlayer2: TPlayer = nil;
- gPlayerDrawn: TPlayer = nil;
gTime: LongWord;
gLerpFactor: Single = 1.0;
gSwitchGameMode: Byte = GM_DM;
gHearPoint1, gHearPoint2: THearPoint;
+ gMaxDist: Integer = 1; // for sound
gSoundEffectsDF: Boolean = False;
gSoundTriggerTime: Word = 0;
gAnnouncer: Integer = ANNOUNCE_NONE;
{$IFDEF ENABLE_RENDER}
r_render,
{$ENDIF}
- {$IFNDEF HEADLESS}
+ {$IFDEF ENABLE_SYSTEM}
g_system,
{$ENDIF}
e_res, g_window,
end;
{$ENDIF}
-{$IFNDEF HEADLESS}
+{$IFDEF ENABLE_SYSTEM}
procedure CharPress (C: AnsiChar);
{$IFDEF ENABLE_MENU}
var Msg: g_gui.TMessage;
g_Weapon_PreUpdate();
end;
+ procedure g_Game_SetupHearPoints;
+ var p1, p2: TPlayer; a, b: Integer;
+ begin
+ p1 := nil;
+ p2 := nil;
+ gHearPoint1.Active := false;
+ gHearPoint2.Active := false;
+ if gSpectMode = SPECT_MAPVIEW then
+ begin
+ // TODO something better (render dependency)
+ gHearPoint1.Active := true;
+ gHearPoint1.Coords.X := gSpectX + gScreenWidth div 2;
+ gHearPoint1.Coords.Y := gSpectY + gScreenHeight div 2;
+ end
+ else if gSpectMode = SPECT_PLAYERS then
+ begin
+ p1 := g_Player_Get(gSpectPID1);
+ if gSpectViewTwo then
+ p2 := g_Player_Get(gSpectPID2);
+ end
+ else if gSpectMode = SPECT_NONE then
+ begin
+ p1 := gPlayer1;
+ p2 := gPlayer2;
+ end;
+ if p1 <> nil then
+ begin
+ gHearPoint1.Active := true;
+ gHearPoint1.Coords.X := p1.obj.x + p1.obj.rect.width div 2;
+ gHearPoint1.Coords.Y := p1.obj.y + p1.obj.rect.height div 2;
+ end;
+ if (p2 <> nil) and (p1 <> p2) then
+ begin
+ gHearPoint2.Active := true;
+ gHearPoint2.Coords.X := p2.obj.x + p2.obj.rect.width div 2;
+ gHearPoint2.Coords.Y := p2.obj.y + p2.obj.rect.height div 2;
+ end;
+ // TODO something better (render dependency)
+ if (p1 <> nil) and (p2 <> nil) then
+ begin
+ gPlayerScreenSize.X := gScreenWidth - 196;
+ gPlayerScreenSize.Y := gScreenHeight div 2;
+ end
+ else
+ begin
+ gPlayerScreenSize.X := gScreenWidth - 196;
+ gPlayerScreenSize.Y := gScreenHeight;
+ end;
+ // sound distance
+ if gMapInfo.Height > gPlayerScreenSize.Y then a := gMapInfo.Height - gPlayerScreenSize.Y else a := gMapInfo.Height;
+ if gMapInfo.Width > gPlayerScreenSize.X then b := gMapInfo.Width - gPlayerScreenSize.X else b := gMapInfo.Width;
+ gMaxDist := Trunc(Hypot(a, b));
+ end;
+
procedure g_Game_Update();
var
{$IFDEF ENABLE_MENU}
// Статистика по Tab:
if gGameOn then
+ begin
IsDrawStat := (not gConsoleShow) and (not gChatShow) and (gGameSettings.GameType <> GT_SINGLE) and g_Console_Action(ACTION_SCORES);
+ end
+ else
+ begin
+ if g_Console_Action(ACTION_SCORES) then
+ begin
+ if not gStatsPressed then
+ begin
+ gStatsOff := not gStatsOff;
+ gStatsPressed := True;
+ end;
+ end
+ else
+ gStatsPressed := False;
+ end;
// Игра идет:
if gGameOn and not gPause and (gState <> STATE_FOLD) then
end;
end;
+ (* spectator state check from render *)
+
+ if (gPlayer1 = nil) and (gPlayer2 = nil) and (gSpectMode = SPECT_NONE) then
+ gSpectMode := SPECT_STATS;
+
+ if IsActivePlayer(g_Player_Get(gSpectPID1)) = false then
+ gSpectPID1 := GetActivePlayerID_Next();
+
+ if IsActivePlayer(g_Player_Get(gSpectPID2)) = false then
+ gSpectPID2 := GetActivePlayerID_Next();
+
+ g_Game_SetupHearPoints;
+
// Обновляем все остальное:
g_Map_Update();
g_Items_Update();
// Нужно сменить разрешение:
if gResolutionChange then
begin
- {$IFNDEF HEADLESS}
+ {$IFDEF ENABLE_RENDER}
e_WriteLog('Changing resolution', TMsgType.Notify);
r_Render_Apply;
{$ENDIF}
gMusic.Free();
g_Game_FreeData();
g_PlayerModel_FreeData();
-{$IFNDEF HEADLESS}
- //g_Menu_Free(); //k8: this segfaults after resolution change; who cares?
-{$ENDIF}
+ {$IFDEF ENABLE_MENU}
+ // g_Menu_Free(); //k8: this segfaults after resolution change; who cares?
+ {$ENDIF}
if NetInitDone then g_Net_Free;
gExit := EXIT_QUIT;
- {$IFNDEF HEADLESS}
+ {$IFDEF ENABLE_SYSTEM}
sys_RequestQuit;
{$ENDIF}
end;