Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions data/gui/screens/options/options_ui.stkgui
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@
</div>

<spacer width="5" height="2%"/>

<div layout="horizontal-row" width="100%" height="fit">
<checkbox id="speedometer"/>
<spacer width="1%" height="100%" />
<label id="speedometer-text" height="100%" I18N="In the ui settings" text="Enable the speedometer" word_wrap="true"/>
</div>
</box>
</div>
</div>
Expand Down
3 changes: 3 additions & 0 deletions src/config/user_config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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") );
Expand Down
20 changes: 20 additions & 0 deletions src/states_screens/options/options_screen_ui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,20 @@ void OptionsScreenUI::init()
}
}
speedrun_timer->setState( UserConfigParams::m_speedrun_mode );

CheckBoxWidget* speedometer = getWidget<CheckBoxWidget>("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

// -----------------------------------------------------------------------------
Expand Down Expand Up @@ -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<CheckBoxWidget>("speedometer");
assert( speedometer != NULL );
UserConfigParams::m_speedometer = speedometer->getState();
}
#endif
} // eventCallback

Expand Down
32 changes: 23 additions & 9 deletions src/states_screens/race_gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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<s32> meter_pos((int)offset.X,
(int)(offset.Y-meter_height),
(int)(offset.X+meter_width),
Expand Down Expand Up @@ -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
Expand Down
Loading