hedgewars/uTeams.pas
changeset 13047 eadf8259306f
parent 13018 0248cf0da834
child 13068 6369d148cfff
equal deleted inserted replaced
13046:eb9f9608158b 13047:eadf8259306f
    52 var TeamsGameOver: boolean;
    52 var TeamsGameOver: boolean;
    53     NextClan: boolean;
    53     NextClan: boolean;
    54 
    54 
    55 function CheckForWin: boolean;
    55 function CheckForWin: boolean;
    56 var AliveClan: PClan;
    56 var AliveClan: PClan;
    57     s, ts, cap: ansistring;
    57     s, cap: ansistring;
       
    58     ts: array[0..(cMaxTeams - 1)] of ansistring;
    58     t, AliveCount, i, j: LongInt;
    59     t, AliveCount, i, j: LongInt;
    59 begin
    60 begin
    60 CheckForWin:= false;
    61 CheckForWin:= false;
    61 AliveCount:= 0;
    62 AliveCount:= 0;
    62 for t:= 0 to Pred(ClansCount) do
    63 for t:= 0 to Pred(ClansCount) do
    88         end
    89         end
    89     else // win
    90     else // win
    90         begin
    91         begin
    91         with AliveClan^ do
    92         with AliveClan^ do
    92             begin
    93             begin
    93             ts:= ansistring(Teams[0]^.TeamName);
    94             if TeamsNumber = 1 then // single team wins
    94             if TeamsNumber = 1 then // team wins
       
    95                 begin
    95                 begin
    96                 s:= FormatA(trmsg[sidWinner], ts);
    96                 s:= ansistring(Teams[0]^.TeamName);
    97                 cap:= FormatA(GetEventString(eidRoundWin), ts);
    97                 // Victory caption is randomly selected
       
    98                 cap:= FormatA(GetEventString(eidRoundWin), s);
    98                 AddCaption(cap, cWhiteColor, capgrpGameState);
    99                 AddCaption(cap, cWhiteColor, capgrpGameState);
       
   100                 s:= FormatA(trmsg[sidWinner], s);
    99                 end
   101                 end
   100             else // clan wins
   102             else // clan with at least 2 teams wins
   101                 begin
   103                 begin
   102                 s:= '';
   104                 s:= '';
   103                 for j:= 0 to Pred(TeamsNumber) do
   105                 for j:= 0 to Pred(TeamsNumber) do
   104                     begin
   106                     begin
   105                     (*
   107                     ts[j] := Teams[j]^.TeamName;
   106                     Currently, the game result string is just the victory
       
   107                     string concatenated multiple times. This assumes that
       
   108                     sidWinner is a complete sentence.
       
   109                     This might not work well for some languages.
       
   110 
       
   111                     FIXME/TODO: Add event strings for 2, 3, 4 and >4 teams winning.
       
   112                                  This requires FormatA to work with multiple parameters. *)
       
   113                     ts:= Teams[j]^.TeamName;
       
   114                     s:= s + ' ' + FormatA(trmsg[sidWinner], ts);
       
   115 
       
   116                     // FIXME: Show victory captions one-by-one, not all at once
       
   117                     cap:= FormatA(GetEventString(eidRoundWin), ts);
       
   118                     AddCaption(cap, cWhiteColor, capgrpGameState);
       
   119                     end;
   108                     end;
       
   109 
       
   110                 // Write victory message for caption and stats page
       
   111                 if (TeamsNumber = cMaxTeams) or (TeamsCount = TeamsNumber) then
       
   112                     // No enemies for some reason … Everyone wins!!1!
       
   113                     s:= trmsg[sidWinnerAll]
       
   114                 else if (TeamsNumber >= 2) and (TeamsNumber < cMaxTeams) then
       
   115                     // List all winning teams in a list
       
   116                     s:= FormatA(trmsg[TMsgStrId(Ord(sidWinner2) + (TeamsNumber - 2))], ts);
       
   117 
       
   118                 // The winner caption is the same as the stats message and not randomized
       
   119                 cap:= s;
       
   120                 AddCaption(cap, cWhiteColor, capgrpGameState);
       
   121                 // TODO (maybe): Show victory animation/captions per-team instead of all winners at once?
   120                 end;
   122                 end;
   121 
   123 
   122             for j:= 0 to Pred(TeamsNumber) do
   124             for j:= 0 to Pred(TeamsNumber) do
   123                 with Teams[j]^ do
   125                 with Teams[j]^ do
   124                     for i:= 0 to cMaxHHIndex do
   126                     for i:= 0 to cMaxHHIndex do