diff --git a/data/gui/tracks.stkgui b/data/gui/tracks.stkgui index 346784a1c..077100c5a 100644 --- a/data/gui/tracks.stkgui +++ b/data/gui/tracks.stkgui @@ -5,12 +5,9 @@
- - - - - - +
diff --git a/src/states_screens/tracks_screen.cpp b/src/states_screens/tracks_screen.cpp index f9f5dba40..516df9e73 100644 --- a/src/states_screens/tracks_screen.cpp +++ b/src/states_screens/tracks_screen.cpp @@ -18,6 +18,8 @@ #include "challenges/unlock_manager.hpp" #include "guiengine/widget.hpp" #include "io/file_manager.hpp" +#include "race/grand_prix_data.hpp" +#include "race/grand_prix_manager.hpp" #include "states_screens/state_manager.hpp" #include "states_screens/tracks_screen.hpp" #include "states_screens/dialogs/track_info_dialog.hpp" @@ -95,74 +97,70 @@ void TracksScreen::eventCallback(Widget* widget, const std::string& name, const } else if (name == "gps") { - RibbonWidget* w = dynamic_cast(widget); - if(w != NULL) - std::cout << "Clicked on GrandPrix " << w->getSelectionIDString(GUI_PLAYER_ID).c_str() << std::endl; + RibbonWidget* tracks_widget = dynamic_cast(widget); + if(tracks_widget != NULL) + std::cout << "Clicked on GrandPrix " << tracks_widget->getSelectionIDString(GUI_PLAYER_ID).c_str() << std::endl; } } void TracksScreen::init() { - DynamicRibbonWidget* w = this->getWidget("tracks"); - assert( w != NULL ); + DynamicRibbonWidget* gps_widget = this->getWidget("gps"); + assert( gps_widget != NULL ); + + DynamicRibbonWidget* tracks_widget = this->getWidget("tracks"); + assert( tracks_widget != NULL ); RibbonWidget* tabs = this->getWidget("trackgroups"); assert( tabs != NULL ); + + // Reset GP list everytime (accounts for locking changes, etc.) + gps_widget->clearItems(); - /* - tracks->m_children.clearAndDeleteAll(); + // Build GP list + const int gpAmount = grand_prix_manager->getNumberOfGrandPrix(); + for (int n=0; ngetGrandPrix(n); + std::cout << "Got GP : " << gp->getId() << std::endl; + + std::vector tracks = gp->getTracks(); + + // TODO: use actual screenshots + if (unlock_manager->isLocked(gp->getId())) + { + gps_widget->addItem( _("Locked : solve active challenges to gain access to more!"), "locked", "gui/main_help.png", true ); + } + else + { + gps_widget->addItem( gp->getName(), gp->getId(), "gui/main_help.png", false ); + } + } + gps_widget->updateItemDisplay(); - ButtonWidget* item1 = new ButtonWidget(); - item1->m_text = _("Standard"); - item1->m_proeprties[PROP_ID] = "stdtracks"; - tracks->m_children.push_back(item1); - - ButtonWidget* item2 = new ButtonWidget(); - item2->m_text = _("Add-Ons"); - item2->m_proeprties[PROP_ID] = "addontracks"; - tracks->m_children.push_back(item2); -*/ - //tabs->clearItems(); - //tabs->addItem( _("Standard"), "stdtracks", "" /* image */); - //tabs->addItem( _("Add-Ons"), "stdtracks", "" /* image */); - //tabs->addItem( _("Special"), "stdtracks", "" /* image */); - //tabs->updateItemDisplay(); - - // Re-build track list everytime (accounts for locking changes, etc.) - w->clearItems(); + // Reset track list everytime (accounts for locking changes, etc.) + tracks_widget->clearItems(); + // Build track list const int trackAmount = track_manager->getNumberOfTracks(); - //bool hasLockedTracks = false; for (int n=0; ngetTrack(n); if (curr->isArena()) continue; - /* if (unlock_manager->isLocked(curr->getIdent())) { - hasLockedTracks = true; - continue; - } - */ - if (unlock_manager->isLocked(curr->getIdent())) - { - w->addItem( _("Locked : solve active challenges to gain access to more!"), "locked", curr->getScreenshotFile(), true ); + tracks_widget->addItem( _("Locked : solve active challenges to gain access to more!"), "locked", curr->getScreenshotFile(), true ); } else { - w->addItem( curr->getName(), curr->getIdent(), curr->getScreenshotFile(), false ); + tracks_widget->addItem( curr->getName(), curr->getIdent(), curr->getScreenshotFile(), false ); } } - w->addItem(_("Random Track"), "random_track", "/gui/track_random.png"); -/* - if (hasLockedTracks) - { - w->addItem(_("Locked Tracks"), "Lock", "textures/gui_lock.png"); - } - */ - w->updateItemDisplay(); + tracks_widget->addItem(_("Random Track"), "random_track", "/gui/track_random.png"); + + tracks_widget->updateItemDisplay(); } void TracksScreen::tearDown() @@ -171,9 +169,9 @@ void TracksScreen::tearDown() void TracksScreen::setFocusOnTrack(const std::string& trackName) { - DynamicRibbonWidget* w = this->getWidget("tracks"); - assert( w != NULL ); + DynamicRibbonWidget* tracks_widget = this->getWidget("tracks"); + assert( tracks_widget != NULL ); // FIXME: don't hardcode player 0? - w->setSelection(trackName, 0, true); + tracks_widget->setSelection(trackName, 0, true); }