1
0
Fork 0

Statistic/Achievement defs

This commit is contained in:
andrew 2014-04-07 16:31:15 +03:00
parent 4082adbbad
commit c79ba3494c
2 changed files with 255 additions and 0 deletions

139
src/Statistics.cpp Normal file
View File

@ -0,0 +1,139 @@
// Statistics.cpp
#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
#include "Statistics.h"
cStatInfo cStatInfo::ms_Info[statCount] = {
// Do NOT change the order
// http://minecraft.gamepedia.com/Achievements
/* Type | Name | Prerequisite */
cStatInfo(achOpenInv, "openInventory"),
cStatInfo(achMineWood, "mineWood", achOpenInv),
cStatInfo(achCraftWorkbench, "buildWorkBench", achMineWood),
cStatInfo(achCraftPickaxe, "buildPickaxe", achCraftWorkbench),
cStatInfo(achCraftFurnace, "buildFurnace", achCraftPickaxe),
cStatInfo(achAcquireIron, "acquireIron", achCraftFurnace),
cStatInfo(achCraftHoe, "buildHoe", achCraftWorkbench),
cStatInfo(achMakeBread, "makeBread", achCraftHoe),
cStatInfo(achBakeCake, "bakeCake", achCraftHoe),
cStatInfo(achCraftBetterPick, "buildBetterPickaxe", achCraftPickaxe),
cStatInfo(achCookFish, "cookFish", achAcquireIron),
cStatInfo(achOnARail, "onARail", achAcquireIron),
cStatInfo(achCraftSword, "buildSword", achCraftWorkbench),
cStatInfo(achKillMonster, "killEnemy", achCraftSword),
cStatInfo(achKillCow, "killCow", achCraftSword),
cStatInfo(achFlyPig, "flyPig", achKillCow),
cStatInfo(achSnipeSkeleton, "snipeSkeleton", achKillMonster),
cStatInfo(achDiamonds, "diamonds", achAcquireIron),
cStatInfo(achEnterPortal, "portal", achDiamonds),
cStatInfo(achReturnToSender, "ghast", achEnterPortal),
cStatInfo(achBlazeRod, "blazeRod", achEnterPortal),
cStatInfo(achBrewPotion, "potion", achBlazeRod),
cStatInfo(achEnterTheEnd, "theEnd", achBlazeRod),
cStatInfo(achDefeatDragon, "theEnd2", achEnterTheEnd),
cStatInfo(achCraftEnchantTable, "enchantments", achDiamonds),
cStatInfo(achOverkill, "overkill", achCraftEnchantTable),
cStatInfo(achBookshelf, "bookcase", achCraftEnchantTable),
cStatInfo(achExploreAllBiomes, "exploreAllBiomes", achEnterTheEnd),
cStatInfo(achSpawnWither, "spawnWither", achDefeatDragon),
cStatInfo(achKillWither, "killWither", achSpawnWither),
cStatInfo(achFullBeacon, "fullBeacon", achKillWither),
cStatInfo(achBreedCow, "breedCow", achKillCow),
cStatInfo(achThrowDiamonds, "diamondsToYou", achDiamonds),
// http://minecraft.gamepedia.com/Statistics
/* Type | Name */
cStatInfo(statGamesQuit, "stat.leaveGame"),
cStatInfo(statMinutesPlayed, "stat.playOneMinute"),
cStatInfo(statDistWalked, "stat.walkOnCm"),
cStatInfo(statDistSwum, "stat.swimOneCm"),
cStatInfo(statDistFallen, "stat.fallOneCm"),
cStatInfo(statDistClimbed, "stat.climbOneCm"),
cStatInfo(statDistFlown, "stat.flyOneCm"),
cStatInfo(statDistMinecart, "stat.minecartOneCm"),
cStatInfo(statDistBoat, "stat.boatOneCm"),
cStatInfo(statDistPig, "stat.pigOneCm"),
cStatInfo(statDistHorse, "stat.horseOneCm"),
cStatInfo(statJumps, "stat.jump"),
cStatInfo(statItemsDropped, "stat.drop"),
cStatInfo(statDamageDealt, "stat.damageDealth"),
cStatInfo(statDamageTaken, "stat.damageTaken"),
cStatInfo(statDeaths, "stat.deaths"),
cStatInfo(statMobKills, "stat.mobKills"),
cStatInfo(statAnimalsBred, "stat.animalsBred"),
cStatInfo(statPlayerKills, "stat.playerKills"),
cStatInfo(statFishCaught, "stat.fishCaught"),
cStatInfo(statJunkFished, "stat.junkFished"),
cStatInfo(statTreasureFished, "stat.treasureFished")
};
cStatInfo::cStatInfo()
: m_Type(statInvalid)
, m_Depends(statInvalid)
{}
cStatInfo::cStatInfo(const eStatistic a_Type, const AString & a_Name, const eStatistic a_Depends)
: m_Type(a_Type)
, m_Name(a_Name)
, m_Depends(a_Depends)
{}
const AString & cStatInfo::GetName(const eStatistic a_Type)
{
ASSERT((a_Type > statInvalid) && (a_Type < statCount));
return ms_Info[a_Type].m_Name;
}
eStatistic cStatInfo::GetType(const AString & a_Name)
{
for (unsigned int i = 0; i < ARRAYCOUNT(ms_Info); ++i)
{
if (NoCaseCompare(ms_Info[i].m_Name, a_Name))
{
return ms_Info[i].m_Type;
}
}
return statInvalid;
}
eStatistic cStatInfo::GetPrerequisite(const eStatistic a_Type)
{
ASSERT((a_Type > statInvalid) && (a_Type < statCount));
return ms_Info[a_Type].m_Depends;
}

116
src/Statistics.h Normal file
View File

@ -0,0 +1,116 @@
// Statistics.h
#pragma once
enum eStatistic
{
// Do NOT change the order
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
};
/** 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];
};