From 4923f8cdbe7035fff6a657eb3ad0f91bf10e4ccc Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 22 六月 2026 16:32:24 +0800
Subject: [PATCH] 628 节假日活动 入口统一用渐变字,活动表添加统一配置渐变项

---
 Main/Config/Configs/ActSpecialSaleConfig.cs                |    8 +++
 Main/System/FestivalActivity/FestivalActivityPopWin.cs     |    4 ++
 Main/System/FestivalActivity/FestivalActivityWin.cs        |    4 ++
 Main/System/FestivalActivity/FestivalActivityCheckInWin.cs |    3 +
 Main/System/FestivalActivity/FestivalActivityShopWin.cs    |    3 +
 Main/System/Main/HomeWin.cs                                |    4 ++
 Main/System/FestivalActivity/FestivalActivityGiftWin.cs    |    3 +
 Main/System/FestivalActivity/FestivalActivityManager.cs    |   36 ++++++++++++++++++
 8 files changed, 64 insertions(+), 1 deletions(-)

diff --git a/Main/Config/Configs/ActSpecialSaleConfig.cs b/Main/Config/Configs/ActSpecialSaleConfig.cs
index 8ab72d1..bcf47b6 100644
--- a/Main/Config/Configs/ActSpecialSaleConfig.cs
+++ b/Main/Config/Configs/ActSpecialSaleConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           Monday, May 11, 2026
+//    [  Date ]:           2026骞�6鏈�22鏃�
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -23,6 +23,8 @@
 	public int[][] PopItems;
 	public float[] OriginalPrices;
 	public float[] PercentageTexts;
+	public string[] GradientColor;
+	public string OutlineColor;
 
     public override int LoadKey(string _key)
     {
@@ -83,6 +85,10 @@
 					 float.TryParse(PercentageTextsStringArray[i],out PercentageTexts[i]);
 				}
 			}
