hedgewars/uTeams.pas
changeset 550 f6a18d2bab00
parent 549 4278a80140a8
child 551 86bc0430ba17
equal deleted inserted replaced
549:4278a80140a8 550:f6a18d2bab00
    56              FortName: string;
    56              FortName: string;
    57              TeamHealth: LongInt;
    57              TeamHealth: LongInt;
    58              TeamHealthBarWidth: LongInt;
    58              TeamHealthBarWidth: LongInt;
    59              DrawHealthY: LongInt;
    59              DrawHealthY: LongInt;
    60              AttackBar: LongWord;
    60              AttackBar: LongWord;
    61              HedgehogsNumber: byte;
    61              HedgehogsNumber: Longword;
    62              end;
    62              end;
    63      TClan = record
    63      TClan = record
    64              Color, AdjColor: Longword;
    64              Color, AdjColor: Longword;
    65              Teams: array[0..Pred(cMaxTeams)] of PTeam;
    65              Teams: array[0..Pred(cMaxTeams)] of PTeam;
    66              TeamsNumber: Longword;
    66              TeamsNumber: Longword;
       
    67              CurrTeam: LongInt;
    67              ClanHealth: LongInt;
    68              ClanHealth: LongInt;
       
    69              ClanIndex: LongInt;
    68              end;
    70              end;
    69 
    71 
    70 var CurrentTeam: PTeam = nil;
    72 var CurrentTeam: PTeam = nil;
    71     TeamsArray: array[0..Pred(cMaxTeams)] of PTeam;
    73     TeamsArray: array[0..Pred(cMaxTeams)] of PTeam;
    72     TeamsCount: Longword = 0;
    74     TeamsCount: Longword = 0;
   128      end;
   130      end;
   129 SendStats
   131 SendStats
   130 end;
   132 end;
   131 
   133 
   132 procedure SwitchHedgehog;
   134 procedure SwitchHedgehog;
   133 var th: LongInt;
   135 var c: LongInt;
   134     t: LongWord;
   136     t: LongWord;
   135     g: PGear;
   137     g: PGear;
   136 begin
   138 begin
   137 FreeActionsList;
   139 FreeActionsList;
   138 TargetPoint.X:= NoPointX;
   140 TargetPoint.X:= NoPointX;
   146         Gear^.Z:= cHHZ;
   148         Gear^.Z:= cHHZ;
   147         RemoveGearFromList(Gear);
   149         RemoveGearFromList(Gear);
   148         InsertGearToList(Gear)
   150         InsertGearToList(Gear)
   149         end;
   151         end;
   150 
   152 
   151 t:= 0;
   153 c:= CurrentTeam^.Clan^.ClanIndex;
   152 while CurrentTeam <> TeamsArray[t] do inc(t);
       
   153 CurrentTeam:= TeamsArray[(t + 1) mod TeamsCount];
       
   154 
       
   155 th:= CurrentTeam^.CurrHedgehog;
       
   156 repeat
   154 repeat
   157   CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (cMaxHHIndex + 1);
   155   c:= Succ(c) mod ClansCount;
   158 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (CurrentTeam^.CurrHedgehog = th);
   156   with ClansArray[c]^ do
       
   157     repeat
       
   158     CurrTeam:= Succ(CurrTeam) mod TeamsNumber;
       
   159     CurrentTeam:= Teams[CurrTeam];
       
   160     with CurrentTeam^ do
       
   161       repeat
       
   162       CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
       
   163       until Hedgehogs[CurrHedgehog].Gear <> nil;
       
   164     until CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil;
       
   165 until CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil;
   159 
   166 
   160 with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do
   167 with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do
   161      begin
   168      begin
   162      with Gear^ do
   169      with Gear^ do
   163           begin
   170           begin
   204    FillChar(Result^.Clan^, sizeof(TClan), 0);
   211    FillChar(Result^.Clan^, sizeof(TClan), 0);
   205    ClansArray[ClansCount]:= Result^.Clan;
   212    ClansArray[ClansCount]:= Result^.Clan;
   206    inc(ClansCount);
   213    inc(ClansCount);
   207    with Result^.Clan^ do
   214    with Result^.Clan^ do
   208         begin
   215         begin
       
   216         ClanIndex:= Pred(ClansCount);
   209         Color:= TeamColor;
   217         Color:= TeamColor;
   210         AdjColor:= Color;
   218         AdjColor:= Color;
   211         AdjustColor(AdjColor);
   219         AdjustColor(AdjColor);
   212         end
   220         end
   213    end else
   221    end else