mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-09 09:38:19 +00:00
Avoid duplicate calculations of nameplate text width
Get name/clan bounding box size from the text container index instead of calculating it twice.
This commit is contained in:
parent
b30dde56b6
commit
0222e4ae96
|
@ -96,15 +96,11 @@ void CNamePlates::RenderNameplate(vec2 Position, const CNetObj_PlayerInfo *pPlay
|
||||||
|
|
||||||
CTextCursor Cursor;
|
CTextCursor Cursor;
|
||||||
TextRender()->SetCursor(&Cursor, 0, 0, FontSize, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, 0, 0, FontSize, TEXTFLAG_RENDER);
|
||||||
Cursor.m_LineWidth = -1;
|
|
||||||
|
|
||||||
// create nameplates at standard zoom
|
// create nameplates at standard zoom
|
||||||
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
RenderTools()->MapScreenToInterface(m_pClient->m_Camera.m_Center.x, m_pClient->m_Camera.m_Center.y);
|
RenderTools()->MapScreenToInterface(m_pClient->m_Camera.m_Center.x, m_pClient->m_Camera.m_Center.y);
|
||||||
|
|
||||||
NamePlate.m_NameTextWidth = TextRender()->TextWidth(FontSize, ClientData.m_aName, -1, -1.0f);
|
|
||||||
|
|
||||||
TextRender()->RecreateTextContainer(NamePlate.m_NameTextContainerIndex, &Cursor, ClientData.m_aName);
|
TextRender()->RecreateTextContainer(NamePlate.m_NameTextContainerIndex, &Cursor, ClientData.m_aName);
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
|
@ -118,21 +114,16 @@ void CNamePlates::RenderNameplate(vec2 Position, const CNetObj_PlayerInfo *pPlay
|
||||||
|
|
||||||
CTextCursor Cursor;
|
CTextCursor Cursor;
|
||||||
TextRender()->SetCursor(&Cursor, 0, 0, FontSizeClan, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, 0, 0, FontSizeClan, TEXTFLAG_RENDER);
|
||||||
Cursor.m_LineWidth = -1;
|
|
||||||
|
|
||||||
// create nameplates at standard zoom
|
// create nameplates at standard zoom
|
||||||
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
RenderTools()->MapScreenToInterface(m_pClient->m_Camera.m_Center.x, m_pClient->m_Camera.m_Center.y);
|
RenderTools()->MapScreenToInterface(m_pClient->m_Camera.m_Center.x, m_pClient->m_Camera.m_Center.y);
|
||||||
|
|
||||||
NamePlate.m_ClanNameTextWidth = TextRender()->TextWidth(FontSizeClan, ClientData.m_aClan, -1, -1.0f);
|
|
||||||
|
|
||||||
TextRender()->RecreateTextContainer(NamePlate.m_ClanNameTextContainerIndex, &Cursor, ClientData.m_aClan);
|
TextRender()->RecreateTextContainer(NamePlate.m_ClanNameTextContainerIndex, &Cursor, ClientData.m_aClan);
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float tw = NamePlate.m_NameTextWidth;
|
|
||||||
if(g_Config.m_ClNameplatesTeamcolors)
|
if(g_Config.m_ClNameplatesTeamcolors)
|
||||||
{
|
{
|
||||||
const int Team = m_pClient->m_Teams.Team(pPlayerInfo->m_ClientId);
|
const int Team = m_pClient->m_Teams.Team(pPlayerInfo->m_ClientId);
|
||||||
|
@ -169,14 +160,14 @@ void CNamePlates::RenderNameplate(vec2 Position, const CNetObj_PlayerInfo *pPlay
|
||||||
if(NamePlate.m_NameTextContainerIndex.Valid())
|
if(NamePlate.m_NameTextContainerIndex.Valid())
|
||||||
{
|
{
|
||||||
YOffset -= FontSize;
|
YOffset -= FontSize;
|
||||||
TextRender()->RenderTextContainer(NamePlate.m_NameTextContainerIndex, TColor, TOutlineColor, Position.x - tw / 2.0f, YOffset);
|
TextRender()->RenderTextContainer(NamePlate.m_NameTextContainerIndex, TColor, TOutlineColor, Position.x - TextRender()->GetBoundingBoxTextContainer(NamePlate.m_NameTextContainerIndex).m_W / 2.0f, YOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g_Config.m_ClNameplatesClan)
|
if(g_Config.m_ClNameplatesClan)
|
||||||
{
|
{
|
||||||
YOffset -= FontSizeClan;
|
YOffset -= FontSizeClan;
|
||||||
if(NamePlate.m_ClanNameTextContainerIndex.Valid())
|
if(NamePlate.m_ClanNameTextContainerIndex.Valid())
|
||||||
TextRender()->RenderTextContainer(NamePlate.m_ClanNameTextContainerIndex, TColor, TOutlineColor, Position.x - NamePlate.m_ClanNameTextWidth / 2.0f, YOffset);
|
TextRender()->RenderTextContainer(NamePlate.m_ClanNameTextContainerIndex, TColor, TOutlineColor, Position.x - TextRender()->GetBoundingBoxTextContainer(NamePlate.m_ClanNameTextContainerIndex).m_W / 2.0f, YOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g_Config.m_ClNameplatesFriendMark && ClientData.m_Friend)
|
if(g_Config.m_ClNameplatesFriendMark && ClientData.m_Friend)
|
||||||
|
|
|
@ -23,19 +23,16 @@ struct SPlayerNamePlate
|
||||||
{
|
{
|
||||||
m_NameTextContainerIndex.Reset();
|
m_NameTextContainerIndex.Reset();
|
||||||
m_ClanNameTextContainerIndex.Reset();
|
m_ClanNameTextContainerIndex.Reset();
|
||||||
m_aName[0] = 0;
|
m_aName[0] = '\0';
|
||||||
m_aClanName[0] = 0;
|
m_aClanName[0] = '\0';
|
||||||
m_NameTextWidth = m_ClanNameTextWidth = 0.f;
|
|
||||||
m_NameTextFontSize = m_ClanNameTextFontSize = 0;
|
m_NameTextFontSize = m_ClanNameTextFontSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char m_aName[MAX_NAME_LENGTH];
|
char m_aName[MAX_NAME_LENGTH];
|
||||||
float m_NameTextWidth;
|
|
||||||
STextContainerIndex m_NameTextContainerIndex;
|
STextContainerIndex m_NameTextContainerIndex;
|
||||||
float m_NameTextFontSize;
|
float m_NameTextFontSize;
|
||||||
|
|
||||||
char m_aClanName[MAX_CLAN_LENGTH];
|
char m_aClanName[MAX_CLAN_LENGTH];
|
||||||
float m_ClanNameTextWidth;
|
|
||||||
STextContainerIndex m_ClanNameTextContainerIndex;
|
STextContainerIndex m_ClanNameTextContainerIndex;
|
||||||
float m_ClanNameTextFontSize;
|
float m_ClanNameTextFontSize;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue