Esempio n. 1
0
/** Triggers an asynchronous request to get the achievements for this user
 *  from the server. The state of this profile is changed to be fetching,
 *  and will be reset to ready when the server request returns.
 */
void OnlineProfile::fetchAchievements()
{
    assert(PlayerManager::isCurrentLoggedIn());
    if (m_has_fetched_achievements || m_is_current_user)
        return;

    m_state = State(m_state | S_FETCHING_ACHIEVEMENTS);

    // ------------------------------------------------------------------------
    /** A simple class that receives the achievements, and calls the right
     *  Profile instance to store them. */
    class AchievementsRequest : public XMLRequest
    {
    public:
        AchievementsRequest() : XMLRequest(true, true) {}
        virtual void callback()
        {
            uint32_t user_id = 0;
            getXMLData()->get("visitingid", &user_id);
            OnlineProfile *profile = ProfileManager::get()->getProfileByID(user_id);
            if (profile)
                profile->storeAchievements(getXMLData());
        }   // AchievementsRequest::callback
    };   // class AchievementsRequest
    // ------------------------------------------------------------------------

    AchievementsRequest * request = new AchievementsRequest();
    PlayerManager::setUserDetails(request, "get-achievements");
    request->addParameter("visitingid", m_id);
    RequestManager::get()->addRequest(request);
}   // fetchAchievements
Esempio n. 2
0
 void Profile::requestAchievements()
 {
     assert(CurrentUser::get()->isRegisteredUser() && !m_is_current_user);
     AchievementsRequest * request = new AchievementsRequest();
     request->setServerURL("client-user.php");
     request->addParameter("action","get-achievements");
     request->addParameter("token", CurrentUser::get()->getToken());
     request->addParameter("userid", CurrentUser::get()->getID());
     request->addParameter("visitingid", m_id);
     RequestManager::get()->addRequest(request);
 }