# HG changeset patch # User unc0rr # Date 1183482221 0 # Node ID f6a18d2bab00ab668b15f07f986c25b59e42e363 # Parent 4278a80140a8b1dc8cd9f613f8db3e3125e0afb3 Clan-based hedgehogs switching diff -r 4278a80140a8 -r f6a18d2bab00 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Tue Jul 03 16:09:04 2007 +0000 +++ b/hedgewars/uTeams.pas Tue Jul 03 17:03:41 2007 +0000 @@ -58,13 +58,15 @@ TeamHealthBarWidth: LongInt; DrawHealthY: LongInt; AttackBar: LongWord; - HedgehogsNumber: byte; + HedgehogsNumber: Longword; end; TClan = record Color, AdjColor: Longword; Teams: array[0..Pred(cMaxTeams)] of PTeam; TeamsNumber: Longword; + CurrTeam: LongInt; ClanHealth: LongInt; + ClanIndex: LongInt; end; var CurrentTeam: PTeam = nil; @@ -130,7 +132,7 @@ end; procedure SwitchHedgehog; -var th: LongInt; +var c: LongInt; t: LongWord; g: PGear; begin @@ -148,14 +150,19 @@ InsertGearToList(Gear) end; -t:= 0; -while CurrentTeam <> TeamsArray[t] do inc(t); -CurrentTeam:= TeamsArray[(t + 1) mod TeamsCount]; - -th:= CurrentTeam^.CurrHedgehog; +c:= CurrentTeam^.Clan^.ClanIndex; repeat - CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (cMaxHHIndex + 1); -until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (CurrentTeam^.CurrHedgehog = th); + c:= Succ(c) mod ClansCount; + with ClansArray[c]^ do + repeat + CurrTeam:= Succ(CurrTeam) mod TeamsNumber; + CurrentTeam:= Teams[CurrTeam]; + with CurrentTeam^ do + repeat + CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber; + until Hedgehogs[CurrHedgehog].Gear <> nil; + until CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil; +until CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil; with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do begin @@ -206,6 +213,7 @@ inc(ClansCount); with Result^.Clan^ do begin + ClanIndex:= Pred(ClansCount); Color:= TeamColor; AdjColor:= Color; AdjustColor(AdjColor);