diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 5bceb41af2105b7821b43663e12a8930b1cbe518..81eade6f2a55ab1d42b15ba88d88cc92570d7961 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
procedure DebugCommands(P: SSArray);
procedure g_Game_Process_Params;
procedure g_Game_SetLoadingText(Text: String; Max: Integer; reWrite: Boolean);
-procedure g_Game_StepLoading();
+procedure g_Game_StepLoading(Value: Integer = -1);
procedure g_Game_ClearLoading();
procedure g_Game_SetDebugMode();
procedure DrawLoadingStat();
gChatSounds: Array of TChatSound;
g_dbg_ignore_bounds: Boolean = false;
+ r_smallmap_h: Integer = 0; // 0: left; 1: center; 2: right
+ r_smallmap_v: Integer = 2; // 0: top; 1: center; 2: bottom
// move button values:
// bits 0-1: l/r state:
if (not g_Game_IsClient) and
(
(
- (e_KeyPressed(IK_RETURN) or e_KeyPressed(IK_KPRETURN) or e_KeyPressed(IK_SPACE))
+ (
+ e_KeyPressed(IK_RETURN) or e_KeyPressed(IK_KPRETURN) or e_KeyPressed(IK_SPACE) or
+ e_KeyPressed(VK_FIRE) or e_KeyPressed(VK_OPEN)
+ )
and (not gJustChatted) and (not gConsoleShow) and (not gChatShow)
and (g_ActiveWindow = nil)
)
begin
if g_ActiveWindow = nil then
begin
- if e_KeyPressed(gGameControls.GameControls.Chat) then
+ if e_KeyPressed(gGameControls.GameControls.Chat) or e_KeyPressed(VK_CHAT) then
g_Console_Chat_Switch(False)
- else if (e_KeyPressed(gGameControls.GameControls.TeamChat)) and
+ else if (e_KeyPressed(gGameControls.GameControls.TeamChat) or e_KeyPressed(VK_TEAM)) and
(gGameSettings.GameMode in [GM_TDM, GM_CTF]) then
g_Console_Chat_Switch(True);
end;
end else
if not gChatEnter then
if (not e_KeyPressed(gGameControls.GameControls.Chat))
- and (not e_KeyPressed(gGameControls.GameControls.TeamChat)) then
+ and (not e_KeyPressed(gGameControls.GameControls.TeamChat))
+ and (not e_KeyPressed(VK_CHAT))
+ and (not e_KeyPressed(VK_TEAM)) then
gChatEnter := True;
// Ñòàòèñòèêà ïî Tab:
if gGameOn then
IsDrawStat := (not gConsoleShow) and (not gChatShow) and
(gGameSettings.GameType <> GT_SINGLE) and
- e_KeyPressed(gGameControls.GameControls.Stat);
+ (e_KeyPressed(gGameControls.GameControls.Stat) or e_KeyPressed(VK_STATUS));
// Èãðà èäåò:
if gGameOn and not gPause and (gState <> STATE_FOLD) then
end;
// Äåëàåì ñêðèíøîò (íå ÷àùå 200 ìèëëèñåêóíä):
- if e_KeyPressed(gGameControls.GameControls.TakeScreenshot) then
+ if e_KeyPressed(gGameControls.GameControls.TakeScreenshot) or e_KeyPressed(VK_PRINTSCR) then
if (GetTimer()-LastScreenShot) > 200000 div 1000 then
begin
g_TakeScreenShot();
g_ProcessMessages();
- if e_KeyPressed(IK_TAB) then
+ if e_KeyPressed(IK_TAB) or e_KeyPressed(VK_STATUS) then
begin
if not gStatsPressed then
begin
//conwritefln('OLD: (%s,%s)-(%s,%s)', [sX, sY, sWidth, sHeight]);
fixViewportForScale();
//conwritefln(' (%s,%s)-(%s,%s)', [sX, sY, sWidth, sHeight]);
+
if (g_dbg_scale <> 1.0) and (not g_dbg_ignore_bounds) then
begin
if (sX+sWidth > gMapInfo.Width) then sX := gMapInfo.Width-sWidth;
if (gBackSize.X <= gPlayerScreenSize.X) or (gMapInfo.Width <= sWidth) then c := 0 else c := trunc((gBackSize.X-gPlayerScreenSize.X)*sX/(gMapInfo.Width-sWidth));
if (gBackSize.Y <= gPlayerScreenSize.Y) or (gMapInfo.Height <= sHeight) then d := 0 else d := trunc((gBackSize.Y-gPlayerScreenSize.Y)*sY/(gMapInfo.Height-sHeight));
end;
+
+ //r_smallmap_h: 0: left; 1: center; 2: right
+ //r_smallmap_v: 0: top; 1: center; 2: bottom
+ // horiz small map?
+ if (gMapInfo.Width = sWidth) then
+ begin
+ sX := 0;
+ end
+ else if (gMapInfo.Width < sWidth) then
+ begin
+ case r_smallmap_h of
+ 1: sX := -((sWidth-gMapInfo.Width) div 2); // center
+ 2: sX := -(sWidth-gMapInfo.Width); // right
+ else sX := 0; // left
+ end;
+ end;
+ // vert small map?
+ if (gMapInfo.Height = sHeight) then
+ begin
+ sY := 0;
+ end
+ else if (gMapInfo.Height < sHeight) then
+ begin
+ case r_smallmap_v of
+ 1: sY := -((sHeight-gMapInfo.Height) div 2); // center
+ 2: sY := -(sHeight-gMapInfo.Height); // bottom
+ else sY := 0; // top
+ end;
+ end;
+
p.viewPortX := sX;
p.viewPortY := sY;
p.viewPortW := sWidth;
ProcessLoading(true);
- if e_KeyPressed(IK_ESCAPE) or e_KeyPressed(IK_SPACE) then
+ if e_KeyPressed(IK_ESCAPE) or e_KeyPressed(IK_SPACE) or e_KeyPressed(VK_ESCAPE) then
begin
State := 0;
break;
gWADHash := MD5File(MapsDir + NewWAD);
g_Game_LoadWAD(NewWAD);
end else
- // hash recieved in MC_RECV_GameEvent -> NET_EV_MAPSTART
+ // hash received in MC_RECV_GameEvent -> NET_EV_MAPSTART
g_Game_ClientWAD(NewWAD, gWADHash);
end else
ResName := Map;
ProcessLoading(true);
end;
-procedure g_Game_StepLoading();
+procedure g_Game_StepLoading(Value: Integer = -1);
begin
with LoadingStat do
begin
- Inc(CurValue);
- Inc(ShowCount);
- if (ShowCount > LOADING_SHOW_STEP) then
+ if Value = -1 then
+ begin
+ Inc(CurValue);
+ Inc(ShowCount);
+ end
+ else
+ CurValue := Value;
+ if (ShowCount > LOADING_SHOW_STEP) or (Value > -1) then
begin
ShowCount := 0;
ProcessLoading();
conRegVar('light_enabled', @gwin_k8_enable_light_experiments, 'enable/disable dynamic lighting', 'lighting');
conRegVar('light_player_halo', @g_playerLight, 'enable/disable player halo', 'player light halo');
+
+ conRegVar('r_smallmap_align_h', @r_smallmap_h, 'halign: 0: left; 1: center; 2: right', 'horizontal aligning of small maps');
+ conRegVar('r_smallmap_align_v', @r_smallmap_v, 'valign: 0: top; 1: center; 2: bottom', 'vertial aligning of small maps');
end.