# HG changeset patch # User unc0rr # Date 1209070415 0 # Node ID daddcd31ef34c148ddb9d3b4c8df927c6d19aeb7 # Parent 4884bce5e5eb8c909ded785b4a1fdded87ababb3 - New statistics - Fixes for stats diff -r 4884bce5e5eb -r daddcd31ef34 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Thu Apr 24 19:55:10 2008 +0000 +++ b/QTfrontend/hwform.cpp Thu Apr 24 20:53:35 2008 +0000 @@ -578,6 +578,13 @@ AddStatText(message); break; } + case 'k' : { + int i = info.indexOf(' '); + QString message = QLabel::tr("<p>The best shot award was won by <b>%1</b> with <b>%2</b> kills.</p>") + .arg(info.mid(i + 1), info.left(i)); + AddStatText(message); + break; + } case 'K' : { QString message = QLabel::tr("<p>A total of <b>%1</b> Hedgehog(s) were killed during this round.</p>").arg(info); AddStatText(message); diff -r 4884bce5e5eb -r daddcd31ef34 hedgewars.kdevelop --- a/hedgewars.kdevelop Thu Apr 24 19:55:10 2008 +0000 +++ b/hedgewars.kdevelop Thu Apr 24 20:53:35 2008 +0000 @@ -18,20 +18,20 @@ <projectname>hedgewars</projectname> <projectdirectory>.</projectdirectory> <absoluteprojectpath>false</absoluteprojectpath> - <description/> + <description></description> <versioncontrol>kdevsubversion</versioncontrol> - <defaultencoding/> + <defaultencoding></defaultencoding> </general> <kdevcustomproject> <run> <directoryradio>executable</directoryradio> <customdirectory>/</customdirectory> - <mainprogram>bin/hedgewars</mainprogram> - <programargs/> + <mainprogram></mainprogram> + <programargs></programargs> <terminal>false</terminal> <autocompile>true</autocompile> <envvars/> - <globaldebugarguments/> + <globaldebugarguments></globaldebugarguments> <globalcwd>/usr/home/unC0Rr/Sources/Hedgewars/Hedgewars-GNA</globalcwd> <useglobalprogram>false</useglobalprogram> <autoinstall>false</autoinstall> @@ -98,16 +98,16 @@ </general> <build> <buildtool>make</buildtool> - <builddir/> + <builddir></builddir> </build> <make> <abortonerror>true</abortonerror> - <numberofjobs>1</numberofjobs> + <numberofjobs>4</numberofjobs> <prio>0</prio> <dontact>false</dontact> - <makebin/> - <defaulttarget/> - <makeoptions/> + <makebin></makebin> + <defaulttarget></defaulttarget> + <makeoptions></makeoptions> <selectedenvironment>default</selectedenvironment> <environments> <default/> @@ -115,9 +115,9 @@ </make> <other> <prio>0</prio> - <otherbin/> - <defaulttarget/> - <otheroptions/> + <otherbin></otherbin> + <defaulttarget></defaulttarget> + <otheroptions></otheroptions> <selectedenvironment>default</selectedenvironment> <environments> <default/> @@ -126,12 +126,12 @@ </kdevcustomproject> <kdevdebugger> <general> - <dbgshell/> + <dbgshell></dbgshell> <programargs/> - <gdbpath/> - <configGdbScript/> - <runShellScript/> - <runGdbScript/> + <gdbpath></gdbpath> + <configGdbScript></configGdbScript> + <runShellScript></runShellScript> + <runGdbScript></runGdbScript> <breakonloadinglibs>true</breakonloadinglibs> <separatetty>false</separatetty> <floatingtoolbar>false</floatingtoolbar> @@ -237,7 +237,7 @@ <includeTypedefs>false</includeTypedefs> </codecompletion> <creategettersetter> - <prefixGet/> + <prefixGet></prefixGet> <prefixSet>set</prefixSet> <prefixVariable>m_,_</prefixVariable> <parameterName>theValue</parameterName> @@ -256,7 +256,7 @@ <hidenonlocation>false</hidenonlocation> </groups> <tree> - <hidepatterns></hidepatterns> + <hidepatterns/> <hidenonprojectfiles>true</hidenonprojectfiles> <showvcsfields>false</showvcsfields> </tree> @@ -269,9 +269,9 @@ </cppsupportpart> <kdevdocumentation> <projectdoc> - <docsystem/> - <docurl/> - <usermanualurl/> + <docsystem></docsystem> + <docurl></docurl> + <usermanualurl></usermanualurl> </projectdoc> </kdevdocumentation> <ctagspart> diff -r 4884bce5e5eb -r daddcd31ef34 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Thu Apr 24 19:55:10 2008 +0000 +++ b/hedgewars/uConsts.pas Thu Apr 24 20:53:35 2008 +0000 @@ -74,7 +74,7 @@ TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpNetSay, capgrpVolume); - TStatInfoType = (siGameResult, siMaxStepDamage, siKilledHHs); + TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs); THHFont = record Handle: PTTF_Font; diff -r 4884bce5e5eb -r daddcd31ef34 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Thu Apr 24 19:55:10 2008 +0000 +++ b/hedgewars/uGears.pas Thu Apr 24 20:53:35 2008 +0000 @@ -384,8 +384,8 @@ procedure ProcessGears; const delay: LongWord = 0; - step: (stDelay, stChDmg, stChWin, stTurnReact, - stAfterDelay, stSpawn, stNTurn) = stDelay; + step: (stDelay, stChDmg, stTurnReact, + stAfterDelay, stChWin, stSpawn, stNTurn) = stDelay; var Gear, t: PGear; begin PrvInactive:= AllInactive; @@ -410,7 +410,6 @@ inc(step) end; stChDmg: if CheckNoDamage then inc(step) else step:= stDelay; - stChWin: if not CheckForWin then inc(step) else step:= stDelay; stTurnReact: begin if not isInMultiShoot then begin @@ -428,12 +427,12 @@ if delay = 0 then inc(step) end; + stChWin: if not CheckForWin then inc(step) else step:= stDelay; stSpawn: begin if not isInMultiShoot then SpawnBoxOfSmth; inc(step) end; stNTurn: begin - //AwareOfExplosion(0, 0, 0); if isInMultiShoot then isInMultiShoot:= false else begin ParseCommand('/nextturn', true); @@ -451,7 +450,7 @@ ((GameTicks and $FFFF) = $FFFF) then begin SendIPCTimeInc; - inc(hiTicks) // we do not recieve a message for it + inc(hiTicks) // we do not recieve a message for this end; inc(GameTicks) diff -r 4884bce5e5eb -r daddcd31ef34 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Thu Apr 24 19:55:10 2008 +0000 +++ b/hedgewars/uMisc.pas Thu Apr 24 20:53:35 2008 +0000 @@ -234,7 +234,7 @@ end; procedure SendStat(sit: TStatInfoType; s: shortstring); -const stc: array [TStatInfoType] of char = 'rDK'; +const stc: array [TStatInfoType] of char = 'rDkK'; begin SendIPC('i' + stc[sit] + s) end; @@ -290,7 +290,7 @@ if (surf^.format^.BytesPerPixel = 3) then mode:= GL_RGB else if (surf^.format^.BytesPerPixel = 4) then mode:= GL_RGBA else begin - TryDo(false, 'Surface2Tex: BytePerPixel not in [3, 4]', true); + TryDo(false, 'Surface2Tex: BytesPerPixel not in [3, 4]', true); Surface2Tex^.id:= 0; exit end; diff -r 4884bce5e5eb -r daddcd31ef34 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Thu Apr 24 19:55:10 2008 +0000 +++ b/hedgewars/uStats.pas Thu Apr 24 20:53:35 2008 +0000 @@ -24,9 +24,11 @@ DamageRecv, DamageGiven: Longword; StepDamageRecv, - StepDamageGiven: Longword; + StepDamageGiven, + StepKills: Longword; MaxStepDamageRecv, - MaxStepDamageGiven: Longword; + MaxStepDamageGiven, + MaxStepKills: Longword; FinishedTurns: Longword; end; @@ -55,6 +57,7 @@ if Gear^.Health <= Gear^.Damage then begin + inc(CurrentHedgehog^.stats.StepKills); inc(Kills); inc(KillsTotal); if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(KillsClan); @@ -67,6 +70,7 @@ procedure TurnReaction; var Gear: PGear; + i, t: LongInt; begin inc(CurrentHedgehog^.stats.FinishedTurns); @@ -94,21 +98,19 @@ else if AmmoDamagingUsed then PlaySound(sndMissed, false); -Gear:= GearsList; -while Gear <> nil do - begin - if Gear^.Kind = gtHedgehog then - with PHedgehog(Gear^.Hedgehog)^.stats do - begin - inc(DamageRecv, StepDamageRecv); - inc(DamageGiven, StepDamageGiven); - if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv; - if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven; - StepDamageRecv:= 0; - StepDamageGiven:= 0 - end; - Gear:= Gear^.NextGear - end; +for t:= 0 to Pred(TeamsCount) do + with TeamsArray[t]^ do + for i:= 0 to cMaxHHIndex do + with Hedgehogs[i].stats do + begin + inc(DamageRecv, StepDamageRecv); + inc(DamageGiven, StepDamageGiven); + if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv; + if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven; + if StepKills > MaxStepKills then MaxStepKills:= StepKills; + StepDamageRecv:= 0; + StepDamageGiven:= 0 + end; Kills:= 0; KillsClan:= 0; @@ -126,21 +128,39 @@ procedure SendStats; var i, t: LongInt; - msd: Longword; msdhh: PHedgehog; + msd, msk: Longword; msdhh, mskhh: PHedgehog; + mskcnt: Longword; begin msd:= 0; msdhh:= nil; +msk:= 0; mskhh:= nil; +mskcnt:= 0; + for t:= 0 to Pred(TeamsCount) do - with TeamsArray[t]^ do - begin - for i:= 0 to cMaxHHIndex do - if Hedgehogs[i].stats.StepDamageGiven > msd then - begin - msdhh:= @Hedgehogs[i]; - msd:= Hedgehogs[i].stats.StepDamageGiven - end; - end; -if msdhh <> nil then SendStat(siMaxStepDamage, inttostr(msd) + ' ' + - msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); + with TeamsArray[t]^ do + begin + for i:= 0 to cMaxHHIndex do + begin + if Hedgehogs[i].stats.MaxStepDamageGiven > msd then + begin + msdhh:= @Hedgehogs[i]; + msd:= Hedgehogs[i].stats.MaxStepDamageGiven + end; + if Hedgehogs[i].stats.MaxStepKills >= msk then + if Hedgehogs[i].stats.MaxStepKills = msk then + inc(mskcnt) + else + begin + mskcnt:= 1; + mskhh:= @Hedgehogs[i]; + msk:= Hedgehogs[i].stats.MaxStepKills + end; + end + end; +if msdhh <> nil then + SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); +if mskcnt = 1 then + SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); + if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); end;