From: DeaDDooMER Date: Sun, 7 Apr 2019 14:22:31 +0000 (+0300) Subject: bind with one param shows current configuration X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=7e9bc1301ecf92dd4c78bb613828839fbd9b0393;p=d2df-sdl.git bind with one param shows current configuration --- diff --git a/src/game/g_console.pas b/src/game/g_console.pas index e3cc3b3..59174bf 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -617,47 +617,46 @@ begin pp^ := 0; end; +function GetCommandString (p: SSArray): AnsiString; + var i: Integer; +begin + result := ''; + if Length(p) >= 1 then + begin + result := p[0]; + for i := 1 to High(p) do + result := result + '; ' + p[i] + end +end; + procedure BindCommands (p: SSArray); - var cmd, key, act: AnsiString; i, j: Integer; + var cmd, key: AnsiString; i: Integer; begin cmd := LowerCase(p[0]); case cmd of 'bind': - // bind [up] - if Length(p) >= 3 then + // bind [down [up]] + if Length(p) >= 2 then begin i := 0; key := LowerCase(p[1]); - if Length(p) = 4 then act := p[3] else act := ''; while (i < e_MaxInputKeys) and (key <> LowerCase(e_KeyNames[i])) do inc(i); if i < e_MaxInputKeys then - g_Console_BindKey(i, p[2], act) + begin + if Length(p) = 2 then + g_Console_Add('"' + e_KeyNames[i] + '" = "' + GetCommandString(gInputBinds[i].down) + '" "' + GetCommandString(gInputBinds[i].up) + '"') + else if Length(p) >= 4 then + g_Console_BindKey(i, p[2], p[3]) + else + g_Console_BindKey(i, p[2], '') + end end else g_Console_Add('bind [up action]'); 'bindlist': for i := 0 to e_MaxInputKeys - 1 do - begin if (gInputBinds[i].down <> nil) or (gInputBinds[i].up <> nil) then - begin - act := e_KeyNames[i] + ' "'; - if (gInputBinds[i].down <> nil) then - begin - act := act + gInputBinds[i].down[0]; - for j := 1 to High(gInputBinds[i].down) - 1 do - act := act + '; ' + gInputBinds[i].down[j]; - end; - act := act + '" "'; - if (gInputBinds[i].up <> nil) then - begin - act := act + gInputBinds[i].up[0]; - for j := 1 to High(gInputBinds[i].up) do - act := act + '; ' + gInputBinds[i].up[j]; - end; - act := act + '"'; - g_Console_Add(act) - end - end; + g_Console_Add(e_KeyNames[i] + ' "' + GetCommandString(gInputBinds[i].down) + '" "' + GetCommandString(gInputBinds[i].up) + '"'); 'unbind': // unbind if Length(p) = 2 then @@ -1795,27 +1794,8 @@ begin WriteLn(f, '// generated by doom2d, do not modify'); WriteLn(f, 'unbindall'); for i := 0 to e_MaxInputKeys - 1 do - begin if (Length(gInputBinds[i].down) > 0) or (Length(gInputBinds[i].up) > 0) then - begin - Write(f, 'bind ', e_KeyNames[i], ' "'); - if Length(gInputBinds[i].down) > 0 then - begin - Write(f, gInputBinds[i].down[0]); - for j := 1 to High(gInputBinds[i].down) do - Write(f, '; ', gInputBinds[i].down[j]) - end; - Write(f, '"'); - if Length(gInputBinds[i].up) > 0 then - begin - Write(f, ' "', gInputBinds[i].up[0]); - for j := 1 to High(gInputBinds[i].up) do - Write(f, '; ', gInputBinds[i].up[j]); - Write(f, '"') - end; - WriteLn(f) - end - end; + WriteLn(f, 'bind ', e_KeyNames[i], ' "', GetCommandString(gInputBinds[i].down), '" "', GetCommandString(gInputBinds[i].up), '"'); for i := 0 to High(commands) do begin if not commands[i].cheat then