@@ -2788,7 +2788,7 @@ void CMenus::RenderSettingsVisual(CUIRect MainView)
27882788 CUIRect Label, Button;
27892789
27902790 // left side in settings menu
2791- CUIRect Miscellaneous, Cosmetics, ServerRainbow, TileOutlines, DiscordRpc, ChatBubbles, PlayerIndicator, BgDraw, SweatMode;
2791+ CUIRect Miscellaneous, Cosmetics, Trails, ServerRainbow, TileOutlines, DiscordRpc, ChatBubbles, PlayerIndicator, BgDraw, SweatMode;
27922792 MainView.VSplitMid (&Cosmetics, &Miscellaneous);
27932793
27942794 /* Cosmetics */
@@ -2797,7 +2797,7 @@ void CMenus::RenderSettingsVisual(CUIRect MainView)
27972797 static float Offset = 0 .0f ;
27982798
27992799 Cosmetics.VMargin (5 .0f , &Cosmetics);
2800- Cosmetics.HSplitTop (235 .0f + Offset, &Cosmetics, &ServerRainbow );
2800+ Cosmetics.HSplitTop (235 .0f + Offset, &Cosmetics, &Trails );
28012801 if (s_ScrollRegion.AddRect (Cosmetics))
28022802 {
28032803 Offset = 0 .0f ;
@@ -2906,6 +2906,58 @@ void CMenus::RenderSettingsVisual(CUIRect MainView)
29062906 }
29072907 }
29082908
2909+ /* Trails */
2910+ {
2911+ static float Offset = 0 .0f ;
2912+ Trails.HSplitTop (Margin, nullptr , &Trails);
2913+ Trails.HSplitTop (205 .0f + Offset, &Trails, &ServerRainbow);
2914+ if (s_ScrollRegion.AddRect (Trails))
2915+ {
2916+ Offset = 0 .0f ;
2917+ Trails.Draw (BackgroundColor, IGraphics::CORNER_ALL, CornerRoundness);
2918+ Trails.VMargin (Margin, &Trails);
2919+
2920+ Trails.HSplitTop (HeaderHeight, &Button, &Trails);
2921+ Ui ()->DoLabel (&Button, Localize (" Tee Trails" ), HeaderSize, HeaderAlignment);
2922+
2923+ DoButton_CheckBoxAutoVMarginAndSet (&g_Config.m_EcTeeTrail , Localize (" Enable tee trails" ), &g_Config.m_EcTeeTrail , &Trails, LineSize);
2924+ DoButton_CheckBoxAutoVMarginAndSet (&g_Config.m_EcTeeTrailOthers , Localize (" Show other tees' trails" ), &g_Config.m_EcTeeTrailOthers , &Trails, LineSize);
2925+ DoButton_CheckBoxAutoVMarginAndSet (&g_Config.m_EcTeeTrailFade , Localize (" Fade trail alpha" ), &g_Config.m_EcTeeTrailFade , &Trails, LineSize);
2926+ DoButton_CheckBoxAutoVMarginAndSet (&g_Config.m_EcTeeTrailTaper , Localize (" Taper trail width" ), &g_Config.m_EcTeeTrailTaper , &Trails, LineSize);
2927+
2928+ Trails.HSplitTop (MarginExtraSmall, nullptr , &Trails);
2929+ std::vector<const char *> vTrailDropDownNames;
2930+ vTrailDropDownNames = {Localize (" Solid" ), Localize (" Tee" ), Localize (" Rainbow" ), Localize (" Speed" )};
2931+ static CUi::SDropDownState s_TrailDropDownState;
2932+ static CScrollRegion s_TrailDropDownScrollRegion;
2933+ s_TrailDropDownState.m_SelectionPopupContext .m_pScrollRegion = &s_TrailDropDownScrollRegion;
2934+ int TrailSelectedOld = g_Config.m_EcTeeTrailColorMode - 1 ;
2935+ CUIRect TrailDropDownRect;
2936+ Trails.HSplitTop (LineSize, &TrailDropDownRect, &Trails);
2937+ const int TrailSelectedNew = Ui ()->DoDropDown (&TrailDropDownRect, TrailSelectedOld, vTrailDropDownNames.data (), vTrailDropDownNames.size (), s_TrailDropDownState);
2938+ if (TrailSelectedOld != TrailSelectedNew)
2939+ {
2940+ g_Config.m_EcTeeTrailColorMode = TrailSelectedNew + 1 ;
2941+ }
2942+ Trails.HSplitTop (MarginSmall, nullptr , &Trails);
2943+
2944+ static CButtonContainer s_TeeTrailColor;
2945+ if (g_Config.m_EcTeeTrailColorMode == CTrails::COLORMODE_SOLID)
2946+ {
2947+ DoLine_ColorPicker (&s_TeeTrailColor, ColorPickerLineSize, ColorPickerLabelSize, ColorPickerLineSpacing, &Trails, Localize (" Tee trail color" ), &g_Config.m_EcTeeTrailColor , ColorRGBA (1 .0f , 1 .0f , 1 .0f ), false );
2948+ Offset = ColorPickerLineSize + ColorPickerLineSpacing;
2949+ }
2950+
2951+ Trails.HSplitTop (LineSize, &Button, &Trails);
2952+ Ui ()->DoScrollbarOption (&g_Config.m_EcTeeTrailWidth , &g_Config.m_EcTeeTrailWidth , &Button, Localize (" Trail width" ), 0 , 20 );
2953+ Trails.HSplitTop (LineSize, &Button, &Trails);
2954+ Ui ()->DoScrollbarOption (&g_Config.m_EcTeeTrailLength , &g_Config.m_EcTeeTrailLength , &Button, Localize (" Trail length" ), 0 , 200 );
2955+ Trails.HSplitTop (LineSize, &Button, &Trails);
2956+ Ui ()->DoScrollbarOption (&g_Config.m_EcTeeTrailAlpha , &g_Config.m_EcTeeTrailAlpha , &Button, Localize (" Trail alpha" ), 0 , 100 );
2957+
2958+ }
2959+ }
2960+
29092961 /* Server-Side Rainbow */
29102962 {
29112963 ServerRainbow.HSplitTop (Margin, nullptr , &ServerRainbow);
0 commit comments