#pragma once #include "Stat.h" class ItemStat; class Stats { friend class Stat; private: static const int BLOCKS_MINED_OFFSET; static const int ITEMS_COLLECTED_OFFSET; static const int ITEMS_CRAFTED_OFFSET; static const int ADDITIONAL_STATS_OFFSET; protected: static std::unordered_map* statsById; public: static std::vector* all; static std::vector* generalStats; static std::vector* blocksMinedStats; static std::vector* itemsCollectedStats; static std::vector* itemsCraftedStats; #if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO) static std::vector* blocksPlacedStats; #endif static Stat* walkOneM; static Stat* swimOneM; static Stat* fallOneM; static Stat* climbOneM; static Stat* minecartOneM; static Stat* boatOneM; static Stat* pigOneM; static Stat* portalsCreated; static Stat* cowsMilked; static Stat* netherLavaCollected; static Stat* killsZombie; static Stat* killsSkeleton; static Stat* killsCreeper; static Stat* killsSpider; static Stat* killsSpiderJockey; static Stat* killsZombiePigman; static Stat* killsSlime; static Stat* killsGhast; static Stat* killsNetherZombiePigman; // 4J : WESTY : Added for new achievements. static Stat* befriendsWolf; static Stat* totalBlocksMined; static Stat* timePlayed; // Game time, recored as ticks, with TICKS_PER_DAY ticks // per day! Stored as large stat so it doesn't max out // before reaching 100 days ( 2,400,000 ticks ). // static StatArray mobsKilled; static StatArray blocksMined; static StatArray itemsCollected; static StatArray itemsCrafted; #if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO) static StatArray blocksPlaced; #endif // Added TU9 static Stat* killsEnderdragon; // The number of times this player has dealt // the killing blow to the Enderdragon static Stat* completeTheEnd; // The number of times this player has been // present when the Enderdragon has died #if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO) static StatArray biomesVisisted; static StatArray rainbowCollection; #endif static void staticCtor(); static void init(); private: static bool blockStatsLoaded; static bool itemStatsLoaded; static bool craftableStatsLoaded; public: static void buildBlockStats(); static void buildItemStats(); static void buildCraftableStats(); // 4J Stu - Added this function to allow us to add news stats from TU9 // onwards static void buildAdditionalStats(); static Stat* get(int key); };