the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 311 lines 8.6 kB view raw
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 &param); 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};