Achievements looking good. Only server syncing and server-side need to be done.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13635 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
unitraxx 2013-09-06 00:06:59 +00:00
parent c67c5a6fb1
commit f38106ce77
9 changed files with 25 additions and 15 deletions

View File

@ -12,6 +12,6 @@
<entry key="hacienda" goal="1"/>
<entry key="jungle" goal="1"/>
</achievement>
<achievement id="2" type="single" goal="1" title="Strike!" description="Hit a kart with a bowling-ball." />
<achievement id="2" type="single" goal="10" title="Strike!" description="Hit 10 karts with a bowling-ball." />
</achievements>

View File

@ -8,7 +8,7 @@
<buttonbar id="options" width="90%" height="30%" align="center">
<icon-button id="view" width="64" height="64" icon="gui/difficulty_medium.png"
I18N="User info dialog" text="View friends" label_location="bottom"/>
I18N="User info dialog" text="View" label_location="bottom"/>
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
I18N="User info dialog" text="Close" label_location="bottom"/>
</buttonbar>

View File

@ -63,7 +63,7 @@ void Achievement::check()
//show achievement
GUIEngine::DialogQueue::get()->pushDialog(
new NotificationDialog(NotificationDialog::T_Achievements,
irr::core::stringw(_("Completed achievement")) + irr::core::stringw("\"") + m_achievement_info->getDescription() + irr::core::stringw("\".")
irr::core::stringw(_("Completed achievement")) + irr::core::stringw(" \"") + m_achievement_info->getTitle() + irr::core::stringw("\".")
));
//send to server
Online::CurrentUser::get()->onAchieving(m_id);
@ -94,8 +94,8 @@ void SingleAchievement::load(XMLNode * input)
// ============================================================================
void SingleAchievement::save(std::ofstream & out)
{
out << " <achievement id=\"" << m_id << "\""
<< "achieved=\"" << StringUtils::boolstr(m_achieved) << "\""
out << " <achievement id=\"" << m_id << "\" "
<< "achieved=\"" << StringUtils::boolstr(m_achieved) << "\" "
<< "value=\"" << StringUtils::toString(m_progress) << "\""
<< "/>\n";
} // save

View File

@ -48,6 +48,7 @@ public:
virtual ~AchievementInfo () {};
uint32_t getID () const { return m_id; }
irr::core::stringw getDescription () const { return m_description; }
irr::core::stringw getTitle () const { return m_title; }
virtual Achievement::AchievementType getType () const = 0;
virtual bool checkCompletion (Achievement * achievement) const = 0;
bool needsResetAfterRace() const {return m_reset_after_race; }

View File

@ -153,8 +153,6 @@ void AchievementsManager::createSlotsIfNeeded()
}
if(something_changed){
Log::warn("AchievementsManager::save",
"errueeeur");
save();
}
} // UnlockManager::createSlotsIfNeeded

View File

@ -24,6 +24,7 @@
#include <algorithm>
#include <ctime>
#include "achievements/achievements_manager.hpp"
#include "audio/music_manager.hpp"
#include "audio/sfx_base.hpp"
#include "audio/sfx_manager.hpp"
@ -439,6 +440,9 @@ void World::terminateRace()
&best_player);
unlock_manager->getCurrentSlot()->raceFinished();
((MapAchievement *) AchievementsManager::get()->getActive()->getAchievement(1))->increase(getTrack()->getIdent(), 1);
AchievementsManager::get()->onRaceEnd();
if (m_race_gui) m_race_gui->clearAllMessages();
// we can't delete the race gui here, since it is needed in case of

View File

@ -18,6 +18,7 @@
#include "physics/physics.hpp"
#include "achievements/achievements_manager.hpp"
#include "animations/three_d_animation.hpp"
#include "karts/abstract_kart.hpp"
#include "karts/kart_properties.hpp"
@ -236,12 +237,12 @@ void Physics::update(float dt)
// Only explode a bowling ball if the target is
// not invulnerable
AbstractKart* target_kart = p->getUserPointer(1)->getPointerKart();
if(p->getUserPointer(0)->getPointerFlyable()->getType()
!=PowerupManager::POWERUP_BOWLING ||
!target_kart->isInvulnerable() )
PowerupManager::PowerupType type = p->getUserPointer(0)->getPointerFlyable()->getType();
if(type != PowerupManager::POWERUP_BOWLING || !target_kart->isInvulnerable())
{
p->getUserPointer(0)->getPointerFlyable()
->hit(target_kart);
p->getUserPointer(0)->getPointerFlyable()->hit(target_kart);
if ( type ==PowerupManager::POWERUP_BOWLING )
((SingleAchievement *) AchievementsManager::get()->getActive()->getAchievement(2))->increase(1);
}
}

View File

@ -57,6 +57,14 @@ void NotificationDialog::beforeAddingWidgets()
assert(m_options_widget != NULL);
m_view_widget = getWidget<IconButtonWidget>("view");
assert(m_view_widget != NULL);
if(m_type == T_Friends)
{
m_view_widget->setText(_("View Friends"));
}
else if (m_type == T_Achievements)
{
m_view_widget->setText(_("View Achievements"));
}
m_cancel_widget = getWidget<IconButtonWidget>("cancel");
assert(m_cancel_widget != NULL);
m_options_widget->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
@ -131,8 +139,7 @@ void NotificationDialog::onUpdate(float dt)
}
else if (m_type == T_Achievements)
{
ProfileManager::get()->setVisiting(CurrentUser::get()->getID());
StateManager::get()->pushScreen(OnlineProfileFriends::getInstance()); //FIXME should actually pop up achievements screen
//FIXME
}
}
return;

View File

@ -151,7 +151,6 @@ void OnlineScreen::init()
setInitialFocus();
DemoWorld::resetIdleTime();
m_online_status_widget->setText(Messages::signedInAs(CurrentUser::get()->getUserName()), false);
} // init
// ----------------------------------------------------------------------------