Cosmetic changes.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10042 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2011-10-26 05:01:51 +00:00
parent 3f96f3529b
commit 3f73183228

View File

@ -41,7 +41,8 @@ DEFINE_SCREEN_SINGLETON( RaceResultGUI );
/** Constructor, initialises internal data structures. /** Constructor, initialises internal data structures.
*/ */
RaceResultGUI::RaceResultGUI() : Screen("race_result.stkgui", /*pause race*/ false) RaceResultGUI::RaceResultGUI() : Screen("race_result.stkgui",
/*pause race*/ false)
{ {
} // RaceResultGUI } // RaceResultGUI
@ -93,7 +94,7 @@ void RaceResultGUI::enableAllButtons()
top->setVisible(true); top->setVisible(true);
top->setFocusForPlayer(PLAYER_ID_GAME_MASTER); top->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
} }
else if (race_manager->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX) else if (race_manager->getMajorMode()==RaceManager::MAJOR_MODE_GRAND_PRIX)
{ {
enableGPProgress(); enableGPProgress();
// In case of a GP: // In case of a GP:
@ -141,7 +142,8 @@ void RaceResultGUI::eventCallback(GUIEngine::Widget* widget,
std::vector<const ChallengeData*> unlocked = std::vector<const ChallengeData*> unlocked =
unlock_manager->getRecentlyUnlockedFeatures(); unlock_manager->getRecentlyUnlockedFeatures();
unlock_manager->clearUnlocked(); unlock_manager->clearUnlocked();
FeatureUnlockedCutScene* scene = FeatureUnlockedCutScene::getInstance(); FeatureUnlockedCutScene* scene =
FeatureUnlockedCutScene::getInstance();
scene->addUnlockedThings(unlocked); scene->addUnlockedThings(unlocked);
StateManager::get()->popMenu(); StateManager::get()->popMenu();
StateManager::get()->pushScreen(scene); StateManager::get()->pushScreen(scene);
@ -168,7 +170,8 @@ void RaceResultGUI::eventCallback(GUIEngine::Widget* widget,
cleanupGPProgress(); cleanupGPProgress();
StateManager::get()->popMenu(); StateManager::get()->popMenu();
race_manager->exitRace(); race_manager->exitRace();
StateManager::get()->resetAndGoToScreen(MainMenuScreen::getInstance()); StateManager::get()->resetAndGoToScreen(
MainMenuScreen::getInstance());
} }
else if (!getWidget(name.c_str())->isVisible()) else if (!getWidget(name.c_str())->isVisible())
{ {
@ -248,7 +251,8 @@ void RaceResultGUI::determineTableLayout()
RowInfo *ri = &(m_all_row_infos[position-first_position]); RowInfo *ri = &(m_all_row_infos[position-first_position]);
ri->m_is_player_kart = kart->getController()->isPlayerController(); ri->m_is_player_kart = kart->getController()->isPlayerController();
ri->m_kart_name = translations->fribidize(kart->getName()); ri->m_kart_name = translations->fribidize(kart->getName());
ri->m_player = (ri->m_is_player_kart ? kart->getController()->getPlayer() : NULL); ri->m_player = ri->m_is_player_kart
? kart->getController()->getPlayer() : NULL;
video::ITexture *icon = video::ITexture *icon =
kart->getKartProperties()->getIconMaterial()->getTexture(); kart->getKartProperties()->getIconMaterial()->getTexture();
@ -259,7 +263,8 @@ void RaceResultGUI::determineTableLayout()
std::string time_string = StringUtils::timeToString(time); std::string time_string = StringUtils::timeToString(time);
ri->m_finish_time_string = time_string.c_str(); ri->m_finish_time_string = time_string.c_str();
core::dimension2d<u32> rect = m_font->getDimension(ri->m_kart_name.c_str()); core::dimension2du rect =
m_font->getDimension(ri->m_kart_name.c_str());
if(rect.Width > m_width_kart_name) if(rect.Width > m_width_kart_name)
m_width_kart_name = rect.Width; m_width_kart_name = rect.Width;
} // for position } // for position
@ -368,10 +373,10 @@ bool RaceResultGUI::onEscapePressed()
* here and trigger the next phase. * here and trigger the next phase.
*/ */
GUIEngine::EventPropagation RaceResultGUI::filterActions(PlayerAction action, GUIEngine::EventPropagation RaceResultGUI::filterActions(PlayerAction action,
int deviceID, int deviceID,
const unsigned int value, const unsigned int value,
Input::InputType type, Input::InputType type,
int playerId) int playerId)
{ {
if(action!=PA_FIRE) return GUIEngine::EVENT_LET; if(action!=PA_FIRE) return GUIEngine::EVENT_LET;
@ -392,7 +397,8 @@ void RaceResultGUI::onUpdate(float dt, irr::video::IVideoDriver*)
{ {
renderGlobal(dt); renderGlobal(dt);
if (m_finish_sound != NULL && m_finish_sound->getStatus() != SFXManager::SFX_PLAYING) if (m_finish_sound != NULL &&
m_finish_sound->getStatus() != SFXManager::SFX_PLAYING)
{ {
try try
{ {
@ -403,7 +409,8 @@ void RaceResultGUI::onUpdate(float dt, irr::video::IVideoDriver*)
} }
catch (std::exception& e) catch (std::exception& e)
{ {
fprintf(stderr, "[RaceResultGUI] WARNING: exception caught when trying to load music: %s\n", e.what()); fprintf(stderr, "[RaceResultGUI] WARNING: exception caught when "
"trying to load music: %s\n", e.what());
} }
} }
} // onUpdate } // onUpdate
@ -443,7 +450,8 @@ void RaceResultGUI::renderGlobal(float dt)
RowInfo *ri = &(m_all_row_infos[i]); RowInfo *ri = &(m_all_row_infos[i]);
ri->m_x_pos = (float)m_leftmost_column; ri->m_x_pos = (float)m_leftmost_column;
} }
if(race_manager->getMajorMode()!=RaceManager::MAJOR_MODE_GRAND_PRIX) if(race_manager->getMajorMode() !=
RaceManager::MAJOR_MODE_GRAND_PRIX)
{ {
m_animation_state = RR_WAIT_TILL_END; m_animation_state = RR_WAIT_TILL_END;
enableAllButtons(); enableAllButtons();
@ -485,7 +493,8 @@ void RaceResultGUI::renderGlobal(float dt)
{ {
RowInfo *ri = &(m_all_row_infos[i]); RowInfo *ri = &(m_all_row_infos[i]);
ri->m_new_points = 0; ri->m_new_points = 0;
ri->m_current_displayed_points = (float)ri->m_new_overall_points; ri->m_current_displayed_points =
(float)ri->m_new_overall_points;
} }
} }
@ -535,14 +544,20 @@ void RaceResultGUI::renderGlobal(float dt)
ri->m_current_displayed_points += ri->m_current_displayed_points +=
dt*race_manager->getPositionScore(1)/m_time_for_points; dt*race_manager->getPositionScore(1)/m_time_for_points;
if(ri->m_current_displayed_points>ri->m_new_overall_points) if(ri->m_current_displayed_points>ri->m_new_overall_points)
ri->m_current_displayed_points = (float)ri->m_new_overall_points; {
ri->m_new_points -= dt*race_manager->getPositionScore(1)/m_time_for_points; ri->m_current_displayed_points =
(float)ri->m_new_overall_points;
}
ri->m_new_points -=
dt*race_manager->getPositionScore(1)/m_time_for_points;
if(ri->m_new_points<0) if(ri->m_new_points<0)
ri->m_new_points = 0; ri->m_new_points = 0;
break; break;
case RR_RESORT_TABLE: case RR_RESORT_TABLE:
x = ri->m_x_pos -ri->m_radius*sin(m_timer/m_time_rotation*M_PI); x = ri->m_x_pos
y = ri->m_centre_point+ri->m_radius*cos(m_timer/m_time_rotation*M_PI); - ri->m_radius*sin(m_timer/m_time_rotation*M_PI);
y = ri->m_centre_point
+ ri->m_radius*cos(m_timer/m_time_rotation*M_PI);
break; break;
case RR_WAIT_TILL_END: case RR_WAIT_TILL_END:
break; break;
@ -571,7 +586,8 @@ void RaceResultGUI::determineGPLayout()
kart->getKartProperties()->getIconMaterial()->getTexture(); kart->getKartProperties()->getIconMaterial()->getTexture();
ri->m_kart_name = translations->fribidize(kart->getName()); ri->m_kart_name = translations->fribidize(kart->getName());
ri->m_is_player_kart = kart->getController()->isPlayerController(); ri->m_is_player_kart = kart->getController()->isPlayerController();
ri->m_player = (ri->m_is_player_kart ? kart->getController()->getPlayer() : NULL); ri->m_player = ri->m_is_player_kart
? kart->getController()->getPlayer() : NULL;
float time = race_manager->getOverallTime(kart_id); float time = race_manager->getOverallTime(kart_id);
ri->m_finish_time_string ri->m_finish_time_string
@ -595,8 +611,8 @@ void RaceResultGUI::determineGPLayout()
int gp_position = race_manager->getKartGPRank(i); int gp_position = race_manager->getKartGPRank(i);
m_gp_position_was_changed |= j!=gp_position; m_gp_position_was_changed |= j!=gp_position;
RowInfo *ri = &(m_all_row_infos[j]); RowInfo *ri = &(m_all_row_infos[j]);
ri->m_radius = (j-gp_position)*(int)m_distance_between_rows*0.5f; ri->m_radius = (j-gp_position)*(int)m_distance_between_rows*0.5f;
ri->m_centre_point = m_top+(gp_position+j)*m_distance_between_rows*0.5f; ri->m_centre_point= m_top+(gp_position+j)*m_distance_between_rows*0.5f;
int p = race_manager->getKartScore(i); int p = race_manager->getKartScore(i);
ri->m_new_overall_points = p; ri->m_new_overall_points = p;
} // i < num_karts } // i < num_karts
@ -611,18 +627,20 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
unsigned int n, bool display_points) unsigned int n, bool display_points)
{ {
RowInfo *ri = &(m_all_row_infos[n]); RowInfo *ri = &(m_all_row_infos[n]);
video::SColor color = ri->m_is_player_kart ? video::SColor(255,255,0, 0 ) video::SColor color = ri->m_is_player_kart
: video::SColor(255,255,255,255); ? video::SColor(255,255,0, 0 )
: video::SColor(255,255,255,255);
#ifdef USE_PER_LINE_BACKGROUND #ifdef USE_PER_LINE_BACKGROUND
// Draw the background image // Draw the background image
core::rect<s32> dest(x-50, y, core::rect<s32> dest(x-50, y,
x+50+m_table_width, x+50+m_table_width,
(int)(y+m_distance_between_rows)); (int)(y+m_distance_between_rows));
ri->m_box_params.setTexture(irr_driver->getTexture( (file_manager->getGUIDir() + "skins/glass/glassbutton_focused.png").c_str() ) ); ri->m_box_params.setTexture(irr_driver->getTexture( (
GUIEngine::getSkin()->drawBoxFromStretchableTexture(&(ri->m_widget_container), file_manager->getGUIDir() +
dest, "skins/glass/glassbutton_focused.png").c_str() ) );
ri->m_box_params); GUIEngine::getSkin()->drawBoxFromStretchableTexture(
&(ri->m_widget_container),dest, ri->m_box_params);
#endif #endif
unsigned int current_x = x; unsigned int current_x = x;
@ -645,7 +663,8 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
// ------------- // -------------
core::recti pos_name(current_x, y, core::recti pos_name(current_x, y,
UserConfigParams::m_width, y+m_distance_between_rows); UserConfigParams::m_width, y+m_distance_between_rows);
m_font->draw(ri->m_kart_name, pos_name, color, false, false, NULL, true /* ignoreRTL */); m_font->draw(ri->m_kart_name, pos_name, color, false, false, NULL,
true /* ignoreRTL */);
current_x += m_width_kart_name + m_width_column_space; current_x += m_width_kart_name + m_width_column_space;
// Draw the time except in FTL mode // Draw the time except in FTL mode
@ -653,7 +672,8 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
if(race_manager->getMinorMode()!=RaceManager::MINOR_MODE_FOLLOW_LEADER) if(race_manager->getMinorMode()!=RaceManager::MINOR_MODE_FOLLOW_LEADER)
{ {
core::recti dest_rect = core::recti(current_x, y, current_x+100, y+10); core::recti dest_rect = core::recti(current_x, y, current_x+100, y+10);
m_font->draw(ri->m_finish_time_string, dest_rect, color, false, false, NULL, true /* ignoreRTL */); m_font->draw(ri->m_finish_time_string, dest_rect, color, false, false,
NULL, true /* ignoreRTL */);
current_x += m_width_finish_time + m_width_column_space; current_x += m_width_finish_time + m_width_column_space;
} }
@ -666,15 +686,17 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
// ------------------- // -------------------
if(ri->m_new_points > 0) if(ri->m_new_points > 0)
{ {
core::recti dest_rect = core::recti(current_x, y, current_x+100, y+10); core::recti dest_rect = core::recti(current_x, y,
current_x+100, y+10);
core::stringw point_string = core::stringw("+") core::stringw point_string = core::stringw("+")
+ core::stringw((int)ri->m_new_points); + core::stringw((int)ri->m_new_points);
// With mono-space digits space has the same width as each digit, so // With mono-space digits space has the same width as each digit,
// we can simply fill up the string with spaces to get the right // so we can simply fill up the string with spaces to get the
// aligned. // right aligned.
while(point_string.size()<3) while(point_string.size()<3)
point_string = core::stringw(" ")+point_string; point_string = core::stringw(" ")+point_string;
m_font->draw(point_string, dest_rect, color, false, false, NULL, true /* ignoreRTL */); m_font->draw(point_string, dest_rect, color, false, false, NULL,
true /* ignoreRTL */);
} }
current_x += m_width_new_points + m_width_column_space; current_x += m_width_new_points + m_width_column_space;
@ -685,7 +707,8 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
core::stringw((int)(ri->m_current_displayed_points)); core::stringw((int)(ri->m_current_displayed_points));
while(point_inc_string.size()<3) while(point_inc_string.size()<3)
point_inc_string = core::stringw(" ")+point_inc_string; point_inc_string = core::stringw(" ")+point_inc_string;
m_font->draw(point_inc_string, dest_rect, color, false, false, NULL, true /* ignoreRTL */); m_font->draw(point_inc_string, dest_rect, color, false, false, NULL,
true /* ignoreRTL */);
} }
if (race_manager->getMajorMode() != RaceManager::MAJOR_MODE_GRAND_PRIX || if (race_manager->getMajorMode() != RaceManager::MAJOR_MODE_GRAND_PRIX ||
@ -693,12 +716,13 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y,
{ {
if (m_highscore_player != NULL && ri->m_player == m_highscore_player) if (m_highscore_player != NULL && ri->m_player == m_highscore_player)
{ {
core::recti dest_rect = core::recti(current_x, y, current_x+100, y+10); core::recti dest_rect = core::recti(current_x, y,
core::stringw message = (m_highscore_rank == 1 ? _("You topped the highscore list!") : _("New highscore!")); current_x+100, y+10);
GUIEngine::getSmallFont()->draw(message.c_str(), dest_rect, video::SColor(255,255,166,0), core::stringw message = (m_highscore_rank == 1
false, false, NULL, true /* ignoreRTL */); ? _("You topped the highscore list!") : _("New highscore!"));
GUIEngine::getSmallFont()->draw(message.c_str(), dest_rect,
//printf("==== Highscore by %s ====\n", core::stringc(m_highscore_player->getProfile()->getName().c_str()).c_str()); video::SColor(255,255,166,0),
false, false, NULL, true /* ignoreRTL */);
} }
} }
@ -712,39 +736,48 @@ void RaceResultGUI::clearHighscores()
m_highscore_player = NULL; m_highscore_player = NULL;
m_highscore_rank = 0; m_highscore_rank = 0;
m_highscore_time = -1; m_highscore_time = -1;
} } // clearHighscores
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void RaceResultGUI::setHighscore(std::string who, StateManager::ActivePlayer* player, int rank, int time) void RaceResultGUI::setHighscore(std::string who,
StateManager::ActivePlayer* player, int rank,
int time)
{ {
m_highscore_who = who; m_highscore_who = who;
m_highscore_player = player; m_highscore_player = player;
m_highscore_rank = rank; m_highscore_rank = rank;
m_highscore_time = time; m_highscore_time = time;
} } // setHighscore
// ----------------------------------------------------------------------------
void RaceResultGUI::enableGPProgress() void RaceResultGUI::enableGPProgress()
{ {
if (race_manager->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX) if (race_manager->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX)
{ {
const std::vector<std::string>& tracks = race_manager->getGrandPrix()->getTracks(); const std::vector<std::string>& tracks =
race_manager->getGrandPrix()->getTracks();
size_t currentTrack = race_manager->getTrackNumber(); size_t currentTrack = race_manager->getTrackNumber();
for(size_t i=0; i<tracks.size(); i++) for(size_t i=0; i<tracks.size(); i++)
{ {
Track* track = track_manager->getTrack(tracks[i]); Track* track = track_manager->getTrack(tracks[i]);
GUIEngine::IconButtonWidget* m_screenshot_widget = new GUIEngine::IconButtonWidget(GUIEngine::IconButtonWidget::SCALE_MODE_KEEP_CUSTOM_ASPECT_RATIO, GUIEngine::IconButtonWidget* m_screenshot_widget =
false, false, GUIEngine::IconButtonWidget::ICON_PATH_TYPE_ABSOLUTE); new GUIEngine::IconButtonWidget(GUIEngine::IconButtonWidget::
SCALE_MODE_KEEP_CUSTOM_ASPECT_RATIO,
false, false,
GUIEngine::IconButtonWidget::ICON_PATH_TYPE_ABSOLUTE);
m_screenshot_widget->setCustomAspectRatio(4.0f / 3.0f); m_screenshot_widget->setCustomAspectRatio(4.0f / 3.0f);
m_screenshot_widget->m_x = (int)(UserConfigParams::m_width*0.67); m_screenshot_widget->m_x = (int)(UserConfigParams::m_width*0.67);
m_screenshot_widget->m_y = (int)(UserConfigParams::m_height*(0.10+i*0.135)); m_screenshot_widget->m_y =
(int)(UserConfigParams::m_height*(0.10+i*0.135));
m_screenshot_widget->m_w = (int)(UserConfigParams::m_width*0.17); m_screenshot_widget->m_w = (int)(UserConfigParams::m_width*0.17);
m_screenshot_widget->m_h = (int)(UserConfigParams::m_height*0.1275); m_screenshot_widget->m_h =
(int)(UserConfigParams::m_height*0.1275);
m_screenshot_widget->m_properties[GUIEngine::PROP_ICON] = (track != NULL ? m_screenshot_widget->m_properties[GUIEngine::PROP_ICON] =
track->getScreenshotFile().c_str() : (track ? track->getScreenshotFile()
file_manager->getDataDir() + "gui/main_help.png"); : file_manager->getDataDir() + "gui/main_help.png");
m_screenshot_widget->m_properties[GUIEngine::PROP_ID] = tracks[i]; m_screenshot_widget->m_properties[GUIEngine::PROP_ID] = tracks[i];
if(i <= currentTrack) if(i <= currentTrack)
@ -752,10 +785,12 @@ void RaceResultGUI::enableGPProgress()
m_screenshot_widget->add(); m_screenshot_widget->add();
m_widgets.push_back(m_screenshot_widget); m_widgets.push_back(m_screenshot_widget);
} } // for
} } // if MAJOR_MODE_GRAND_PRIX)
}
} // enableGPProgress
// ----------------------------------------------------------------------------
void RaceResultGUI::displayGPProgress() void RaceResultGUI::displayGPProgress()
{ {
video::SColor color = video::SColor(255,255,0,0); video::SColor color = video::SColor(255,255,0,0);
@ -763,15 +798,17 @@ void RaceResultGUI::displayGPProgress()
core::stringw message("Grand Prix progress:"); core::stringw message("Grand Prix progress:");
m_font->draw(message.c_str(), dest_rect, color, false, false, NULL, true); m_font->draw(message.c_str(), dest_rect, color, false, false, NULL, true);
} } // displayGPProgress
// ----------------------------------------------------------------------------
void RaceResultGUI::cleanupGPProgress() void RaceResultGUI::cleanupGPProgress()
{ {
const std::vector<std::string>& tracks = race_manager->getGrandPrix()->getTracks(); const std::vector<std::string>& tracks =
race_manager->getGrandPrix()->getTracks();
for(size_t i=0; i<tracks.size(); i++) for(size_t i=0; i<tracks.size(); i++)
{ {
GUIEngine::Widget *trackWidget = getWidget(tracks[i].c_str()); GUIEngine::Widget *trackWidget = getWidget(tracks[i].c_str());
m_widgets.remove(trackWidget); m_widgets.remove(trackWidget);
delete trackWidget; delete trackWidget;
} }
} } // cleanupGPProgress