+
+			GradientColor = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+
+			OutlineColor = tables[8];
         }
         catch (Exception exception)
         {
diff --git a/Main/System/FestivalActivity/FestivalActivityCheckInWin.cs b/Main/System/FestivalActivity/FestivalActivityCheckInWin.cs
index 5880a8d..5b8be72 100644
--- a/Main/System/FestivalActivity/FestivalActivityCheckInWin.cs
+++ b/Main/System/FestivalActivity/FestivalActivityCheckInWin.cs
@@ -5,6 +5,8 @@
     [SerializeField] ButtonEx closeButton;
     [SerializeField] TextEx timeText;
     [SerializeField] FestivalActivityCheckInCell[] cells;
+    [SerializeField] GradientText titleText;
+    [SerializeField] OutlineEx titleOutline;
     FestivalActivityCheckInManager manager => FestivalActivityCheckInManager.Instance;
     protected override void InitComponent()
     {
@@ -15,6 +17,7 @@
         GeneralActInfoManager.Instance.OnUpdateActSignInfosEvent += OnUpdateActSignInfosEvent;
         TimeMgr.Instance.OnDayEvent += OnDayEvent;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+        FestivalActivityManager.Instance.ApplyTitleStyle(titleText, titleOutline);
         Display();
     }
     protected override void OnPreClose()
diff --git a/Main/System/FestivalActivity/FestivalActivityGiftWin.cs b/Main/System/FestivalActivity/FestivalActivityGiftWin.cs
index 24be001..2f48fd7 100644
--- a/Main/System/FestivalActivity/FestivalActivityGiftWin.cs
+++ b/Main/System/FestivalActivity/FestivalActivityGiftWin.cs
@@ -8,6 +8,8 @@
     [SerializeField] ScrollerController scroller;
     [SerializeField] TextEx timeText;
     FestivalActivityManager manager => FestivalActivityManager.Instance;
+    [SerializeField] GradientText titleText;
+    [SerializeField] OutlineEx titleOutline;
     StoreModel storeModel => StoreModel.Instance;
     protected override void InitComponent()
     {
@@ -17,6 +19,7 @@
     protected override void OnPreOpen()
     {
         scroller.OnRefreshCell += OnRefreshCell;
+        manager.ApplyTitleStyle(titleText, titleOutline);
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
         storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
diff --git a/Main/System/FestivalActivity/FestivalActivityManager.cs b/Main/System/FestivalActivity/FestivalActivityManager.cs
index 48ac297..eab0b79 100644
--- a/Main/System/FestivalActivity/FestivalActivityManager.cs
+++ b/Main/System/FestivalActivity/FestivalActivityManager.cs
@@ -227,6 +227,42 @@
         };
     }
 
+    /// <summary>
+    /// 灏嗗綋鏈� FestivalActivity 瀵瑰簲鐨� ActSpecialSaleConfig 娓愬彉棰滆壊/鎻忚竟棰滆壊濂楃敤鍒版爣棰樼粍浠躲��
+    /// 閰嶇疆涓虹┖鏃朵繚鎸侀鍒朵綋榛樿棰滆壊銆�
+    /// </summary>
+    public void ApplyTitleStyle(GradientText titleText, OutlineEx titleOutline)
+    {
+        var act = GetActInfo();
+        if (act == null) return;
+        var config = ActSpecialSaleConfig.Get(act.CfgID);
+        if (config == null) return;
+
+        if (titleText != null && config.GradientColor != null && config.GradientColor.Length >= 2
+            && TryParseHexColor(config.GradientColor[0], out var top)
+            && TryParseHexColor(config.GradientColor[1], out var bottom))
+        {
+            titleText.SetVerticalGradient(top, bottom);
+        }
+
+        if (titleOutline != null && !string.IsNullOrWhiteSpace(config.OutlineColor)
+            && TryParseHexColor(config.OutlineColor, out var outlineCol))
+        {
+            titleOutline.OutlineColor = outlineCol;
+        }
+    }
+
+    private static bool TryParseHexColor(string hex, out Color color)
+    {
+        if (string.IsNullOrWhiteSpace(hex))
+        {
+            color = Color.white;
+            return false;
+        }
+        if (hex[0] != '#') hex = "#" + hex;
+        return UnityEngine.ColorUtility.TryParseHtmlString(hex, out color);
+    }
+
     public bool IsFestivalActivityOpen()
     {
         if (!IsOpen) return false;
diff --git a/Main/System/FestivalActivity/FestivalActivityPopWin.cs b/Main/System/FestivalActivity/FestivalActivityPopWin.cs
index e72d533..bb9016c 100644
--- a/Main/System/FestivalActivity/FestivalActivityPopWin.cs
+++ b/Main/System/FestivalActivity/FestivalActivityPopWin.cs
@@ -9,6 +9,9 @@
     [SerializeField] Toggle todayPopToggle;
     [SerializeField] ScrollerController scroller;
 
+    [SerializeField] GradientText titleText;
+    [SerializeField] OutlineEx titleOutline;
+
     FestivalActivityManager manager => FestivalActivityManager.Instance;
     protected override void InitComponent()
     {
@@ -38,6 +41,7 @@
     {
         scroller.OnRefreshCell += OnRefreshCell;
         todayPopToggle.isOn = !manager.IsTodayPop;
+        manager.ApplyTitleStyle(titleText, titleOutline);
         DisplayTime();
         CreateScroller();
     }
diff --git a/Main/System/FestivalActivity/FestivalActivityShopWin.cs b/Main/System/FestivalActivity/FestivalActivityShopWin.cs
index 94441db..6b6bec7 100644
--- a/Main/System/FestivalActivity/FestivalActivityShopWin.cs
+++ b/Main/System/FestivalActivity/FestivalActivityShopWin.cs
@@ -6,6 +6,8 @@
     [SerializeField] ButtonEx closeButton;
     [SerializeField] TextEx timeText;
     [SerializeField] ScrollerController scroller;
+    [SerializeField] GradientText titleText;
+    [SerializeField] OutlineEx titleOutline;
     FestivalActivityMissionManager manager => FestivalActivityMissionManager.Instance;
     protected override void InitComponent()
     {
@@ -18,6 +20,7 @@
         StoreModel.Instance.RefreshShopEvent += CreateScroller;
         StoreModel.Instance.RefreshBuyShopLimitEvent += CreateScroller;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+        FestivalActivityManager.Instance.ApplyTitleStyle(titleText, titleOutline);
         if (!manager.IsShopVisitedToday)
         {
             manager.SaveShopVisitTimeData();
diff --git a/Main/System/FestivalActivity/FestivalActivityWin.cs b/Main/System/FestivalActivity/FestivalActivityWin.cs
index 235fb47..c0ecd19 100644
--- a/Main/System/FestivalActivity/FestivalActivityWin.cs
+++ b/Main/System/FestivalActivity/FestivalActivityWin.cs
@@ -18,6 +18,9 @@
     [SerializeField] RedpointBehaviour giftRedpoint;
     [SerializeField] RedpointBehaviour rechargeRedpoint;
 
+    [SerializeField] GradientText titleText;
+    [SerializeField] OutlineEx titleOutline;
+
     FestivalActivityManager manager => FestivalActivityManager.Instance;
     protected override void InitComponent()
     {
@@ -32,6 +35,7 @@
     protected override void OnPreOpen()
     {
         InitRedpoint();
+        manager.ApplyTitleStyle(titleText, titleOutline);
 
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 3d28aa5..7f03812 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -76,6 +76,8 @@
     [SerializeField] HeroReturnCell heroReturnCell;
     [SerializeField] HeroSkinFlashSaleCell heroSkinFlashSaleCell;
     [SerializeField] Button festivalActivityBtn;
+    [SerializeField] GradientText festivalTitleText;
+    [SerializeField] OutlineEx festivalTitleOutline;
     [SerializeField] Button superVIPBtn;
 
     //鍧愰獞
@@ -1010,6 +1012,8 @@
     {
         bool isOpen = FestivalActivityManager.Instance.IsFestivalActivityOpen();
         festivalActivityBtn.SetActive(isOpen);
+        if (isOpen)
+            FestivalActivityManager.Instance.ApplyTitleStyle(festivalTitleText, festivalTitleOutline);
     }
 
     void DisplaySuperVipBtn()

--
Gitblit v1.8.0