the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2
3#include "GeneralStat.h"
4
5#include "GenericStats.h"
6
7enum ELeaderboardId
8{
9 eLeaderboardId_TRAVELLING = 0,
10 eLeaderboardId_MINING = 1,
11 eLeaderboardId_FARMING = 2,
12 eLeaderboardId_KILLING = 3
13};
14
15class DsItemEvent : public Stat
16{
17public:
18 static string nameMethods[];
19
20 enum eAcquisitionMethod
21 {
22 eAcquisitionMethod_None = 0,
23
24 eAcquisitionMethod_Pickedup,
25 eAcquisitionMethod_Crafted,
26 eAcquisitionMethod_TakenFromChest,
27 eAcquisitionMethod_TakenFromEnderchest,
28 eAcquisitionMethod_Bought,
29 eAcquisitionMethod_Smithed,
30 eAcquisitionMethod_Mined,
31
32 eAcquisitionMethod_Placed,
33
34 eAcquisitionMethod_MAX
35 };
36
37 typedef struct _Param
38 {
39 int methodId, itemId, itemAux, itemCount;
40 } Param;
41
42 DsItemEvent(int id, const wstring &name);
43
44 bool onLeaderboard(ELeaderboardId leaderboard, eAcquisitionMethod methodId, Param *param);
45 int mergeIds(int itemId);
46
47 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray param);
48 static byteArray createParamBlob(eAcquisitionMethod methodId, int itemId, int itemAux, int itemCount);
49};
50
51class DsMobKilled : public Stat
52{
53public:
54 static const bool RANGED = true;
55 static const bool MELEE = false;
56
57 static const int SPIDER_JOCKEY_ID = 49;
58
59 DsMobKilled(int id, const wstring &name);
60
61 typedef struct { bool isRanged; int mobType, weaponId, distance, damage; } Param;
62 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray param);
63 static byteArray createParamBlob(shared_ptr<Player> plr, shared_ptr<Mob> mob, DamageSource *dmgSrc);
64};
65
66class DsMobInteract : public Stat
67{
68protected:
69 static string nameInteract[];
70
71public:
72 enum eInteract
73 {
74 eInteract_None = 0,
75 eInteract_Breed,
76 eInteract_Tamed,
77 eInteract_Cured,
78 eInteract_Crafted,
79 eInteract_Sheared
80 };
81
82 DsMobInteract(int id, const wstring &name);
83
84 typedef struct { int interactionType, mobId; } Param;
85 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray param);
86 static byteArray createParamBlob(eInteract interactionId, int entityId);
87};
88
89class DsTravel : public Stat
90{
91public:
92 static string nameMethods[];
93
94 enum eMethod {
95 eMethod_walk,
96 eMethod_swim,
97 eMethod_fall,
98 eMethod_climb,
99 eMethod_minecart,
100 eMethod_boat,
101 eMethod_pig,
102
103 eMethod_time, // Time is a dimension too right...
104
105 eMethod_MAX
106 };
107
108 static unsigned int CACHE_SIZES[eMethod_MAX];
109
110 DsTravel(int id, const wstring &name);
111
112 typedef struct { eMethod method; int distance; } Param;
113 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray paramBlob);
114 static byteArray createParamBlob(eMethod method, int distance);
115
116 void flush(shared_ptr<LocalPlayer> plr);
117
118protected:
119 unsigned int param_cache[MAX_LOCAL_PLAYERS][eMethod_MAX];
120 int cache(int iPad, Param ¶m);
121 void write(shared_ptr<LocalPlayer> plr, eMethod method, int distance);
122};
123
124class DsItemUsed : public Stat
125{
126public:
127 DsItemUsed(int id, const wstring &name);
128 typedef struct { int itemId, aux, count, health, hunger; } Param;
129 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray paramBlob);
130 static byteArray createParamBlob(int itemId, int aux, int count, int health, int hunger);
131};
132
133class DsAchievement : public Stat
134{
135public:
136 DsAchievement(int id, const wstring &name);
137
138 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray paramBlob);
139
140 typedef struct { eAward award; } SmallParam;
141 static byteArray createSmallParamBlob(eAward id);
142
143 typedef struct { eAward award; int count; } LargeParam;
144 static byteArray createLargeParamBlob(eAward id, int count);
145};
146
147class DsChangedDimension : public Stat
148{
149public:
150 DsChangedDimension(int id, const wstring &name);
151 typedef struct { int fromDimId, toDimId; } Param;
152 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray paramBlob);
153 static byteArray createParamBlob(int fromDimId, int toDimId);
154};
155
156class DsEnteredBiome : public Stat
157{
158public:
159 DsEnteredBiome(int id, const wstring &name);
160 typedef struct { int biomeId; } Param;
161 virtual void handleParamBlob(shared_ptr<LocalPlayer> plr, byteArray paramBlob);
162 static byteArray createParamBlob(int biomeId);
163};
164
165class DurangoStats : public GenericStats
166{
167public:
168 static DurangoStats *getInstance() { return (DurangoStats*) GenericStats::getInstance(); }
169
170protected:
171 enum {
172 itemsAcquired_Id = 1,
173 itemUsed_Id,
174 travel_Id,
175 mobKilled_Id,
176 mobInteract_Id,
177 binAchievement_Id,
178 binAchievementLocal_Id,
179 changedDimension_Id,
180 enteredBiome_Id,
181 };
182
183 DsItemEvent *itemsAcquired;
184 DsTravel *travel;
185
186 DsMobKilled *mobKilled;
187 DsMobInteract *mobInteract;
188
189 DsAchievement *achievement;
190 DsAchievement *achievementLocal;
191
192 DsItemUsed *itemUsed;
193
194 DsChangedDimension *changedDimension;
195 DsEnteredBiome *enteredBiome;
196
197 GUID playerSessionId;
198 Platform::String^ multiplayerCorrelationId;
199
200public:
201 DurangoStats();
202 ~DurangoStats();
203
204 virtual Stat *get_stat(int i);
205
206
207protected:
208 // Stats
209
210 virtual Stat* get_walkOneM();
211 virtual Stat* get_swimOneM();
212 virtual Stat* get_fallOneM();
213 virtual Stat* get_climbOneM();
214 virtual Stat* get_minecartOneM();
215 virtual Stat* get_boatOneM();
216 virtual Stat* get_pigOneM();
217
218 virtual Stat* get_cowsMilked();
219
220 // Kills.
221 virtual Stat* get_killMob();
222
223 // Mob-Interactions.
224 virtual Stat* get_breedEntity(eINSTANCEOF entityId);
225 virtual Stat* get_tamedEntity(eINSTANCEOF entityId);
226 virtual Stat* get_curedEntity(eINSTANCEOF entityId);
227 virtual Stat* get_craftedEntity(eINSTANCEOF entityId);
228 virtual Stat* get_shearedEntity(eINSTANCEOF entityId);
229
230 virtual Stat* get_timePlayed();
231
232 virtual Stat* get_blocksPlaced(int blockId);
233 virtual Stat* get_blocksMined(int blockId);
234 virtual Stat* get_itemsCollected(int itemId, int itemAux);
235 virtual Stat* get_itemsCrafted(int itemId);
236 virtual Stat* get_itemsSmelted(int itemId);
237 virtual Stat* get_itemsUsed(int itemId);
238 virtual Stat* get_itemsBought(int itemId);
239
240 virtual Stat* get_changedDimension(int from, int to);
241 virtual Stat* get_enteredBiome(int biomeId);
242
243 // Achievements
244
245 virtual Stat* get_achievement(eAward achievementId);
246
247
248 // Parameters
249
250 virtual byteArray getParam_walkOneM(int distance);
251 virtual byteArray getParam_swimOneM(int distance);
252 virtual byteArray getParam_fallOneM(int distance);
253 virtual byteArray getParam_climbOneM(int distance);
254 virtual byteArray getParam_minecartOneM(int distance);
255 virtual byteArray getParam_boatOneM(int distance);
256 virtual byteArray getParam_pigOneM(int distance);
257
258 virtual byteArray getParam_cowsMilked();
259
260 virtual byteArray getParam_blocksPlaced(int blockId, int data, int count);
261 virtual byteArray getParam_blocksMined(int blockId, int data, int count);
262 virtual byteArray getParam_itemsCollected(int id, int aux, int count);
263 virtual byteArray getParam_itemsCrafted(int id, int aux, int count);
264 virtual byteArray getParam_itemsUsed(shared_ptr<Player> plr, shared_ptr<ItemInstance> itm);
265 virtual byteArray getParam_itemsBought(int id, int aux, int count);
266
267 virtual byteArray getParam_mobKill(shared_ptr<Player> plr, shared_ptr<Mob> mob, DamageSource *dmgSrc);
268
269 virtual byteArray getParam_breedEntity(eINSTANCEOF entityId);
270 virtual byteArray getParam_tamedEntity(eINSTANCEOF entityId);
271 virtual byteArray getParam_curedEntity(eINSTANCEOF entityId);
272 virtual byteArray getParam_craftedEntity(eINSTANCEOF entityId);
273 virtual byteArray getParam_shearedEntity(eINSTANCEOF entityId);
274
275 virtual byteArray getParam_time(int timediff);
276
277 virtual byteArray getParam_changedDimension(int from, int to);
278 virtual byteArray getParam_enteredBiome(int biomeId);
279
280 virtual byteArray getParam_achievement(eAward id);
281
282 virtual byteArray getParam_onARail(int dist);
283 virtual byteArray getParam_chestfulOfCobblestone(int count);
284 // virtual byteArray getParam_openInventory(
285 virtual byteArray getParam_overkill(int dmg);
286 virtual byteArray getParam_musicToMyEars(int recordId);
287
288 // Helpers
289
290public:
291 // Achievements that have no parameters, you have earned them or not.
292 static bool binaryAchievement(eAward achievementId);
293
294 // Achievements that have parameters, but the event is specifically for this achievement.
295 static bool enhancedAchievement(eAward achievementId);
296
297 static void generatePlayerSession();
298 static LPCGUID getPlayerSession();
299
300 static void setMultiplayerCorrelationId(Platform::String^ mpcId);
301 static LPCWSTR getMultiplayerCorrelationId();
302
303 static LPCWSTR getUserId(shared_ptr<LocalPlayer> plr);
304 static LPCWSTR getUserId(int iPad);
305
306 static void playerSessionStart(PlayerUID,shared_ptr<Player>);
307 static void playerSessionStart(int iPad);
308 static void playerSessionPause(int iPad);
309 static void playerSessionResume(int iPad);
310 static void playerSessionEnd(int iPad);
311};