@@ -79,49 +79,32 @@ class GameStatsManager
79
79
# The GameEntity monitored by these statistics.
80
80
var owner : GameEntity
81
81
82
- redef var key = "stats "
82
+ # Current date to extract stats
83
+ private var date = new Tm .gmtime
83
84
84
85
# Returns the `GameStats` instance for the overall statistics.
85
- var overall : GameStats is lazy do
86
- return load_stats_for ("all " )
87
- end
86
+ var overall : GameStats = load_stats_for ("all " ) is lazy
88
87
89
88
# Returns the `GameStats` instance for the current year statistics.
90
- var yearly : GameStats is lazy do
91
- var date = new Tm .gmtime
92
- var key = date .strftime ("%Y " )
93
- return load_stats_for (key )
94
- end
89
+ var yearly : GameStats = load_stats_for (date .strftime ("%Y " )) is lazy
95
90
96
91
# Returns the `GameStats` instance for the current month statistics.
97
- var monthly : GameStats is lazy do
98
- var date = new Tm .gmtime
99
- var key = date .strftime ("%Y-%m " )
100
- return load_stats_for (key )
101
- end
92
+ var monthly : GameStats = load_stats_for (date .strftime ("%Y-%m " )) is lazy
102
93
103
94
# Returns the `GameStats` instance for the current day statistics.
104
- var daily : GameStats is lazy do
105
- var date = new Tm .gmtime
106
- var key = date .strftime ("%Y-%m-%d " )
107
- return load_stats_for (key )
108
- end
95
+ var daily : GameStats = load_stats_for (date .strftime ("%Y-%m-%d " )) is lazy
109
96
110
97
# Returns the `GameStats` instance for the current week statistics.
111
- var weekly : GameStats is lazy do
112
- var date = new Tm .gmtime
113
- var key = date .strftime ("%Y-W%U " )
114
- return load_stats_for (key )
115
- end
98
+ var weekly : GameStats = load_stats_for (date .strftime ("%Y-W%U " )) is lazy
116
99
117
100
# Load statistics for a `period` key.
118
101
fun load_stats_for (period : String ): GameStats do
119
102
var key = owner .key / self .key / period
120
103
if not game .store .has_key (key ) then
121
- return new GameStats (game , period )
104
+ return new GameStats (game , period , owner )
122
105
end
123
106
var json = game .store .load_object (key )
124
- return new GameStats .from_json (game , period , json )
107
+ return new GameStats .from_json (game , period , owner , json )
125
108
end
126
109
127
110
redef fun [](key ) do return overall [key ]
@@ -168,19 +151,28 @@ class GameStats
168
151
169
152
redef var game
170
153
171
- # The pedriod these stats are about.
154
+ # The period these stats are about.
172
155
var period : String
173
156
174
- redef fun key do return period
157
+ # The game entity these stats are about.
158
+ var owner : GameEntity
159
+
160
+ redef var key = "{owner .key } - {period } " is lazy
175
161
176
162
# Load `self` from saved data.
177
- init from_json (game : Game , period : String , json : JsonObject ) do
178
- for k , v in json do self [k ] = v .as (Int )
163
+ init from_json (game : Game , period : String , owner : GameEntity , json : JsonObject ) do
164
+ var values = json .get_or_null ("values " )
165
+ if not values isa JsonObject then return
166
+ for k , v in values do self [k ] = v .as (Int )
179
167
end
180
168
181
169
redef fun to_json do
182
- var obj = new JsonObject
183
- for k , v in self do obj [k ] = v
170
+ var obj = super
171
+ obj ["period " ] = period
172
+ obj ["owner " ] = owner .key
173
+ var values = new JsonObject
174
+ values .recover_with (self )
175
+ obj ["values " ] = values
184
176
return obj
185
177
end
186
178
0 commit comments