From 62075d22e37715e4f106005e06390aa271392ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Sat, 14 Sep 2024 18:28:13 +0200 Subject: [PATCH] Store `CTeeRenderInfo` instead of members for chat lines Avoid code to convert from `CTeeRenderInfo` to chat-internal representation and back to `CTeeRenderInfo`. --- src/game/client/components/chat.cpp | 81 +++-------------------------- src/game/client/components/chat.h | 23 ++------ 2 files changed, 11 insertions(+), 93 deletions(-) diff --git a/src/game/client/components/chat.cpp b/src/game/client/components/chat.cpp index e73b94f73..48e804568 100644 --- a/src/game/client/components/chat.cpp +++ b/src/game/client/components/chat.cpp @@ -805,50 +805,9 @@ void CChat::AddLine(int ClientId, int Team, const char *pLine) { if(!g_Config.m_ClChatOld) { - pCurrentLine->m_CustomColoredSkin = LineAuthor.m_RenderInfo.m_CustomColoredSkin; - if(pCurrentLine->m_CustomColoredSkin) - pCurrentLine->m_RenderSkin = LineAuthor.m_RenderInfo.m_ColorableRenderSkin; - else - pCurrentLine->m_RenderSkin = LineAuthor.m_RenderInfo.m_OriginalRenderSkin; - str_copy(pCurrentLine->m_aSkinName, LineAuthor.m_aSkinName); - pCurrentLine->m_ColorBody = LineAuthor.m_RenderInfo.m_ColorBody; - pCurrentLine->m_ColorFeet = LineAuthor.m_RenderInfo.m_ColorFeet; - - pCurrentLine->m_RenderSkinMetrics = LineAuthor.m_RenderInfo.m_SkinMetrics; + pCurrentLine->m_TeeRenderInfo = LineAuthor.m_RenderInfo; pCurrentLine->m_HasRenderTee = true; - - // 0.7 - if(Client()->IsSixup()) - { - for(int Part = 0; Part < protocol7::NUM_SKINPARTS; Part++) - { - const char *pPartName = LineAuthor.m_aSixup[g_Config.m_ClDummy].m_aaSkinPartNames[Part]; - int Id = m_pClient->m_Skins7.FindSkinPart(Part, pPartName, false); - const CSkins7::CSkinPart *pSkinPart = m_pClient->m_Skins7.GetSkinPart(Part, Id); - if(LineAuthor.m_aSixup[g_Config.m_ClDummy].m_aUseCustomColors[Part]) - { - pCurrentLine->m_Sixup.m_aTextures[Part] = pSkinPart->m_ColorTexture; - pCurrentLine->m_Sixup.m_aColors[Part] = m_pClient->m_Skins7.GetColor( - LineAuthor.m_aSixup[g_Config.m_ClDummy].m_aSkinPartColors[Part], - Part == protocol7::SKINPART_MARKING); - } - else - { - pCurrentLine->m_Sixup.m_aTextures[Part] = pSkinPart->m_OrgTexture; - pCurrentLine->m_Sixup.m_aColors[Part] = vec4(1.0f, 1.0f, 1.0f, 1.0f); - } - - if(LineAuthor.m_SkinInfo.m_aSixup[g_Config.m_ClDummy].m_HatTexture.IsValid()) - { - if(Part == protocol7::SKINPART_BODY && str_comp(pPartName, "standard")) - pCurrentLine->m_Sixup.m_HatSpriteIndex = CSkins7::HAT_OFFSET_SIDE + (ClientId % CSkins7::HAT_NUM); - if(Part == protocol7::SKINPART_DECORATION && str_comp(pPartName, "twinbopp")) - pCurrentLine->m_Sixup.m_HatSpriteIndex = CSkins7::HAT_OFFSET_SIDE + (ClientId % CSkins7::HAT_NUM); - pCurrentLine->m_Sixup.m_HatTexture = LineAuthor.m_SkinInfo.m_aSixup[g_Config.m_ClDummy].m_HatTexture; - } - } - } } } } @@ -918,16 +877,13 @@ void CChat::OnRefreshSkins() if(Line.m_HasRenderTee) { const CSkin *pSkin = m_pClient->m_Skins.Find(Line.m_aSkinName); - if(Line.m_CustomColoredSkin) - Line.m_RenderSkin = pSkin->m_ColorableSkin; - else - Line.m_RenderSkin = pSkin->m_OriginalSkin; - - Line.m_RenderSkinMetrics = pSkin->m_Metrics; + Line.m_TeeRenderInfo.m_OriginalRenderSkin = pSkin->m_OriginalSkin; + Line.m_TeeRenderInfo.m_ColorableRenderSkin = pSkin->m_ColorableSkin; + Line.m_TeeRenderInfo.m_SkinMetrics = pSkin->m_Metrics; } else { - Line.m_RenderSkin.Reset(); + Line.m_TeeRenderInfo.Reset(); } } } @@ -1291,28 +1247,7 @@ void CChat::OnRender() if(!g_Config.m_ClChatOld && Line.m_HasRenderTee) { const int TeeSize = MessageTeeSize(); - CTeeRenderInfo RenderInfo; - RenderInfo.m_CustomColoredSkin = Line.m_CustomColoredSkin; - if(Line.m_CustomColoredSkin) - RenderInfo.m_ColorableRenderSkin = Line.m_RenderSkin; - else - RenderInfo.m_OriginalRenderSkin = Line.m_RenderSkin; - RenderInfo.m_SkinMetrics = Line.m_RenderSkinMetrics; - - RenderInfo.m_ColorBody = Line.m_ColorBody; - RenderInfo.m_ColorFeet = Line.m_ColorFeet; - RenderInfo.m_Size = TeeSize; - - if(Client()->IsSixup()) - { - for(int Part = 0; Part < protocol7::NUM_SKINPARTS; Part++) - { - RenderInfo.m_aSixup[g_Config.m_ClDummy].m_aColors[Part] = Line.m_Sixup.m_aColors[Part]; - RenderInfo.m_aSixup[g_Config.m_ClDummy].m_aTextures[Part] = Line.m_Sixup.m_aTextures[Part]; - RenderInfo.m_aSixup[g_Config.m_ClDummy].m_HatSpriteIndex = Line.m_Sixup.m_HatSpriteIndex; - RenderInfo.m_aSixup[g_Config.m_ClDummy].m_HatTexture = Line.m_Sixup.m_HatTexture; - } - } + Line.m_TeeRenderInfo.m_Size = TeeSize; float RowHeight = FontSize() + RealMsgPaddingY; float OffsetTeeY = TeeSize / 2.0f; @@ -1320,9 +1255,9 @@ void CChat::OnRender() const CAnimState *pIdleState = CAnimState::GetIdle(); vec2 OffsetToMid; - CRenderTools::GetRenderTeeOffsetToRenderedTee(pIdleState, &RenderInfo, OffsetToMid); + CRenderTools::GetRenderTeeOffsetToRenderedTee(pIdleState, &Line.m_TeeRenderInfo, OffsetToMid); vec2 TeeRenderPos(x + (RealMsgPaddingX + TeeSize) / 2.0f, y + OffsetTeeY + FullHeightMinusTee / 2.0f + OffsetToMid.y); - RenderTools()->RenderTee(pIdleState, &RenderInfo, EMOTE_NORMAL, vec2(1, 0.1f), TeeRenderPos, Blend); + RenderTools()->RenderTee(pIdleState, &Line.m_TeeRenderInfo, EMOTE_NORMAL, vec2(1, 0.1f), TeeRenderPos, Blend); } const ColorRGBA TextColor = TextRender()->DefaultTextColor().WithMultipliedAlpha(Blend); diff --git a/src/game/client/components/chat.h b/src/game/client/components/chat.h index 28a8007ee..b585dfdd2 100644 --- a/src/game/client/components/chat.h +++ b/src/game/client/components/chat.h @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -45,30 +46,12 @@ class CChat : public CComponent int m_QuadContainerIndex; char m_aSkinName[std::size(g_Config.m_ClPlayerSkin)]; - CSkin::SSkinTextures m_RenderSkin; - CSkin::SSkinMetrics m_RenderSkinMetrics; - bool m_CustomColoredSkin; - ColorRGBA m_ColorBody; - ColorRGBA m_ColorFeet; - bool m_HasRenderTee; + CTeeRenderInfo m_TeeRenderInfo; + float m_TextYOffset; int m_TimesRepeated; - - class CSixup - { - public: - IGraphics::CTextureHandle m_aTextures[protocol7::NUM_SKINPARTS]; - IGraphics::CTextureHandle m_HatTexture; - IGraphics::CTextureHandle m_BotTexture; - int m_HatSpriteIndex; - ColorRGBA m_BotColor; - ColorRGBA m_aColors[protocol7::NUM_SKINPARTS]; - }; - - // 0.7 Skin - CSixup m_Sixup; }; bool m_PrevScoreBoardShowed;