author | nemo |
Mon, 08 Feb 2010 12:49:41 +0000 | |
changeset 2766 | aa3120a9e22c |
parent 2745 | 11fce231f24a |
child 2782 | c00a932f075f |
permissions | -rw-r--r-- |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
3 |
* Copyright (c) 2008 Andrey Korotaev <unC0Rr@gmail.com> |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
4 |
* |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License as published by |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
7 |
* the Free Software Foundation; version 2 of the License |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
8 |
* |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
13 |
* |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
17 |
*) |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
18 |
|
2630 | 19 |
{$INCLUDE "options.inc"} |
20 |
||
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
21 |
unit uStats; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
22 |
interface |
829 | 23 |
uses uGears, uConsts; |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
24 |
|
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
25 |
type TStatistics = record |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
26 |
DamageRecv, |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
27 |
DamageGiven: Longword; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
28 |
StepDamageRecv, |
869 | 29 |
StepDamageGiven, |
30 |
StepKills: Longword; |
|
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
31 |
MaxStepDamageRecv, |
869 | 32 |
MaxStepDamageGiven, |
33 |
MaxStepKills: Longword; |
|
815 | 34 |
FinishedTurns: Longword; |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
35 |
end; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
36 |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
37 |
var TotalRounds: LongInt; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
38 |
FinishedTurnsTotal: LongInt; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
39 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
40 |
procedure init_uStats; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
41 |
procedure free_uStats; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
42 |
|
829 | 43 |
procedure AmmoUsed(am: TAmmoType); |
867 | 44 |
procedure HedgehogDamaged(Gear: PGear); |
871 | 45 |
procedure Skipped; |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
46 |
procedure TurnReaction; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
47 |
procedure SendStats; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
48 |
|
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
49 |
implementation |
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
1723
diff
changeset
|
50 |
uses uTeams, uSound, uMisc, uLocale, uWorld; |
815 | 51 |
var DamageGiven : Longword = 0; |
1678 | 52 |
DamageClan : Longword = 0; |
53 |
DamageTotal : Longword = 0; |
|
54 |
KillsClan : LongWord = 0; |
|
55 |
Kills : LongWord = 0; |
|
56 |
KillsTotal : LongWord = 0; |
|
57 |
AmmoUsedCount : Longword = 0; |
|
58 |
AmmoDamagingUsed : boolean = false; |
|
59 |
SkippedTurns: LongWord = 0; |
|
60 |
isTurnSkipped: boolean = false; |
|
61 |
vpHurtSameClan: PVoicepack = nil; |
|
62 |
vpHurtEnemy: PVoicepack = nil; |
|
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
63 |
|
867 | 64 |
procedure HedgehogDamaged(Gear: PGear); |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
65 |
begin |
1678 | 66 |
if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then |
67 |
vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack |
|
68 |
else |
|
1723 | 69 |
vpHurtEnemy:= PHedgehog(Gear^.Hedgehog)^.Team^.voicepack; |
1678 | 70 |
|
1054 | 71 |
if bBetweenTurns then exit; |
72 |
||
1678 | 73 |
////////////////////////// |
74 |
||
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
75 |
if Gear <> CurrentHedgehog^.Gear then |
867 | 76 |
inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage); |
815 | 77 |
|
867 | 78 |
if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(DamageClan, Gear^.Damage); |
815 | 79 |
|
867 | 80 |
if Gear^.Health <= Gear^.Damage then |
81 |
begin |
|
869 | 82 |
inc(CurrentHedgehog^.stats.StepKills); |
867 | 83 |
inc(Kills); |
84 |
inc(KillsTotal); |
|
85 |
if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(KillsClan); |
|
86 |
end; |
|
815 | 87 |
|
867 | 88 |
inc(PHedgehog(Gear^.Hedgehog)^.stats.StepDamageRecv, Gear^.Damage); |
89 |
inc(DamageGiven, Gear^.Damage); |
|
90 |
inc(DamageTotal, Gear^.Damage) |
|
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
91 |
end; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
92 |
|
871 | 93 |
procedure Skipped; |
94 |
begin |
|
95 |
inc(SkippedTurns); |
|
96 |
isTurnSkipped:= true |
|
97 |
end; |
|
98 |
||
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
99 |
procedure TurnReaction; |
874 | 100 |
var i, t: LongInt; |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
101 |
begin |
1054 | 102 |
TryDo(not bBetweenTurns, 'Engine bug: TurnReaction between turns', true); |
103 |
||
870 | 104 |
inc(FinishedTurnsTotal); |
1625 | 105 |
if FinishedTurnsTotal <> 0 then |
106 |
begin |
|
107 |
inc(CurrentHedgehog^.stats.FinishedTurns); |
|
870 | 108 |
|
1625 | 109 |
if (DamageGiven = DamageTotal) and (DamageTotal > 0) then |
2745 | 110 |
PlaySound(sndFirstBlood, CurrentTeam^.voicepack) |
815 | 111 |
|
1625 | 112 |
else if CurrentHedgehog^.stats.StepDamageRecv > 0 then |
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
1723
diff
changeset
|
113 |
begin |
2745 | 114 |
PlaySound(sndStupid, PreviousTeam^.voicepack); |
2712
8f4527c9137c
Minor tweak, try to make long flavour text last longer, move the hurt self messages to unused messages group, so they don't get wiped by crate an instant later.
nemo
parents:
2630
diff
changeset
|
115 |
if DamageGiven = CurrentHedgehog^.stats.StepDamageRecv then AddCaption(Format(GetEventString(eidHurtSelf), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage); |
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
1723
diff
changeset
|
116 |
end |
1625 | 117 |
else if DamageClan <> 0 then |
118 |
if DamageTotal > DamageClan then |
|
119 |
if random(2) = 0 then |
|
2745 | 120 |
PlaySound(sndNutter, CurrentTeam^.voicepack) |
1625 | 121 |
else |
2745 | 122 |
PlaySound(sndWatchIt, vpHurtSameClan) |
1625 | 123 |
else |
124 |
if random(2) = 0 then |
|
2745 | 125 |
PlaySound(sndSameTeam, vpHurtSameClan) |
1625 | 126 |
else |
2745 | 127 |
PlaySound(sndTraitor, vpHurtSameClan) |
1625 | 128 |
else if DamageGiven <> 0 then |
129 |
if Kills > 0 then |
|
2745 | 130 |
PlaySound(sndEnemyDown, CurrentTeam^.voicepack) |
873 | 131 |
else |
2745 | 132 |
PlaySound(sndRegret, vpHurtEnemy) |
1625 | 133 |
|
134 |
else if AmmoDamagingUsed then |
|
2745 | 135 |
PlaySound(sndMissed, PreviousTeam^.voicepack) |
1625 | 136 |
else if (AmmoUsedCount > 0) and not isTurnSkipped then |
137 |
// nothing ? |
|
138 |
else if isTurnSkipped then |
|
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
1723
diff
changeset
|
139 |
begin |
2745 | 140 |
PlaySound(sndBoring, PreviousTeam^.voicepack); |
2712
8f4527c9137c
Minor tweak, try to make long flavour text last longer, move the hurt self messages to unused messages group, so they don't get wiped by crate an instant later.
nemo
parents:
2630
diff
changeset
|
141 |
AddCaption(Format(GetEventString(eidTurnSkipped), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage); |
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
1723
diff
changeset
|
142 |
end |
864 | 143 |
else |
2745 | 144 |
PlaySound(sndCoward, PreviousTeam^.voicepack); |
1625 | 145 |
end; |
870 | 146 |
|
815 | 147 |
|
1625 | 148 |
for t:= 0 to Pred(TeamsCount) do // send even on zero turn |
869 | 149 |
with TeamsArray[t]^ do |
150 |
for i:= 0 to cMaxHHIndex do |
|
151 |
with Hedgehogs[i].stats do |
|
152 |
begin |
|
153 |
inc(DamageRecv, StepDamageRecv); |
|
154 |
inc(DamageGiven, StepDamageGiven); |
|
155 |
if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv; |
|
156 |
if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven; |
|
157 |
if StepKills > MaxStepKills then MaxStepKills:= StepKills; |
|
871 | 158 |
StepKills:= 0; |
869 | 159 |
StepDamageRecv:= 0; |
160 |
StepDamageGiven:= 0 |
|
161 |
end; |
|
815 | 162 |
|
1625 | 163 |
for t:= 0 to Pred(ClansCount) do |
164 |
with ClansArray[t]^ do |
|
165 |
begin |
|
166 |
SendStat(siClanHealth, inttostr(Color) + ' ' + inttostr(ClanHealth)); |
|
167 |
end; |
|
168 |
||
867 | 169 |
Kills:= 0; |
170 |
KillsClan:= 0; |
|
815 | 171 |
DamageGiven:= 0; |
830
f07267032194
- Add statistics info for ammo used in step and whether it is damaging ammo
unc0rr
parents:
829
diff
changeset
|
172 |
DamageClan:= 0; |
f07267032194
- Add statistics info for ammo used in step and whether it is damaging ammo
unc0rr
parents:
829
diff
changeset
|
173 |
AmmoUsedCount:= 0; |
871 | 174 |
AmmoDamagingUsed:= false; |
175 |
isTurnSkipped:= false |
|
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
176 |
end; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
177 |
|
829 | 178 |
procedure AmmoUsed(am: TAmmoType); |
179 |
begin |
|
830
f07267032194
- Add statistics info for ammo used in step and whether it is damaging ammo
unc0rr
parents:
829
diff
changeset
|
180 |
inc(AmmoUsedCount); |
f07267032194
- Add statistics info for ammo used in step and whether it is damaging ammo
unc0rr
parents:
829
diff
changeset
|
181 |
AmmoDamagingUsed:= AmmoDamagingUsed or Ammoz[am].isDamaging |
829 | 182 |
end; |
183 |
||
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
184 |
procedure SendStats; |
858 | 185 |
var i, t: LongInt; |
869 | 186 |
msd, msk: Longword; msdhh, mskhh: PHedgehog; |
187 |
mskcnt: Longword; |
|
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
188 |
begin |
858 | 189 |
msd:= 0; msdhh:= nil; |
869 | 190 |
msk:= 0; mskhh:= nil; |
191 |
mskcnt:= 0; |
|
192 |
||
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
193 |
for t:= 0 to Pred(TeamsCount) do |
869 | 194 |
with TeamsArray[t]^ do |
195 |
begin |
|
196 |
for i:= 0 to cMaxHHIndex do |
|
197 |
begin |
|
198 |
if Hedgehogs[i].stats.MaxStepDamageGiven > msd then |
|
199 |
begin |
|
200 |
msdhh:= @Hedgehogs[i]; |
|
201 |
msd:= Hedgehogs[i].stats.MaxStepDamageGiven |
|
202 |
end; |
|
203 |
if Hedgehogs[i].stats.MaxStepKills >= msk then |
|
204 |
if Hedgehogs[i].stats.MaxStepKills = msk then |
|
205 |
inc(mskcnt) |
|
206 |
else |
|
207 |
begin |
|
208 |
mskcnt:= 1; |
|
209 |
mskhh:= @Hedgehogs[i]; |
|
210 |
msk:= Hedgehogs[i].stats.MaxStepKills |
|
211 |
end; |
|
212 |
end |
|
213 |
end; |
|
214 |
if msdhh <> nil then |
|
215 |
SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); |
|
216 |
if mskcnt = 1 then |
|
217 |
SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); |
|
218 |
||
858 | 219 |
if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); |
814
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
220 |
end; |
7fb4417b7bc1
Start implementing better statistics implementation (does nothing yet)
unc0rr
parents:
diff
changeset
|
221 |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
222 |
procedure init_uStats; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
223 |
begin |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
224 |
TotalRounds:= -1; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
225 |
FinishedTurnsTotal:= -1; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
226 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
227 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
228 |
procedure free_uStats; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
229 |
begin |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
230 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
231 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2712
diff
changeset
|
232 |
|
2619 | 233 |
end. |