hedgewars/uCommands.pas
changeset 7409 fd91aa100ce0
parent 7407 c1ade666c124
child 7412 9e5aa3c8dc62
equal deleted inserted replaced
7408:38d369c59d51 7409:fd91aa100ce0
    25 var isDeveloperMode: boolean;
    25 var isDeveloperMode: boolean;
    26 type TCommandHandler = procedure (var params: shortstring);
    26 type TCommandHandler = procedure (var params: shortstring);
    27 
    27 
    28 procedure initModule;
    28 procedure initModule;
    29 procedure freeModule;
    29 procedure freeModule;
    30 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean; Synced: boolean);
    30 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean; Rand: boolean);
    31 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean);
    31 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean);
    32 procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean);
    32 procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean);
    33 procedure ParseTeamCommand(s: shortstring);
    33 procedure ParseTeamCommand(s: shortstring);
    34 procedure StopMessages(Message: Longword);
    34 procedure StopMessages(Message: Longword);
    35 
    35 
    39 type  PVariable = ^TVariable;
    39 type  PVariable = ^TVariable;
    40     TVariable = record
    40     TVariable = record
    41         Next: PVariable;
    41         Next: PVariable;
    42         Name: string[15];
    42         Name: string[15];
    43         Handler: TCommandHandler;
    43         Handler: TCommandHandler;
    44         Trusted, Synced: boolean;
    44         Trusted, Rand: boolean;
    45         end;
    45         end;
    46 
    46 
    47 var
    47 var
    48     Variables: PVariable;
    48     Variables: PVariable;
    49 
    49 
    50 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean);
    50 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean);
    51 begin
    51 begin
    52 RegisterVariable(Name, p, Trusted, false);
    52 RegisterVariable(Name, p, Trusted, false);
    53 end;
    53 end;
    54 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean; Synced: boolean);
    54 procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean; Rand: boolean);
    55 var
    55 var
    56     value: PVariable;
    56     value: PVariable;
    57 begin
    57 begin
    58 New(value);
    58 New(value);
    59 TryDo(value <> nil, 'RegisterVariable: value = nil', true);
    59 TryDo(value <> nil, 'RegisterVariable: value = nil', true);
    60 FillChar(value^, sizeof(TVariable), 0);
    60 FillChar(value^, sizeof(TVariable), 0);
    61 value^.Name:= Name;
    61 value^.Name:= Name;
    62 value^.Handler:= p;
    62 value^.Handler:= p;
    63 value^.Trusted:= Trusted;
    63 value^.Trusted:= Trusted;
    64 value^.Synced:= Synced;
    64 value^.Rand:= Rand;
    65 
    65 
    66 if Variables = nil then
    66 if Variables = nil then
    67     Variables:= value
    67     Variables:= value
    68 else
    68 else
    69     begin
    69     begin
    91 t:= Variables;
    91 t:= Variables;
    92 while t <> nil do
    92 while t <> nil do
    93     begin
    93     begin
    94     if t^.Name = CmdStr then
    94     if t^.Name = CmdStr then
    95         begin
    95         begin
    96         if t^.Synced then CheckSum:= CheckSum xor LongWord(SDLNet_Read32(@CmdStr)) xor LongWord(s[0]) xor GameTicks;
    96         if t^.Rand then CheckSum:= CheckSum xor LongWord(SDLNet_Read32(@CmdStr)) xor LongWord(s[0]) xor GameTicks;
    97         if TrustedSource or t^.Trusted then
    97         if TrustedSource or t^.Trusted then
    98             t^.Handler(s);
    98             t^.Handler(s);
    99         exit
    99         exit
   100         end
   100         end
   101     else
   101     else