mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
Display whisper icon when typing and a few tweaks
This commit is contained in:
parent
05c2af908a
commit
83a8c77d36
|
@ -536,22 +536,12 @@ void CChat::OnRender()
|
||||||
Graphics()->MapScreen(0.0f, 0.0f, Width, 300.0f);
|
Graphics()->MapScreen(0.0f, 0.0f, Width, 300.0f);
|
||||||
float x = 12.0f;
|
float x = 12.0f;
|
||||||
float y = 300.0f-20.0f;
|
float y = 300.0f-20.0f;
|
||||||
const CGameClient::CClientData& LocalClient = m_pClient->m_aClients[m_pClient->m_LocalClientID];
|
const int LocalCID = m_pClient->m_LocalClientID;
|
||||||
int LocalTteam = LocalClient.m_Team;
|
const CGameClient::CClientData& LocalClient = m_pClient->m_aClients[LocalCID];
|
||||||
|
const int LocalTteam = LocalClient.m_Team;
|
||||||
|
|
||||||
if(m_Mode != CHAT_NONE)
|
if(m_Mode != CHAT_NONE)
|
||||||
{
|
{
|
||||||
// draw chat icon
|
|
||||||
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_EMOTICONS].m_Id);
|
|
||||||
|
|
||||||
Graphics()->QuadsBegin();
|
|
||||||
|
|
||||||
RenderTools()->SelectSprite(SPRITE_DOTDOT);
|
|
||||||
IGraphics::CQuadItem Quad(1.0f, y, 10.f, 10.f);
|
|
||||||
Graphics()->QuadsDrawTL(&Quad, 1);
|
|
||||||
|
|
||||||
Graphics()->QuadsEnd();
|
|
||||||
|
|
||||||
// calculate category text size
|
// calculate category text size
|
||||||
// TODO: rework TextRender. Writing the same code twice to calculate a simple thing as width is ridiculus
|
// TODO: rework TextRender. Writing the same code twice to calculate a simple thing as width is ridiculus
|
||||||
float CategoryWidth;
|
float CategoryWidth;
|
||||||
|
@ -574,14 +564,14 @@ void CChat::OnRender()
|
||||||
str_copy(aCatText, Localize("Team"), sizeof(aCatText));
|
str_copy(aCatText, Localize("Team"), sizeof(aCatText));
|
||||||
}
|
}
|
||||||
else if(m_Mode == CHAT_WHISPER)
|
else if(m_Mode == CHAT_WHISPER)
|
||||||
str_format(aCatText, sizeof(aCatText), "%s %2d: %s", Localize("Whisper"),
|
str_format(aCatText, sizeof(aCatText), "%2d: %s",
|
||||||
m_WhisperTarget, m_pClient->m_aClients[m_WhisperTarget].m_aName);
|
m_WhisperTarget, m_pClient->m_aClients[m_WhisperTarget].m_aName);
|
||||||
else
|
else
|
||||||
str_copy(aCatText, Localize("Chat"), sizeof(aCatText));
|
str_copy(aCatText, Localize("Chat"), sizeof(aCatText));
|
||||||
|
|
||||||
TextRender()->TextEx(&Cursor, aCatText, -1);
|
TextRender()->TextEx(&Cursor, aCatText, -1);
|
||||||
|
|
||||||
CategoryWidth = Cursor.m_X;
|
CategoryWidth = Cursor.m_X - Cursor.m_StartX;
|
||||||
CategoryHeight = Cursor.m_FontSize;
|
CategoryHeight = Cursor.m_FontSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -596,16 +586,42 @@ void CChat::OnRender()
|
||||||
else if(m_Mode == CHAT_WHISPER)
|
else if(m_Mode == CHAT_WHISPER)
|
||||||
CatRectColor = CRCWhisper;
|
CatRectColor = CRCWhisper;
|
||||||
|
|
||||||
|
const float IconOffsetX = m_Mode == CHAT_WHISPER ? 4.0f : 0.0f;
|
||||||
|
|
||||||
CUIRect CatRect;
|
CUIRect CatRect;
|
||||||
CatRect.x = 0;
|
CatRect.x = 0;
|
||||||
CatRect.y = y;
|
CatRect.y = y;
|
||||||
CatRect.w = CategoryWidth + 2.0f;
|
CatRect.w = CategoryWidth + x + 2.0f + IconOffsetX;
|
||||||
CatRect.h = CategoryHeight + 4.0f;
|
CatRect.h = CategoryHeight + 4.0f;
|
||||||
RenderTools()->DrawUIRect(&CatRect, CatRectColor, CUI::CORNER_R, 2.0f);
|
RenderTools()->DrawUIRect(&CatRect, CatRectColor, CUI::CORNER_R, 2.0f);
|
||||||
|
|
||||||
|
// draw chat icon
|
||||||
|
Graphics()->WrapClamp();
|
||||||
|
IGraphics::CQuadItem QuadIcon;
|
||||||
|
|
||||||
|
if(m_Mode == CHAT_WHISPER)
|
||||||
|
{
|
||||||
|
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_CHATWHISPER].m_Id);
|
||||||
|
Graphics()->QuadsBegin();
|
||||||
|
Graphics()->QuadsSetSubset(1, 0, 0, 1);
|
||||||
|
QuadIcon = IGraphics::CQuadItem(1.5f, y + 2.0f, 16.f, 8.0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Graphics()->TextureSet(g_pData->m_aImages[IMAGE_EMOTICONS].m_Id);
|
||||||
|
Graphics()->QuadsBegin();
|
||||||
|
RenderTools()->SelectSprite(SPRITE_DOTDOT);
|
||||||
|
QuadIcon = IGraphics::CQuadItem(1.0f, y, 10.f, 10.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics()->SetColor(1, 1, 1, 1);
|
||||||
|
Graphics()->QuadsDrawTL(&QuadIcon, 1);
|
||||||
|
Graphics()->QuadsEnd();
|
||||||
|
Graphics()->WrapNormal();
|
||||||
|
|
||||||
// render chat input
|
// render chat input
|
||||||
CTextCursor Cursor;
|
CTextCursor Cursor;
|
||||||
TextRender()->SetCursor(&Cursor, x, y, CategoryFontSize, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, x + IconOffsetX, y, CategoryFontSize, TEXTFLAG_RENDER);
|
||||||
Cursor.m_LineWidth = Width-190.0f;
|
Cursor.m_LineWidth = Width-190.0f;
|
||||||
Cursor.m_MaxLines = 2;
|
Cursor.m_MaxLines = 2;
|
||||||
|
|
||||||
|
@ -656,6 +672,7 @@ void CChat::OnRender()
|
||||||
m_Show |= m_Mode != CHAT_NONE;
|
m_Show |= m_Mode != CHAT_NONE;
|
||||||
|
|
||||||
int64 Now = time_get();
|
int64 Now = time_get();
|
||||||
|
const int64 TimeFreq = time_freq();
|
||||||
float LineWidth = m_pClient->m_pScoreboard->Active() ? 90.0f : 200.0f;
|
float LineWidth = m_pClient->m_pScoreboard->Active() ? 90.0f : 200.0f;
|
||||||
float HeightLimit = m_pClient->m_pScoreboard->Active() ? 230.0f : m_Show ? 90.0f : 200.0f;
|
float HeightLimit = m_pClient->m_pScoreboard->Active() ? 230.0f : m_Show ? 90.0f : 200.0f;
|
||||||
float Begin = x;
|
float Begin = x;
|
||||||
|
@ -692,7 +709,7 @@ void CChat::OnRender()
|
||||||
|
|
||||||
TextRender()->TextEx(&Cursor, aBuf, -1);
|
TextRender()->TextEx(&Cursor, aBuf, -1);
|
||||||
Line.m_Size[OffsetType].y = Cursor.m_Y + Cursor.m_FontSize;
|
Line.m_Size[OffsetType].y = Cursor.m_Y + Cursor.m_FontSize;
|
||||||
Line.m_Size[OffsetType].x = Cursor.m_Y == 0.0f ? Cursor.m_X : LineWidth;
|
Line.m_Size[OffsetType].x = Cursor.m_Y == 0.0f ? Cursor.m_X - Cursor.m_StartX : LineWidth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -701,7 +718,7 @@ void CChat::OnRender()
|
||||||
CUIRect Rect;
|
CUIRect Rect;
|
||||||
Rect.x = 0;
|
Rect.x = 0;
|
||||||
Rect.y = HeightLimit - 2.0f;
|
Rect.y = HeightLimit - 2.0f;
|
||||||
Rect.w = LineWidth + 7.0f + x;
|
Rect.w = LineWidth + x;
|
||||||
Rect.h = 300 - HeightLimit - 22.f;
|
Rect.h = 300 - HeightLimit - 22.f;
|
||||||
|
|
||||||
const float LeftAlpha = 0.85f;
|
const float LeftAlpha = 0.85f;
|
||||||
|
@ -721,7 +738,7 @@ void CChat::OnRender()
|
||||||
|
|
||||||
if(m_aLines[r].m_aText[0] == 0) break;
|
if(m_aLines[r].m_aText[0] == 0) break;
|
||||||
|
|
||||||
if(Now > Line.m_Time+16*time_freq() && !m_Show)
|
if(Now > Line.m_Time+16*TimeFreq && !m_Show)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
y -= Line.m_Size[OffsetType].y;
|
y -= Line.m_Size[OffsetType].y;
|
||||||
|
@ -730,17 +747,13 @@ void CChat::OnRender()
|
||||||
if(y < HeightLimit)
|
if(y < HeightLimit)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
float Blend = Now > Line.m_Time+14*time_freq() && !m_Show ? 1.0f-(Now-Line.m_Time-14*time_freq())/(2.0f*time_freq()) : 1.0f;
|
float Blend = Now > Line.m_Time+14*TimeFreq && !m_Show ? 1.0f-(Now-Line.m_Time-14*TimeFreq)/(2.0f*TimeFreq) : 1.0f;
|
||||||
|
|
||||||
const float HlTimeFull = 1.0f;
|
const float HlTimeFull = 1.0f;
|
||||||
const float HlTimeFade = 1.0f;
|
const float HlTimeFade = 1.0f;
|
||||||
|
|
||||||
float HighlightBlend = 0.0f;
|
float Delta = (Now - Line.m_Time) / (float)TimeFreq;
|
||||||
if(!m_Show)
|
const float HighlightBlend = 1.0f - clamp(Delta - HlTimeFull, 0.0f, HlTimeFade) / HlTimeFade;
|
||||||
{
|
|
||||||
float Delta = (Now - Line.m_Time) / (float)time_freq();
|
|
||||||
HighlightBlend = 1.0f - clamp(Delta - HlTimeFull, 0.0f, HlTimeFade) / HlTimeFade;
|
|
||||||
}
|
|
||||||
|
|
||||||
// reset the cursor
|
// reset the cursor
|
||||||
TextRender()->SetCursor(&Cursor, Begin, y, FontSize, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, Begin, y, FontSize, TEXTFLAG_RENDER);
|
||||||
|
@ -770,7 +783,7 @@ void CChat::OnRender()
|
||||||
|
|
||||||
vec4 TextColor = ColorAllText;
|
vec4 TextColor = ColorAllText;
|
||||||
|
|
||||||
if(Line.m_Highlighted)
|
if(Line.m_Highlighted && ColorHighlightBg.a > 0.001f)
|
||||||
{
|
{
|
||||||
CUIRect BgRect;
|
CUIRect BgRect;
|
||||||
BgRect.x = Cursor.m_X;
|
BgRect.x = Cursor.m_X;
|
||||||
|
|
Loading…
Reference in a new issue