hedgewars/uTeams.pas
changeset 7270 93e92e82d5c8
parent 7191 9419294e5f33
child 7278 000e4543f204
child 7426 55b49cc1f33a
equal deleted inserted replaced
7268:3a61c53346a8 7270:93e92e82d5c8
    33 function  TeamSize(p: PTeam): Longword;
    33 function  TeamSize(p: PTeam): Longword;
    34 procedure RecountTeamHealth(team: PTeam);
    34 procedure RecountTeamHealth(team: PTeam);
    35 procedure RestoreTeamsFromSave;
    35 procedure RestoreTeamsFromSave;
    36 function  CheckForWin: boolean;
    36 function  CheckForWin: boolean;
    37 procedure TeamGoneEffect(var Team: TTeam);
    37 procedure TeamGoneEffect(var Team: TTeam);
       
    38 procedure SwitchCurrentHedgehog(newHog: PHedgehog);
    38 
    39 
    39 implementation
    40 implementation
    40 uses uLocale, uAmmos, uChat, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, uScript,
    41 uses uLocale, uAmmos, uChat, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, uScript,
    41     uGearsUtils, uGearsList{$IFDEF SDL13}, uTouch{$ENDIF};
    42     uGearsUtils, uGearsList{$IFDEF SDL13}, uTouch{$ENDIF};
    42 
    43 
   182                 end
   183                 end
   183         until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0));
   184         until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0));
   184         end
   185         end
   185 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
   186 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
   186 
   187 
   187 CurrentHedgehog:= @(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]);
   188 SwitchCurrentHedgehog(@(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]));
   188 {$IFDEF USE_TOUCH_INTERFACE}
   189 {$IFDEF USE_TOUCH_INTERFACE}
   189 if (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0 then
   190 if (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0 then
   190     begin
   191     begin
   191     if not(arrowUp.show) then
   192     if not(arrowUp.show) then
   192         begin
   193         begin
   486 if (not isDeveloperMode) or (CurrentTeam = nil) then
   487 if (not isDeveloperMode) or (CurrentTeam = nil) then
   487     exit;
   488     exit;
   488 with CurrentTeam^ do
   489 with CurrentTeam^ do
   489     begin
   490     begin
   490     SplitBySpace(id, s);
   491     SplitBySpace(id, s);
   491     CurrentHedgehog:= @Hedgehogs[HedgehogsNumber];
   492     SwitchCurrentHedgehog(@Hedgehogs[HedgehogsNumber]);
   492     val(id, CurrentHedgehog^.BotLevel, c);
   493     val(id, CurrentHedgehog^.BotLevel, c);
   493     Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
   494     Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
   494     SplitBySpace(s, id);
   495     SplitBySpace(s, id);
   495     val(s, Gear^.Health, c);
   496     val(s, Gear^.Health, c);
   496     TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
   497     TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
   615     end;
   616     end;
   616 
   617 
   617 AddChatString('** Good-bye!');
   618 AddChatString('** Good-bye!');
   618 RecountAllTeamsHealth();
   619 RecountAllTeamsHealth();
   619 end;
   620 end;
       
   621 
       
   622 procedure SwitchCurrentHedgehog(newHog: PHedgehog);
       
   623 var oldCI, newCI: boolean;
       
   624     oldHH: PHedgehog;
       
   625 begin
       
   626     oldCI:= (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.CollisionIndex >= 0);
       
   627     newCI:= (newHog^.Gear <> nil) and (newHog^.Gear^.CollisionIndex >= 0);
       
   628     if oldCI then DeleteCI(CurrentHedgehog^.Gear);
       
   629     if newCI then DeleteCI(newHog^.Gear);
       
   630     oldHH:= CurrentHedgehog;
       
   631     CurrentHedgehog:= newHog;
       
   632     if oldCI then AddGearCI(oldHH^.Gear);
       
   633     if newCI then AddGearCI(newHog^.Gear)
       
   634 end;
       
   635 
   620 
   636 
   621 procedure initModule;
   637 procedure initModule;
   622 begin
   638 begin
   623 RegisterVariable('addhh', @chAddHH, false);
   639 RegisterVariable('addhh', @chAddHH, false);
   624 RegisterVariable('addteam', @chAddTeam, false);
   640 RegisterVariable('addteam', @chAddTeam, false);