summaryrefslogtreecommitdiffstats
path: root/src/StatisticsManager.h
blob: 288f4aabc58e69e79d877e60bc24c178e79ff120 (plain) (blame)
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

// Statistics.h

/* Hello fellow developer !
In case you are trying to add new statistics to Cuberite you need to do a few things:
---------------------------------------------------------------------------
1. add a new entry to the enum class Statistic in Registries\Statistics.h file
2. add this to serialization functions in WorldStorage\NamespaceSerializer.cpp
	The String in the above is used for saving on disk!
	so use the same string!

In case you want to add a mapping of network IDs to the used stats
you will find a lua script in ../Tools/BlockTypePaletteGenerator/ExportStatMapping.lua
it will provide you with information how to use it. you need a registries.json
exported from the server https://wiki.vg/Data_Generators

		Greetings 12xx12 */





#pragma once

#include "Registries/CustomStatistics.h"





/** Class that manages the statistics and achievements of a single player. */
struct StatisticsManager
{
	typedef unsigned StatValue;

	// TODO: Block tallies, entities killed, all the others

	std::unordered_map<CustomStatistic, StatValue> Custom;

	/** Returns whether the prerequisite for awarding an achievement are satisfied. */
	bool SatisfiesPrerequisite(CustomStatistic a_Stat) const;

private:

	/** Returns if a statistic is both present and has nonzero value. */
	bool IsStatisticPresent(CustomStatistic a_Stat) const;
};