X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame%2Fg_console.pas;h=5cfce983eab76d411b4954307cd0345a08fe9adc;hb=f2222ab3f47c52963493918b02a57438e8b27e38;hp=5953403c7dd3aa4f4e714d7e1a99de1e927fb770;hpb=683e1735a7efbf7342dec58a49d7f559a1e75fea;p=d2df-sdl.git diff --git a/src/game/g_console.pas b/src/game/g_console.pas index 5953403..5cfce98 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -64,6 +64,7 @@ procedure conwritefln (const s: AnsiString; args: array of const; show: Boolean= procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; procedure conRegVar (const conname: AnsiString; pvar: PSingle; amin, amax: Single; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; procedure conRegVar (const conname: AnsiString; pvar: PInteger; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; +procedure conRegVar (const conname: AnsiString; pvar: PAnsiString; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; // <0: no arg; 0/1: true/false function conGetBoolArg (p: SSArray; idx: Integer): Integer; @@ -282,6 +283,24 @@ begin end; +procedure strVarHandler (me: PCommand; p: SSArray); +var + old: AnsiString; +begin + if (Length(p) <> 2) then + begin + conwritefln('%s %s', [me.cmd, QuoteStr(PAnsiString(me.ptr)^)]); + end + else + begin + old := PAnsiString(me.ptr)^; + PAnsiString(me.ptr)^ := p[1]; + if PAnsiString(me.ptr)^ <> old then + g_Console_WriteGameConfig(); + end; +end; + + procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; var f: Integer; @@ -324,6 +343,26 @@ begin end; +procedure conRegVar (const conname: AnsiString; pvar: PAnsiString; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload; +var + f: Integer; + cp: PCommand; +begin + f := Length(commands); + SetLength(commands, f+1); + cp := @commands[f]; + cp.cmd := LowerCase(conname); + cp.proc := nil; + cp.procEx := strVarHandler; + cp.help := ahelp; + cp.hidden := ahidden; + cp.ptr := pvar; + cp.msg := amsg; + cp.cheat := acheat; + cp.action := -1; + cp.player := -1; +end; + // ////////////////////////////////////////////////////////////////////////// // type PVarSingle = ^TVarSingle; @@ -1896,6 +1935,13 @@ begin begin WriteLn(f, commands[i].cmd, ' ', PVarSingle(commands[i].ptr).val^:0:6) end + else if @commands[i].procEx = @strVarHandler then + begin + if Length(PAnsiString(commands[i].ptr)^) = 0 then + WriteLn(f, commands[i].cmd, ' ""') + else + WriteLn(f, commands[i].cmd, ' ', QuoteStr(PAnsiString(commands[i].ptr)^)) + end end end; CloseFile(f)