- cleanup achievement code for easier expansion later

This commit is contained in:
SoftCoder 2017-10-07 16:45:31 -07:00
parent ff4eb7e61e
commit 9de36c32a3
3 changed files with 16 additions and 13 deletions

View File

@ -5231,10 +5231,10 @@ void saveStatsToSteam(Game* game, Stats& endStats) {
for (int factionIndex = 0;
factionIndex < game->getWorld()->getFactionCount(); ++factionIndex) {
if (factionIndex == game->getWorld()->getThisFactionIndex()) {
printf("\nWriting out game stats for Faction Index: %d won status: %d\n",factionIndex,endStats.getVictory(factionIndex));
//printf("\nWriting out game stats for Faction Index: %d won status: %d\n",factionIndex,endStats.getVictory(factionIndex));
if (endStats.getVictory(factionIndex)) {
if(steamInstance->isUnlocked("ACH_WIN_ONE_GAME") == false) {
steamInstance->unlock("ACH_WIN_ONE_GAME");
if(steamInstance->isUnlocked(EnumParser<SteamAchievementName>::getString(ACH_WIN_ONE_GAME).c_str()) == false) {
steamInstance->unlock(EnumParser<SteamAchievementName>::getString(ACH_WIN_ONE_GAME).c_str());
}
}
}

View File

@ -9,12 +9,6 @@ namespace Glest{ namespace Game{
std::map<std::string,SteamStatType> Steam::SteamStatNameTypes = Steam::create_map();
// Achievements
static const char *const achievementNames[] = {
"ACH_WIN_ONE_GAME",
};
#define NUM_ACHIEVEMENTS (sizeof(achievementNames) / sizeof(achievementNames[0]))
// Language map
static inline std::map<std::string, std::string> gen_langToCode()
{
@ -103,8 +97,10 @@ struct SteamPrivate {
break;
}
}
for (size_t index = 0; index < NUM_ACHIEVEMENTS; ++index) {
STEAMSHIM_getAchievement(achievementNames[index]);
for(int index = 0; index < EnumParser<SteamAchievementName>::getCount(); ++index) {
SteamAchievementName achName = static_cast<SteamAchievementName>(index);
string achNameStr = EnumParser<SteamAchievementName>::getString(achName);
STEAMSHIM_getAchievement(achNameStr.c_str());
}
Shared::PlatformCommon::Chrono timer;
@ -118,7 +114,6 @@ struct SteamPrivate {
void setAchievement(const char *name, bool set) {
achievements[name] = set;
STEAMSHIM_setAchievement(name, set);
//STEAMSHIM_storeStats();
}
void updateAchievement(const char *name, bool isSet) {
@ -226,7 +221,7 @@ struct SteamPrivate {
return !userName.empty()
&& !lang.empty()
&& (int)stats.size() >= EnumParser<SteamStatName>::getCount()
&& achievements.size() == NUM_ACHIEVEMENTS;
&& (int)achievements.size() >= EnumParser<SteamAchievementName>::getCount();
}
};

View File

@ -40,6 +40,14 @@ inline EnumParser<SteamStatName>::EnumParser() {
enumMap["stat_online_minutes_played"] = stat_online_minutes_played;
}
enum SteamAchievementName {
ACH_WIN_ONE_GAME
};
template <>
inline EnumParser<SteamAchievementName>::EnumParser() {
enumMap["ACH_WIN_ONE_GAME"] = ACH_WIN_ONE_GAME;
}
class Steam
{