hedgewars/uTeams.pas
changeset 4404 6bae4e9461aa
parent 4403 0dfe26f48ec1
child 4413 46caab3a8f84
equal deleted inserted replaced
4403:0dfe26f48ec1 4404:6bae4e9461aa
    31 procedure InitTeams;
    31 procedure InitTeams;
    32 function  TeamSize(p: PTeam): Longword;
    32 function  TeamSize(p: PTeam): Longword;
    33 procedure RecountTeamHealth(team: PTeam);
    33 procedure RecountTeamHealth(team: PTeam);
    34 procedure RestoreTeamsFromSave;
    34 procedure RestoreTeamsFromSave;
    35 function  CheckForWin: boolean;
    35 function  CheckForWin: boolean;
    36 procedure TeamGone(s: shortstring);
       
    37 procedure TeamGoneEffect(var Team: TTeam);
    36 procedure TeamGoneEffect(var Team: TTeam);
    38 function  GetTeamStatString(p: PTeam): shortstring;
    37 function  GetTeamStatString(p: PTeam): shortstring;
    39 
    38 
    40 implementation
    39 implementation
    41 uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug;
    40 uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug;
   392 begin
   391 begin
   393 for t:= 0 to Pred(TeamsCount) do
   392 for t:= 0 to Pred(TeamsCount) do
   394    TeamsArray[t]^.ExtDriven:= false
   393    TeamsArray[t]^.ExtDriven:= false
   395 end;
   394 end;
   396 
   395 
   397 procedure TeamGone(s: shortstring);
       
   398 var t: LongInt;
       
   399 begin
       
   400 t:= 0;
       
   401 while (t < cMaxTeams)
       
   402     and (TeamsArray[t] <> nil)
       
   403     and (TeamsArray[t]^.TeamName <> s) do inc(t);
       
   404 if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit;
       
   405 
       
   406 with TeamsArray[t]^ do
       
   407     begin
       
   408     AddChatString('** '+ TeamName + ' is gone');
       
   409     hasGone:= true
       
   410     end;
       
   411 
       
   412 RecountTeamHealth(TeamsArray[t])
       
   413 end;
       
   414 
       
   415 procedure TeamGoneEffect(var Team: TTeam);
   396 procedure TeamGoneEffect(var Team: TTeam);
   416 var i: LongInt;
   397 var i: LongInt;
   417 begin
   398 begin
   418 with Team do
   399 with Team do
   419     for i:= 0 to cMaxHHIndex do
   400     for i:= 0 to cMaxHHIndex do
   513 b:= KeyNameToCode(id);
   494 b:= KeyNameToCode(id);
   514 if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false)
   495 if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false)
   515         else CurrentTeam^.Binds[b]:= s
   496         else CurrentTeam^.Binds[b]:= s
   516 end;
   497 end;
   517 
   498 
       
   499 procedure chTeamGone(var s:shortstring);
       
   500 var t: LongInt;
       
   501 begin
       
   502 t:= 0;
       
   503 while (t < cMaxTeams)
       
   504     and (TeamsArray[t] <> nil)
       
   505     and (TeamsArray[t]^.TeamName <> s) do inc(t);
       
   506 if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit;
       
   507 
       
   508 with TeamsArray[t]^ do
       
   509     begin
       
   510     AddChatString('** '+ TeamName + ' is gone');
       
   511     hasGone:= true
       
   512     end;
       
   513 
       
   514 RecountTeamHealth(TeamsArray[t])
       
   515 end;
       
   516 
       
   517 
   518 procedure initModule;
   518 procedure initModule;
   519 begin
   519 begin
   520     RegisterVariable('addhh', vtCommand, @chAddHH, false);
   520     RegisterVariable('addhh', vtCommand, @chAddHH, false);
   521     RegisterVariable('addteam', vtCommand, @chAddTeam, false);
   521     RegisterVariable('addteam', vtCommand, @chAddTeam, false);
   522     RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false);
   522     RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false);
   523     RegisterVariable('bind', vtCommand, @chBind, true );
   523     RegisterVariable('bind', vtCommand, @chBind, true );
       
   524     RegisterVariable('teamgone', vtCommand, @chTeamGone, true );
   524 
   525 
   525     CurrentTeam:= nil;
   526     CurrentTeam:= nil;
   526     PreviousTeam:= nil;
   527     PreviousTeam:= nil;
   527     CurrentHedgehog:= nil;
   528     CurrentHedgehog:= nil;
   528     TeamsCount:= 0;
   529     TeamsCount:= 0;