MCPcopy Create free account
hub / github.com/ZDoom/Raze / SaveStatistics

Function SaveStatistics

source/core/statistics.cpp:246–289  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

244inline int seconds(int v) { return (v % (60)); }
245
246static void SaveStatistics(const char *fn, TArray<FStatistics> &statlist)
247{
248 unsigned int j;
249
250 FileWriter *fw = FileWriter::Open(fn);
251 if (fw == nullptr) return;
252
253 qsort(&statlist[0], statlist.Size(), sizeof(statlist[0]), compare_episode_names);
254 for(unsigned i=0;i<statlist.Size ();i++)
255 {
256 FStatistics &ep_stats = statlist[i];
257
258 qsort(&ep_stats.stats[0], ep_stats.stats.Size(), sizeof(ep_stats.stats[0]), compare_dates);
259
260 fw->Printf("%s \"%s\"\n{\n", ep_stats.epi_header.GetChars(), ep_stats.epi_name.GetChars());
261 for(j=0;j<ep_stats.stats.Size();j++)
262 {
263 FSessionStatistics *sst = &ep_stats.stats[j];
264 if (sst->info[0]>0)
265 {
266 fw->Printf("\t%2i. %10s \"%-33s\" %02d:%02d:%02d %i\n", j+1, sst->name, sst->info,
267 hours(sst->timeneeded), minutes(sst->timeneeded), seconds(sst->timeneeded), sst->skill);
268
269 TArray<FLevelStatistics> &ls = sst->levelstats;
270 if (ls.Size() > 0)
271 {
272 fw->Printf("\t{\n");
273
274 // Only makes sense if level names follow a strict format. This is noz the case here.
275 //qsort(&ls[0], ls.Size(), sizeof(ls[0]), compare_level_names);
276
277 for(unsigned k=0;k<ls.Size ();k++)
278 {
279 fw->Printf("\t\t%-8s \"%-33s\" %02d:%02d:%02d\n", ls[k].name, ls[k].info,
280 hours(ls[k].timeneeded), minutes(ls[k].timeneeded), seconds(ls[k].timeneeded));
281 }
282 fw->Printf("\t}\n");
283 }
284 }
285 }
286 fw->Printf("}\n\n");
287 }
288 delete fw;
289}
290
291
292// ====================================================================

Callers 1

STAT_UpdateFunction · 0.85

Calls 7

OpenFunction · 0.85
hoursFunction · 0.85
minutesFunction · 0.85
secondsFunction · 0.85
PrintfMethod · 0.80
SizeMethod · 0.45
GetCharsMethod · 0.45

Tested by

no test coverage detected