Special case for viewing your own achievements. (Shows the progress)
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13662 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
cbca9404e3
commit
fc45d76d27
@ -116,6 +116,12 @@ void SingleAchievement::increase(int increase)
|
||||
check();
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
irr::core::stringw SingleAchievement::getProgressAsString()
|
||||
{
|
||||
return StringUtils::toWString(m_progress) + "/" + StringUtils::toWString(((SingleAchievementInfo *) m_achievement_info)->getGoalValue());
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
MapAchievement::MapAchievement(const AchievementInfo * info)
|
||||
: Achievement(info)
|
||||
@ -187,3 +193,18 @@ void MapAchievement::increase(const std::string & key, int increase)
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
irr::core::stringw MapAchievement::getProgressAsString()
|
||||
{
|
||||
int progress(0);
|
||||
int goal(0);
|
||||
const std::map<std::string, int> goal_values = ((MapAchievementInfo *) m_achievement_info)->getGoalValues();
|
||||
std::map<std::string, int>::const_iterator iter;
|
||||
for ( iter = goal_values.begin(); iter != goal_values.end(); ++iter ) {
|
||||
goal += iter->second;
|
||||
progress += m_progress_map[iter->first];
|
||||
Log::info("ach","%s",iter->first.c_str());
|
||||
}
|
||||
return StringUtils::toWString(progress) + "/" + StringUtils::toWString(goal);
|
||||
}
|
||||
|
||||
|
@ -46,11 +46,13 @@ public:
|
||||
Achievement (const AchievementInfo * info);
|
||||
virtual ~Achievement ();
|
||||
uint32_t getID () const { return m_id; }
|
||||
const AchievementInfo * getInfo () const { return m_achievement_info;}
|
||||
virtual void load (XMLNode * input) = 0;
|
||||
virtual void save (std::ofstream & out) = 0;
|
||||
virtual void reset () = 0;
|
||||
void onRaceEnd ();
|
||||
void setAchieved () {m_achieved = true; };
|
||||
virtual irr::core::stringw getProgressAsString () = 0;
|
||||
|
||||
enum AchievementType
|
||||
{
|
||||
@ -74,6 +76,7 @@ public:
|
||||
void save (std::ofstream & out);
|
||||
void increase (int increase = 1);
|
||||
void reset ();
|
||||
virtual irr::core::stringw getProgressAsString ();
|
||||
}; // class SingleAchievement
|
||||
|
||||
class MapAchievement : public Achievement
|
||||
@ -90,6 +93,7 @@ public:
|
||||
void increase (const std::string & key, int increase = 1);
|
||||
void save (std::ofstream & out);
|
||||
void reset ();
|
||||
virtual irr::core::stringw getProgressAsString ();
|
||||
}; // class MapAchievement
|
||||
|
||||
#endif
|
||||
|
@ -77,6 +77,7 @@ public:
|
||||
MapAchievementInfo (const XMLNode * input);
|
||||
virtual ~MapAchievementInfo () {};
|
||||
int getGoalValue (const std::string & key) { return m_goal_values[key];}
|
||||
const std::map<std::string, int> & getGoalValues() const {return m_goal_values;}
|
||||
virtual bool checkCompletion (Achievement * achievement) const;
|
||||
virtual Achievement::AchievementType getType() const { return Achievement::AT_MAP; };
|
||||
}; // class MapAchievementInfo
|
||||
|
@ -55,6 +55,7 @@ public :
|
||||
void sync(const std::vector<uint32_t> & achieved_ids);
|
||||
void onRaceEnd();
|
||||
const std::string & getID() const {return m_id;}
|
||||
const std::map<uint32_t, Achievement *> & getAllAchievements() {return m_achievements;}
|
||||
Achievement * getAchievement(uint32_t id);
|
||||
};
|
||||
|
||||
|
@ -78,12 +78,21 @@ void OnlineProfileAchievements::init()
|
||||
assert(m_visiting_profile != NULL);
|
||||
if(m_visiting_profile->isCurrentUser())
|
||||
{
|
||||
//fill with local FIXME
|
||||
m_waiting_for_achievements = false;
|
||||
m_achievements_list_widget->clear();
|
||||
const std::map<uint32_t, Achievement *> & all_achievements = AchievementsManager::get()->getActive()->getAllAchievements();
|
||||
std::map<uint32_t, Achievement *>::const_iterator it;
|
||||
for ( it = all_achievements.begin(); it != all_achievements.end(); ++it ) {
|
||||
PtrVector<GUIEngine::ListWidget::ListCell> * row = new PtrVector<GUIEngine::ListWidget::ListCell>;
|
||||
row->push_back(new GUIEngine::ListWidget::ListCell(it->second->getInfo()->getTitle(),-1,2));
|
||||
row->push_back(new GUIEngine::ListWidget::ListCell(it->second->getProgressAsString(),-1,1, true));
|
||||
m_achievements_list_widget->addItem(StringUtils::toString(it->second->getInfo()->getID()), row);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_visiting_profile->fetchAchievements();
|
||||
m_waiting_for_achievements = true;
|
||||
m_visiting_profile->fetchAchievements();
|
||||
m_achievements_list_widget->clear();
|
||||
m_achievements_list_widget->addItem("loading", Messages::fetchingAchievements());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user