hedgewars/uStats.pas
changeset 12332 657a8d63c99d
parent 12292 93434ab299a0
child 12343 6ff01dc1ffe2
equal deleted inserted replaced
12331:6707ee1d2430 12332:657a8d63c99d
    22 interface
    22 interface
    23 uses uConsts, uTypes;
    23 uses uConsts, uTypes;
    24 
    24 
    25 var TotalRounds: LongInt;
    25 var TotalRounds: LongInt;
    26     FinishedTurnsTotal: LongInt;
    26     FinishedTurnsTotal: LongInt;
       
    27     SendGameResultOn : boolean = true;
       
    28     SendRankingStatsOn : boolean = true;
       
    29     SendAchievementsStatsOn : boolean = true;
    27     SendHealthStatsOn : boolean = true;
    30     SendHealthStatsOn : boolean = true;
    28 
    31 
    29 procedure initModule;
    32 procedure initModule;
    30 procedure freeModule;
    33 procedure freeModule;
    31 
    34 
   274     winnersClan:= nil;
   277     winnersClan:= nil;
   275 
   278 
   276     for t:= 0 to Pred(TeamsCount) do
   279     for t:= 0 to Pred(TeamsCount) do
   277         with TeamsArray[t]^ do
   280         with TeamsArray[t]^ do
   278         begin
   281         begin
   279             if not ExtDriven then
   282             if (not ExtDriven) and SendRankingStatsOn then
   280                 SendStat(siTeamStats, GetTeamStatString(TeamsArray[t]));
   283                 SendStat(siTeamStats, GetTeamStatString(TeamsArray[t]));
   281             for i:= 0 to cMaxHHIndex do
   284             for i:= 0 to cMaxHHIndex do
   282                 begin
   285                 begin
   283                 if Hedgehogs[i].stats.MaxStepDamageGiven > msd then
   286                 if Hedgehogs[i].stats.MaxStepDamageGiven > msd then
   284                     begin
   287                     begin
   298 
   301 
   299             { send player stats for winner teams }
   302             { send player stats for winner teams }
   300             if Clan^.ClanHealth > 0 then
   303             if Clan^.ClanHealth > 0 then
   301                 begin
   304                 begin
   302                 winnersClan:= Clan;
   305                 winnersClan:= Clan;
   303                 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
   306                 if SendRankingStatsOn then
   304                     IntToStr(stats.Kills) + ' ' + TeamName);
   307                     SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
       
   308                         IntToStr(stats.Kills) + ' ' + TeamName);
   305             end;
   309             end;
   306 
   310 
   307             { determine maximum values of TeamKills, TurnSkips, TeamDamage }
   311             { determine maximum values of TeamKills, TurnSkips, TeamDamage }
   308             if stats.TeamKills > maxTeamKills then
   312             if stats.TeamKills > maxTeamKills then
   309                 begin
   313                 begin
   322             end;
   326             end;
   323 
   327 
   324         end;
   328         end;
   325 
   329 
   326     { now send player stats for loser teams }
   330     { now send player stats for loser teams }
   327     for t:= 0 to Pred(TeamsCount) do
   331     if SendRankingStatsOn then
   328         begin
   332         for t:= 0 to Pred(TeamsCount) do
   329         with TeamsArray[t]^ do
       
   330             begin
   333             begin
   331             if Clan^.ClanHealth = 0 then
   334             with TeamsArray[t]^ do
   332                 begin
   335                 begin
   333                 SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
   336                 if Clan^.ClanHealth = 0 then
   334                     IntToStr(stats.Kills) + ' ' + TeamName);
   337                     begin
       
   338                     SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' +
       
   339                         IntToStr(stats.Kills) + ' ' + TeamName);
       
   340                 end;
   335             end;
   341             end;
   336         end;
   342         end;
   337     end;
   343 
   338 
   344     // “Achievements” / Details part of stats screen
   339     if msdhh <> nil then
   345     if SendAchievementsStatsOn then
   340         SendStat(siMaxStepDamage, IntToStr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')');
   346         begin
   341     if mskcnt = 1 then
   347         if msdhh <> nil then
   342         SendStat(siMaxStepKills, IntToStr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')');
   348             SendStat(siMaxStepDamage, IntToStr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')');
   343 
   349         if mskcnt = 1 then
   344     if maxTeamKills > 1 then
   350             SendStat(siMaxStepKills, IntToStr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')');
   345         SendStat(siMaxTeamKills, IntToStr(maxTeamKills) + ' ' + maxTeamKillsName);
   351 
   346     if maxTurnSkips > 2 then
   352         if maxTeamKills > 1 then
   347         SendStat(siMaxTurnSkips, IntToStr(maxTurnSkips) + ' ' + maxTurnSkipsName);
   353             SendStat(siMaxTeamKills, IntToStr(maxTeamKills) + ' ' + maxTeamKillsName);
   348     if maxTeamDamage > 30 then
   354         if maxTurnSkips > 2 then
   349         SendStat(siMaxTeamDamage, IntToStr(maxTeamDamage) + ' ' + maxTeamDamageName);
   355             SendStat(siMaxTurnSkips, IntToStr(maxTurnSkips) + ' ' + maxTurnSkipsName);
   350 
   356         if maxTeamDamage > 30 then
   351     if KilledHHs > 0 then
   357             SendStat(siMaxTeamDamage, IntToStr(maxTeamDamage) + ' ' + maxTeamDamageName);
   352         SendStat(siKilledHHs, IntToStr(KilledHHs));
   358 
       
   359         if KilledHHs > 0 then
       
   360             SendStat(siKilledHHs, IntToStr(KilledHHs));
       
   361         end;
   353 
   362 
   354     // now to console
   363     // now to console
   355     if winnersClan <> nil then
   364     if winnersClan <> nil then
   356         begin
   365         begin
   357         WriteLnToConsole('WINNERS');
   366         WriteLnToConsole('WINNERS');