From 886be406b752b92fc9ba2064a5cb5d1bcd981d61 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Thu, 6 May 2021 17:34:41 +0300 Subject: [PATCH] config: save player teams --- src/game/g_console.pas | 12 ++++++++++++ src/game/g_game.pas | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/game/g_console.pas b/src/game/g_console.pas index 8eaad12..a6fa9c4 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -1032,6 +1032,8 @@ begin AddCommand('p2_color', PlayerSettingsCVars); AddCommand('p1_model', PlayerSettingsCVars); AddCommand('p2_model', PlayerSettingsCVars); + AddCommand('p1_team', PlayerSettingsCVars); + AddCommand('p2_team', PlayerSettingsCVars); AddCommand('g_max_particles', GameCVars); AddCommand('g_max_shells', GameCVars); @@ -2086,6 +2088,14 @@ procedure g_Console_WriteConfig (filename: String); WriteLn(f, name, IfThen(LongBool(gsGameFlags and flag), 1, 0)); end; + function FormatTeam(team: Byte): string; + begin + if team = TEAM_BLUE then + result := 'blue' + else + result := 'red'; + end; + begin AssignFile(f, filename); Rewrite(f); @@ -2151,12 +2161,14 @@ begin WriteLn(f, 'p1_name ', QuoteStr(Name)); WriteLn(f, 'p1_color ', Color.R, ' ', Color.G, ' ', Color.B); WriteLn(f, 'p1_model ', QuoteStr(Model)); + WriteLn(f, 'p1_team ', FormatTeam(Team)); end; with gPlayer2Settings do begin WriteLn(f, 'p2_name ', QuoteStr(Name)); WriteLn(f, 'p2_color ', Color.R, ' ', Color.G, ' ', Color.B); WriteLn(f, 'p2_model ', QuoteStr(Model)); + WriteLn(f, 'p2_team ', FormatTeam(Team)); end; // all cvars diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 2cf72c1..1d57670 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -5744,6 +5744,17 @@ end; procedure PlayerSettingsCVars(P: SSArray); var cmd: string; + team: Byte; + + function ParseTeam(s: string): Byte; + begin + result := 0; + case s of + 'red', '1': result := TEAM_RED; + 'blue', '2': result := TEAM_BLUE; + else result := TEAM_NONE; + end; + end; begin cmd := LowerCase(P[0]); case cmd of @@ -5837,6 +5848,34 @@ begin end; end; end; + 'p1_team': + begin + // TODO: switch teams if in game or store this separately + if (Length(P) > 1) then + begin + team := ParseTeam(P[1]); + if team = TEAM_NONE then + g_Console_Add('expected ''red'', ''blue'', 1 or 2') + else if not gGameOn and not g_Game_IsNet then + gPlayer1Settings.Team := team + else + g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); + end; + end; + 'p2_team': + begin + // TODO: switch teams if in game or store this separately + if (Length(P) > 1) then + begin + team := ParseTeam(P[1]); + if team = TEAM_NONE then + g_Console_Add('expected ''red'', ''blue'', 1 or 2') + else if not gGameOn and not g_Game_IsNet then + gPlayer2Settings.Team := team + else + g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); + end; + end; end; end; -- 2.29.2