From: Stas'M Date: Thu, 25 Jul 2019 17:06:57 +0000 (+0300) Subject: Console: Automatically save user-defined binds X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=commitdiff_plain;h=5c79a5c27e9330bdb53075734ea29efc38de10a6 Console: Automatically save user-defined binds --- diff --git a/src/game/g_console.pas b/src/game/g_console.pas index fd7c366..6f02743 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -48,6 +48,7 @@ procedure g_Console_Clear; function g_Console_CommandBlacklisted (C: AnsiString): Boolean; procedure g_Console_ReadConfig (filename: String); procedure g_Console_WriteConfig (filename: String); +procedure g_Console_WriteGameConfig; function g_Console_Interactive: Boolean; function g_Console_Action (action: Integer): Boolean; @@ -77,6 +78,7 @@ var gChatTeam: Boolean = false; gAllowConsoleMessages: Boolean = true; gJustChatted: Boolean = false; // ÷òîáû àäìèí â èíòåðå ÷àòÿñü íå ïðîìàòûâàë ñòàòèñòèêó + gParsingBinds: Boolean = false; // íå ïåðåñîõðàíÿòü êîíôèã âî âðåìÿ ïàðñèíãà gPlayerAction: Array [0..1, 0..LAST_ACTION] of Boolean; // [player, action] implementation @@ -954,9 +956,11 @@ begin WhitelistCommand('g_scorelimit'); WhitelistCommand('g_timelimit'); + gParsingBinds := True; g_Console_ResetBinds; g_Console_ReadConfig(GameDir + '/dfconfig.cfg'); g_Console_ReadConfig(GameDir + '/autoexec.cfg'); + gParsingBinds := False; g_Console_Add(Format(_lc[I_CONSOLE_WELCOME], [GAME_VERSION])); g_Console_Add(''); @@ -1650,8 +1654,9 @@ begin if key > 0 then begin gInputBinds[key].down := ParseAlias(down); - gInputBinds[key].up := ParseAlias(up) - end + gInputBinds[key].up := ParseAlias(up); + end; + g_Console_WriteGameConfig(); end; function g_Console_MatchBind (key: Integer; down: AnsiString; up: AnsiString = ''): Boolean; @@ -1830,10 +1835,10 @@ begin while (i <= len) and (s[i] <= ' ') do inc(i); (* skip comments *) if (i <= len) and ((s[i] <> '#') and ((i + 1 > len) or (s[i] <> '/') or (s[i + 1] <> '/'))) then - g_Console_Process(s, True) + g_Console_Process(s, True); end end; - CloseFile(f) + CloseFile(f); end end; @@ -1869,5 +1874,11 @@ begin CloseFile(f) end; +procedure g_Console_WriteGameConfig; +begin + if gParsingBinds then + Exit; + g_Console_WriteConfig(GameDir + '/dfconfig.cfg'); +end; end. diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas index c6e5339..ba91ca3 100644 --- a/src/game/g_menu.pas +++ b/src/game/g_menu.pas @@ -369,7 +369,7 @@ begin if g_Game_IsClient then MC_SEND_PlayerSettings; g_Options_Write(GameDir+'/'+CONFIG_FILENAME); - g_Console_WriteConfig(GameDir + '/dfconfig.cfg'); + g_Console_WriteGameConfig(); end; procedure ReadOptions();