-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsteamGameSummaryStatistics.go
71 lines (68 loc) · 2.24 KB
/
steamGameSummaryStatistics.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main
type SteamGameSummaryStatistics struct {
AverageDecline int
AverageGain int
AverageMaxPlayerCount int
AverageMinPlayerCount int
AveragePlayerCount int
MonthsSinceRelease int
PeakPlayers int
PeakPlayersDate string
TroughPlayers int
TroughPlayersDate string
YearsSinceRelease int
}
func NewSteamGameSummaryStatistics(s *SteamChartPage) SteamGameSummaryStatistics {
var (
averageDecline int
averageGain int
averageMaxPlayerCount int
averageMinPlayerCount int
averagePlayerCount int
monthsSinceRelease int
peakPlayers int
peakPlayersDate string
troughPlayersDate string
yearsSinceRelease int
troughPlayers = int(^uint(0) >> 1)
)
if len(s.Growth) > 0 {
for _, s := range s.Growth {
if s.Gain > 0 {
averageGain = averageGain + int(s.Gain)
averageMaxPlayerCount = averageMaxPlayerCount + s.PlayersPeak
} else {
averageDecline = averageDecline + int(s.Gain)
averageMinPlayerCount = averageMinPlayerCount + s.PlayersPeak
}
if s.PlayersPeak > peakPlayers {
peakPlayers = s.PlayersPeak
peakPlayersDate = s.Month
}
if s.PlayersPeak < troughPlayers {
troughPlayers = s.PlayersPeak
troughPlayersDate = s.Month
}
averagePlayerCount = averagePlayerCount + int(s.PlayersAverage)
monthsSinceRelease = monthsSinceRelease + 1
}
averageDecline = averageDecline / monthsSinceRelease
averageGain = averageGain / monthsSinceRelease
averageMaxPlayerCount = averageMaxPlayerCount / monthsSinceRelease
averageMinPlayerCount = averageMinPlayerCount / monthsSinceRelease
averagePlayerCount = averagePlayerCount / monthsSinceRelease
yearsSinceRelease = monthsSinceRelease / 12
}
return SteamGameSummaryStatistics{
AverageDecline: averageDecline,
AverageGain: averageGain,
AverageMaxPlayerCount: averageMaxPlayerCount,
AverageMinPlayerCount: averageMinPlayerCount,
AveragePlayerCount: averagePlayerCount,
MonthsSinceRelease: monthsSinceRelease,
PeakPlayers: peakPlayers,
PeakPlayersDate: peakPlayersDate,
TroughPlayers: troughPlayers,
TroughPlayersDate: troughPlayersDate,
YearsSinceRelease: yearsSinceRelease}
}