Cosmetic changes to follow our coding style. Also fixed incorrect
'waiting for friends' message while waiting for achievements.
This commit is contained in:
parent
14424ee10f
commit
642797bdde
@ -113,7 +113,7 @@ void Achievement::reset()
|
|||||||
* The AchievementInfo adds up all goal values to get 'm', and this
|
* The AchievementInfo adds up all goal values to get 'm', and this
|
||||||
* this class end up all current key values for 'n'.
|
* this class end up all current key values for 'n'.
|
||||||
*/
|
*/
|
||||||
irr::core::stringw Achievement::getProgressAsString()
|
irr::core::stringw Achievement::getProgressAsString() const
|
||||||
{
|
{
|
||||||
int progress = 0;
|
int progress = 0;
|
||||||
std::map<std::string, int>::const_iterator iter;
|
std::map<std::string, int>::const_iterator iter;
|
||||||
|
@ -68,7 +68,7 @@ public:
|
|||||||
void increase(const std::string & key, int increase = 1);
|
void increase(const std::string & key, int increase = 1);
|
||||||
|
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
virtual irr::core::stringw getProgressAsString();
|
virtual irr::core::stringw getProgressAsString() const;
|
||||||
void onRaceEnd();
|
void onRaceEnd();
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
/** Returns the id of this achievement. */
|
/** Returns the id of this achievement. */
|
||||||
|
@ -44,29 +44,35 @@ using namespace Online;
|
|||||||
DEFINE_SCREEN_SINGLETON( OnlineProfileAchievements );
|
DEFINE_SCREEN_SINGLETON( OnlineProfileAchievements );
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
/** Constructor.
|
||||||
OnlineProfileAchievements::OnlineProfileAchievements() : OnlineProfileBase("online/profile_achievements.stkgui")
|
*/
|
||||||
|
OnlineProfileAchievements::OnlineProfileAchievements()
|
||||||
|
: OnlineProfileBase("online/profile_achievements.stkgui")
|
||||||
{
|
{
|
||||||
m_selected_achievement_index = -1;
|
m_selected_achievement_index = -1;
|
||||||
} // OnlineProfileAchievements
|
} // OnlineProfileAchievements
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
/** Callback when the xml file was loaded.
|
||||||
|
*/
|
||||||
void OnlineProfileAchievements::loadedFromFile()
|
void OnlineProfileAchievements::loadedFromFile()
|
||||||
{
|
{
|
||||||
OnlineProfileBase::loadedFromFile();
|
OnlineProfileBase::loadedFromFile();
|
||||||
m_achievements_list_widget = getWidget<GUIEngine::ListWidget>("achievements_list");
|
m_achievements_list_widget = getWidget<ListWidget>("achievements_list");
|
||||||
assert(m_achievements_list_widget != NULL);
|
assert(m_achievements_list_widget != NULL);
|
||||||
|
|
||||||
} // loadedFromFile
|
} // loadedFromFile
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
/** Callback before widgets are added. Clears all widgets.
|
||||||
|
*/
|
||||||
void OnlineProfileAchievements::beforeAddingWidget()
|
void OnlineProfileAchievements::beforeAddingWidget()
|
||||||
{
|
{
|
||||||
OnlineProfileBase::beforeAddingWidget();
|
OnlineProfileBase::beforeAddingWidget();
|
||||||
m_achievements_list_widget->clearColumns();
|
m_achievements_list_widget->clearColumns();
|
||||||
m_achievements_list_widget->addColumn( _("Name"), 2 );
|
m_achievements_list_widget->addColumn( _("Name"), 2 );
|
||||||
|
// For the currently logged in user achievement progress will
|
||||||
|
// also be displayed.
|
||||||
if(m_visiting_profile && m_visiting_profile->isCurrentUser())
|
if(m_visiting_profile && m_visiting_profile->isCurrentUser())
|
||||||
{
|
{
|
||||||
m_achievements_list_widget->addColumn( _("Progress"), 1 );
|
m_achievements_list_widget->addColumn( _("Progress"), 1 );
|
||||||
@ -74,14 +80,19 @@ void OnlineProfileAchievements::beforeAddingWidget()
|
|||||||
} // beforeAddingWidget
|
} // beforeAddingWidget
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
/** Called when entering this menu (after widgets have been added).
|
||||||
|
*/
|
||||||
void OnlineProfileAchievements::init()
|
void OnlineProfileAchievements::init()
|
||||||
{
|
{
|
||||||
OnlineProfileBase::init();
|
OnlineProfileBase::init();
|
||||||
m_profile_tabs->select( m_achievements_tab->m_properties[PROP_ID], PLAYER_ID_GAME_MASTER );
|
m_profile_tabs->select( m_achievements_tab->m_properties[PROP_ID],
|
||||||
|
PLAYER_ID_GAME_MASTER );
|
||||||
assert(m_visiting_profile != NULL);
|
assert(m_visiting_profile != NULL);
|
||||||
|
|
||||||
|
// For current user add the progrss information.
|
||||||
if(m_visiting_profile->isCurrentUser())
|
if(m_visiting_profile->isCurrentUser())
|
||||||
{
|
{
|
||||||
|
// No need to wait for results, since they are local anyway
|
||||||
m_waiting_for_achievements = false;
|
m_waiting_for_achievements = false;
|
||||||
m_achievements_list_widget->clear();
|
m_achievements_list_widget->clear();
|
||||||
const std::map<uint32_t, Achievement *> & all_achievements =
|
const std::map<uint32_t, Achievement *> & all_achievements =
|
||||||
@ -90,28 +101,39 @@ void OnlineProfileAchievements::init()
|
|||||||
std::map<uint32_t, Achievement *>::const_iterator it;
|
std::map<uint32_t, Achievement *>::const_iterator it;
|
||||||
for (it = all_achievements.begin(); it != all_achievements.end(); ++it)
|
for (it = all_achievements.begin(); it != all_achievements.end(); ++it)
|
||||||
{
|
{
|
||||||
std::vector<GUIEngine::ListWidget::ListCell> row;
|
std::vector<ListWidget::ListCell> row;
|
||||||
row.push_back(GUIEngine::ListWidget::ListCell(it->second->getInfo()->getTitle(),-1,2));
|
const Achievement *a = it->second;
|
||||||
row.push_back(GUIEngine::ListWidget::ListCell(it->second->getProgressAsString(),-1,1, true));
|
ListWidget::ListCell title(a->getInfo()->getTitle(), -1, 2);
|
||||||
m_achievements_list_widget->addItem(StringUtils::toString(it->second->getInfo()->getID()), row);
|
ListWidget::ListCell progress(a->getProgressAsString(), -1, 1);
|
||||||
|
row.push_back(title);
|
||||||
|
row.push_back(progress);
|
||||||
|
m_achievements_list_widget->addItem(
|
||||||
|
StringUtils::toString(a->getInfo()->getID()), row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Show achievements of a remote user. Set the waiting flag
|
||||||
|
// and submit a request to get the achievement data.
|
||||||
m_waiting_for_achievements = true;
|
m_waiting_for_achievements = true;
|
||||||
m_visiting_profile->fetchAchievements();
|
m_visiting_profile->fetchAchievements();
|
||||||
m_achievements_list_widget->clear();
|
m_achievements_list_widget->clear();
|
||||||
m_achievements_list_widget->addItem("loading", Messages::fetchingAchievements());
|
m_achievements_list_widget->addItem("loading",
|
||||||
|
Messages::fetchingAchievements());
|
||||||
}
|
}
|
||||||
} // init
|
} // init
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
void OnlineProfileAchievements::eventCallback(Widget* widget, const std::string& name, const int playerID)
|
void OnlineProfileAchievements::eventCallback(Widget* widget,
|
||||||
|
const std::string& name,
|
||||||
|
const int playerID)
|
||||||
{
|
{
|
||||||
OnlineProfileBase::eventCallback( widget, name, playerID);
|
OnlineProfileBase::eventCallback( widget, name, playerID);
|
||||||
if (name == m_achievements_list_widget->m_properties[GUIEngine::PROP_ID])
|
if (name == m_achievements_list_widget->m_properties[GUIEngine::PROP_ID])
|
||||||
{
|
{
|
||||||
m_selected_achievement_index = m_achievements_list_widget->getSelectionID();
|
m_selected_achievement_index =
|
||||||
|
m_achievements_list_widget->getSelectionID();
|
||||||
|
|
||||||
int id;
|
int id;
|
||||||
std::string achievement =
|
std::string achievement =
|
||||||
@ -120,28 +142,37 @@ void OnlineProfileAchievements::eventCallback(Widget* widget, const std::string&
|
|||||||
// is no error, show the achievement (it can happen that the
|
// is no error, show the achievement (it can happen that the
|
||||||
// string is "" if no achievement exists)
|
// string is "" if no achievement exists)
|
||||||
if(StringUtils::fromString(achievement, id))
|
if(StringUtils::fromString(achievement, id))
|
||||||
new MessageDialog(AchievementsManager::get()->getAchievementInfo(id)->getDescription());
|
new MessageDialog(AchievementsManager::get()
|
||||||
|
->getAchievementInfo(id)->getDescription());
|
||||||
}
|
}
|
||||||
} // eventCallback
|
} // eventCallback
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
/** Called every frame. It will check if results from an achievement request
|
||||||
|
* have been received, and if so, display them.
|
||||||
|
*/
|
||||||
void OnlineProfileAchievements::onUpdate(float delta)
|
void OnlineProfileAchievements::onUpdate(float delta)
|
||||||
{
|
{
|
||||||
if(m_waiting_for_achievements)
|
if (!m_waiting_for_achievements) return;
|
||||||
{
|
|
||||||
if(m_visiting_profile->isReady())
|
if (!m_visiting_profile->isReady())
|
||||||
{
|
{
|
||||||
|
// This will display an increasing number of dots while waiting.
|
||||||
|
m_achievements_list_widget->renameItem("loading",
|
||||||
|
Messages::fetchingAchievements());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now reesults are available, display them.
|
||||||
m_achievements_list_widget->clear();
|
m_achievements_list_widget->clear();
|
||||||
for(unsigned int i = 0; i < m_visiting_profile->getAchievements().size(); i++)
|
const OnlineProfile::IDList &a = m_visiting_profile->getAchievements();
|
||||||
|
for (unsigned int i = 0; i < a.size(); i++)
|
||||||
{
|
{
|
||||||
AchievementInfo * info = AchievementsManager::get()->getAchievementInfo(m_visiting_profile->getAchievements()[i]);
|
AchievementInfo *info =
|
||||||
m_achievements_list_widget->addItem(StringUtils::toString(info->getID()), info->getTitle());
|
AchievementsManager::get()->getAchievementInfo(a[i]);
|
||||||
|
m_achievements_list_widget->addItem(StringUtils::toString(info->getID()),
|
||||||
|
info->getTitle() );
|
||||||
}
|
}
|
||||||
m_waiting_for_achievements = false;
|
m_waiting_for_achievements = false;
|
||||||
}
|
|
||||||
else
|
} // onUpdate
|
||||||
{
|
|
||||||
m_achievements_list_widget->renameItem("loading", Messages::fetchingFriends());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user