Small fix of icon size on race result ui and space size on race gui (#4455)

* fix team icon size on race result UI (scale based on text size)

* solve issue of too large space between score and score limit for monospace font
This commit is contained in:
riso 2020-12-26 20:23:43 -06:00 committed by GitHub
parent ad5ffc4900
commit 3a2632dd62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 22 deletions

View File

@ -1295,9 +1295,9 @@ void RaceGUI::drawLap(const AbstractKart* kart,
core::dimension2du d;
if (score_limit != -1)
{
d = font->getDimension(
d = font->getDimension(
(StringUtils::toWString(red_score) + L"-"
+ StringUtils::toWString(blue_score) + L" "
+ StringUtils::toWString(blue_score) + L"00" // space between score and score limit (=width of two 0)
+ StringUtils::toWString(score_limit)).c_str());
pos.UpperLeftCorner.X -= d.Width / 2;
int icon_width = irr_driver->getActualScreenSize().Height/19;
@ -1324,8 +1324,11 @@ void RaceGUI::drawLap(const AbstractKart* kart,
pos += core::position2di(d.Width, 0);
if (score_limit != -1)
{
text = L" ";
text += StringUtils::toWString(score_limit);
text = L"00";
d = font->getDimension(text.c_str());
pos += core::position2di(d.Width, 0);
// skip the space equal to the width of two zeros, then draw the score limit
text = StringUtils::toWString(score_limit);
font->draw(text, pos, video::SColor(255, 255, 255, 255));
}
font->setBlackBorder(false);

View File

@ -575,6 +575,7 @@ void RaceResultGUI::displayCTFResults()
video::SColor color = video::SColor(255, 255, 255, 255);
video::SColor red_color = video::SColor(255, 255, 0, 0);
gui::IGUIFont* font = GUIEngine::getTitleFont();
int team_icon_height = font->getDimension(L"A").Height;
int current_x = UserConfigParams::m_width / 2;
RowInfo *ri = &(m_all_row_infos[0]);
int current_y = (int)ri->m_y_pos;
@ -605,27 +606,29 @@ void RaceResultGUI::displayCTFResults()
irr::video::ITexture* blue_icon = irr_driver->getTexture(FileManager::GUI_ICON,
"blue_flag.png");
int team_icon_width = team_icon_height * (red_icon->getSize().Width / red_icon->getSize().Height);
core::recti source_rect(core::vector2di(0, 0), red_icon->getSize());
current_x -= team_icon_width/2;
core::recti dest_rect(current_x, current_y,
current_x + red_icon->getSize().Width / 2,
current_y + red_icon->getSize().Height / 2);
current_x + team_icon_width,
current_y + team_icon_height);
draw2DImage(red_icon, dest_rect, source_rect,
NULL, NULL, true);
current_x += UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
current_x += UserConfigParams::m_width / 2;
dest_rect = core::recti(current_x, current_y,
current_x + red_icon->getSize().Width / 2,
current_y + red_icon->getSize().Height / 2);
current_x + team_icon_width,
current_y + team_icon_height);
draw2DImage(blue_icon, dest_rect, source_rect,
NULL, NULL, true);
result_text = StringUtils::toWString(blue_score);
rect = font->getDimension(result_text.c_str());
current_x += red_icon->getSize().Width / 4;
current_y += red_icon->getSize().Height / 2 + rect.Height / 4;
current_x += team_icon_width / 2;
current_y += team_icon_height + rect.Height / 4;
pos = core::rect<s32>(current_x, current_y, current_x, current_y);
font->draw(result_text.c_str(), pos, color, true, false);
current_x -= UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
current_x -= UserConfigParams::m_width / 2;
result_text = StringUtils::toWString(red_score);
pos = core::rect<s32>(current_x, current_y, current_x, current_y);
font->draw(result_text.c_str(), pos, color, true, false);
@ -688,7 +691,7 @@ void RaceResultGUI::displayCTFResults()
// The blue team player scores:
current_y = prev_y;
current_x += UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
current_x += UserConfigParams::m_width / 2;
for (unsigned int i = 0; i < num_karts; i++)
{
AbstractKart* kart = ctf->getKartAtPosition(i + 1);
@ -1383,6 +1386,7 @@ void RaceResultGUI::displayCTFResults()
core::stringw result_text;
static video::SColor color = video::SColor(255, 255, 255, 255);
gui::IGUIFont* font = GUIEngine::getTitleFont();
int team_icon_height = font->getDimension(L"A").Height * 1.5f; // the size of team icon
int current_x = UserConfigParams::m_width / 2;
RowInfo *ri = &(m_all_row_infos[0]);
int current_y = (int)ri->m_y_pos;
@ -1419,25 +1423,27 @@ void RaceResultGUI::displayCTFResults()
irr::video::ITexture* blue_icon = irr_driver->getTexture(FileManager::GUI_ICON,
"soccer_ball_blue.png");
int team_icon_width = team_icon_height * (red_icon->getSize().Width / red_icon->getSize().Height);
core::recti source_rect(core::vector2di(0, 0), red_icon->getSize());
core::recti dest_rect(current_x, current_y, current_x + red_icon->getSize().Width / 2,
current_y + red_icon->getSize().Height / 2);
current_x -= team_icon_width/2;
core::recti dest_rect(current_x, current_y, current_x + team_icon_width,
current_y + team_icon_height);
draw2DImage(red_icon, dest_rect, source_rect,
NULL, NULL, true);
current_x += UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
dest_rect = core::recti(current_x, current_y, current_x + red_icon->getSize().Width / 2,
current_y + red_icon->getSize().Height / 2);
current_x += UserConfigParams::m_width / 2;
dest_rect = core::recti(current_x, current_y, current_x + team_icon_width,
current_y + team_icon_height);
draw2DImage(blue_icon, dest_rect, source_rect,
NULL, NULL, true);
result_text = StringUtils::toWString(blue_score);
rect = font->getDimension(result_text.c_str());
current_x += red_icon->getSize().Width / 4;
current_y += red_icon->getSize().Height / 2 + rect.Height / 4;
current_x += team_icon_height / 2;
current_y += team_icon_height + rect.Height / 4;
pos = core::rect<s32>(current_x, current_y, current_x, current_y);
font->draw(result_text.c_str(), pos, color, true, false);
current_x -= UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
current_x -= UserConfigParams::m_width / 2;
result_text = StringUtils::toWString(red_score);
pos = core::rect<s32>(current_x, current_y, current_x, current_y);
font->draw(result_text.c_str(), pos, color, true, false);
@ -1514,7 +1520,7 @@ void RaceResultGUI::displayCTFResults()
//The blue scorers:
current_y = prev_y;
current_x += UserConfigParams::m_width / 2 - red_icon->getSize().Width / 2;
current_x += UserConfigParams::m_width / 2;
scorers = sw->getScorers(KART_TEAM_BLUE);
while (scorers.size() > 10)