summaryrefslogtreecommitdiffstats
path: root/src/Statistics.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Statistics.h')
-rw-r--r--src/Statistics.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/Statistics.h b/src/Statistics.h
new file mode 100644
index 000000000..f37f32e1e
--- /dev/null
+++ b/src/Statistics.h
@@ -0,0 +1,164 @@
+
+// Statistics.h
+
+
+
+
+#pragma once
+
+
+
+
+// tolua_begin
+enum eStatistic
+{
+ // The order must match the order of cStatInfo::ms_Info
+
+ statInvalid = -1,
+
+ /* Achievements */
+ achOpenInv, /* Taking Inventory */
+ achMineWood, /* Getting Wood */
+ achCraftWorkbench, /* Benchmarking */
+ achCraftPickaxe, /* Time to Mine! */
+ achCraftFurnace, /* Hot Topic */
+ achAcquireIron, /* Acquire Hardware */
+ achCraftHoe, /* Time to Farm! */
+ achMakeBread, /* Bake Bread */
+ achBakeCake, /* The Lie */
+ achCraftBetterPick, /* Getting an Upgrade */
+ achCookFish, /* Delicious Fish */
+ achOnARail, /* On A Rail */
+ achCraftSword, /* Time to Strike! */
+ achKillMonster, /* Monster Hunter */
+ achKillCow, /* Cow Tipper */
+ achFlyPig, /* When Pigs Fly */
+ achSnipeSkeleton, /* Sniper Duel */
+ achDiamonds, /* DIAMONDS! */
+ achEnterPortal, /* We Need to Go Deeper */
+ achReturnToSender, /* Return to Sender */
+ achBlazeRod, /* Into Fire */
+ achBrewPotion, /* Local Brewery */
+ achEnterTheEnd, /* The End? */
+ achDefeatDragon, /* The End. */
+ achCraftEnchantTable, /* Enchanter */
+ achOverkill, /* Overkill */
+ achBookshelf, /* Librarian */
+ achExploreAllBiomes, /* Adventuring Time */
+ achSpawnWither, /* The Beginning? */
+ achKillWither, /* The Beginning. */
+ achFullBeacon, /* Beaconator */
+ achBreedCow, /* Repopulation */
+ achThrowDiamonds, /* Diamonds to you! */
+
+ /* Statistics */
+ statGamesQuit,
+ statMinutesPlayed,
+ statDistWalked,
+ statDistSwum,
+ statDistFallen,
+ statDistClimbed,
+ statDistFlown,
+ statDistDove,
+ statDistMinecart,
+ statDistBoat,
+ statDistPig,
+ statDistHorse,
+ statJumps,
+ statItemsDropped,
+ statDamageDealt,
+ statDamageTaken,
+ statDeaths,
+ statMobKills,
+ statAnimalsBred,
+ statPlayerKills,
+ statFishCaught,
+ statJunkFished,
+ statTreasureFished,
+
+ statCount
+};
+// tolua_end
+
+
+
+
+
+
+/** Class used to store and query statistic-related information. */
+class cStatInfo
+{
+public:
+
+ cStatInfo();
+
+ cStatInfo(const eStatistic a_Type, const AString & a_Name, const eStatistic a_Depends = statInvalid);
+
+ /** Type -> Name */
+ static const AString & GetName(const eStatistic a_Type);
+
+ /** Name -> Type */
+ static eStatistic GetType(const AString & a_Name);
+
+ /** Returns stat prerequisite. (Used for achievements) */
+ static eStatistic GetPrerequisite(const eStatistic a_Type);
+
+private:
+
+ eStatistic m_Type;
+
+ AString m_Name;
+
+ eStatistic m_Depends;
+
+ static cStatInfo ms_Info[statCount];
+};
+
+
+
+
+/* Signed (?) integral value. */
+typedef int StatValue; // tolua_export
+
+
+
+
+/** Class that manages the statistics and achievements of a single player. */
+// tolua_begin
+class cStatManager
+{
+public:
+ // tolua_end
+
+ cStatManager();
+
+ // tolua_begin
+
+ /** Return the value of the specified stat. */
+ StatValue GetValue(const eStatistic a_Stat) const;
+
+ /** Set the value of the specified stat. */
+ void SetValue(const eStatistic a_Stat, const StatValue a_Value);
+
+ /** Reset everything. */
+ void Reset();
+
+ /** Increment the specified stat.
+ *
+ * Returns the new value.
+ */
+ StatValue AddValue(const eStatistic a_Stat, const StatValue a_Delta = 1);
+
+ // tolua_end
+
+private:
+
+ StatValue m_MainStats[statCount];
+
+ // TODO 10-05-2014 xdot: Use, mine, craft statistics
+
+
+}; // tolua_export
+
+
+