diff --git a/data/gui/screens/options/options_ui.stkgui b/data/gui/screens/options/options_ui.stkgui index 8738a47d7f5..fddb9476592 100644 --- a/data/gui/screens/options/options_ui.stkgui +++ b/data/gui/screens/options/options_ui.stkgui @@ -93,6 +93,12 @@ + +
+ + +
diff --git a/src/config/user_config.hpp b/src/config/user_config.hpp index 4495c6785da..445e6d59bb5 100644 --- a/src/config/user_config.hpp +++ b/src/config/user_config.hpp @@ -657,6 +657,9 @@ namespace UserConfigParams PARAM_PREFIX BoolUserConfigParam m_speedrun_mode PARAM_DEFAULT( BoolUserConfigParam(false, "show_speedrun_timer", &m_video_group, "Display the speedrun timer") ); + PARAM_PREFIX BoolUserConfigParam m_speedometer + PARAM_DEFAULT( BoolUserConfigParam(false, "show_speedometer", + &m_video_group, "Display the speedometer") ); PARAM_PREFIX IntUserConfigParam m_max_fps PARAM_DEFAULT( IntUserConfigParam(120, "max_fps", &m_video_group, "Maximum fps, should be at least 60") ); diff --git a/src/states_screens/options/options_screen_ui.cpp b/src/states_screens/options/options_screen_ui.cpp index 93397cb8e14..bf866c857c8 100644 --- a/src/states_screens/options/options_screen_ui.cpp +++ b/src/states_screens/options/options_screen_ui.cpp @@ -269,6 +269,20 @@ void OptionsScreenUI::init() } } speedrun_timer->setState( UserConfigParams::m_speedrun_mode ); + + CheckBoxWidget* speedometer = getWidget("speedometer"); + assert( speedometer != NULL ); + + speedometer->setState( UserConfigParams::m_speedometer); + if (multitouch_enabled) + { + UserConfigParams::m_speedometer == 0; + } + else + { + UserConfigParams::m_speedometer == 1; + } + speedometer->setState( UserConfigParams::m_speedometer ); } // init // ----------------------------------------------------------------------------- @@ -499,6 +513,12 @@ void OptionsScreenUI::eventCallback(Widget* widget, const std::string& name, con } UserConfigParams::m_speedrun_mode = speedrun_timer->getState(); } + else if (name == "speedometer") + { + CheckBoxWidget* speedometer = getWidget("speedometer"); + assert( speedometer != NULL ); + UserConfigParams::m_speedometer = speedometer->getState(); + } #endif } // eventCallback diff --git a/src/states_screens/race_gui.cpp b/src/states_screens/race_gui.cpp index bf437a12ff6..fe0e6e503fc 100644 --- a/src/states_screens/race_gui.cpp +++ b/src/states_screens/race_gui.cpp @@ -92,7 +92,7 @@ RaceGUI::RaceGUI() m_is_tutorial = (RaceManager::get()->getTrackName() == "tutorial"); - // Load speedmeter texture before rendering the first frame + // Load speedometer texture before rendering the first frame m_speed_meter_icon = irr_driver->getTexture(FileManager::GUI_ICON, "speedback.png"); m_speed_bar_icon = irr_driver->getTexture(FileManager::GUI_ICON, "speedfore.png"); //createMarkerTexture(); @@ -401,6 +401,10 @@ void RaceGUI::renderPlayerView(const Camera *camera, float dt) drawPowerupIcons(kart, viewport, scaling); drawSpeedEnergyRank(kart, viewport, scaling, dt); } + else + { + drawSpeedEnergyRank(kart, viewport, scaling, dt); + } } if (!m_is_tutorial) @@ -1014,21 +1018,32 @@ void RaceGUI::drawSpeedEnergyRank(const AbstractKart* kart, float dt) { #ifndef SERVER_ONLY + if (UserConfigParams::m_speedometer == 0) return; //speedometer hidden + float min_ratio = std::min(scaling.X, scaling.Y); const int SPEEDWIDTH = 128; int meter_width = (int)(SPEEDWIDTH*min_ratio); int meter_height = (int)(SPEEDWIDTH*min_ratio); - - drawEnergyMeter(viewport.LowerRightCorner.X , - (int)(viewport.LowerRightCorner.Y), - kart, viewport, scaling); + if (m_multitouch_gui == NULL || m_multitouch_gui->isSpectatorMode()) + { + drawEnergyMeter(viewport.LowerRightCorner.X , + (int)(viewport.LowerRightCorner.Y), + kart, viewport, scaling); + } // First draw the meter (i.e. the background ) // ------------------------------------------------------------------------- core::vector2df offset; - offset.X = (float)(viewport.LowerRightCorner.X-meter_width) - 24.0f*scaling.X; - offset.Y = viewport.LowerRightCorner.Y-10.0f*scaling.Y; - + if (m_multitouch_gui == NULL || m_multitouch_gui->isSpectatorMode()) + { + offset.X = (float)(viewport.LowerRightCorner.X-meter_width) - 24.0f*scaling.X; + offset.Y = viewport.LowerRightCorner.Y-10.0f*scaling.Y; + } + else + { + offset.X = (float)(viewport.LowerRightCorner.X-meter_width) - 220.0f*scaling.X; + offset.Y = viewport.LowerRightCorner.Y-60.0f*scaling.Y; + } const core::rect meter_pos((int)offset.X, (int)(offset.Y-meter_height), (int)(offset.X+meter_width), @@ -1125,7 +1140,6 @@ void RaceGUI::drawSpeedEnergyRank(const AbstractKart* kart, unsigned int count = computeVerticesForMeter(position, threshold, vertices, vertices_count, speed_ratio, meter_width, meter_height, offset); - drawMeterTexture(m_speed_bar_icon, vertices, count); #endif } // drawSpeedEnergyRank