lcy
10 天以前 d1123af9b5027213c00789caa503688c30c6a0b2
628 节假日活动-五一活动 特卖活动表删除ShopType ShopItemID
7个文件已修改
200 ■■■■■ 已修改文件
Main/Config/Configs/ActSpecialSaleConfig.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/ActTaskConfig.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityManager.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityMissionManager.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityShopCell.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityShopLineCell.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityShopWin.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/ActSpecialSaleConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           Tuesday, April 28, 2026
//    [  Date ]:           2026年4月29日
//--------------------------------------------------------
using System.Collections.Generic;
@@ -20,8 +20,6 @@
    public int[] CTGIDList;
    public int ActShopType;
    public int ADID;
    public int ShopType;
    public int ShopItemID;
    public int[][] PopItems;
    public override int LoadKey(string _key)
@@ -54,11 +52,7 @@
            int.TryParse(tables[3],out ADID); 
            int.TryParse(tables[4],out ShopType);
            int.TryParse(tables[5],out ShopItemID);
            PopItems = JsonMapper.ToObject<int[][]>(tables[6].Replace("(", "[").Replace(")", "]"));
            PopItems = JsonMapper.ToObject<int[][]>(tables[4].Replace("(", "[").Replace(")", "]"));
        }
        catch (Exception exception)
        {
Main/Config/Configs/ActTaskConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           Tuesday, April 28, 2026
//    [  Date ]:           Wednesday, April 29, 2026
//--------------------------------------------------------
using System.Collections.Generic;
@@ -20,6 +20,8 @@
    public int IsDayReset;
    public int TemplateID;
    public int ActScoreItemID;
    public int ActShopTypeEx;
    public int ActShopItemID;
    public string ActScoreAwardInfo;
    public override int LoadKey(string _key)
@@ -40,7 +42,11 @@
            int.TryParse(tables[3],out ActScoreItemID); 
            ActScoreAwardInfo = tables[4];
            int.TryParse(tables[4],out ActShopTypeEx);
            int.TryParse(tables[5],out ActShopItemID);
            ActScoreAwardInfo = tables[6];
        }
        catch (Exception exception)
        {
Main/System/FestivalActivity/FestivalActivityManager.cs
@@ -153,7 +153,6 @@
    public Redpoint rechargeRedpoint;
    public void InitRedPointId()
    {
        shopRedpoint ??= new Redpoint(MainRedDot.FestivalActivityRepoint, GetRedPointId(FestivalActivityRepointType.Shop));
        giftRedpoint ??= new Redpoint(MainRedDot.FestivalActivityRepoint, GetRedPointId(FestivalActivityRepointType.Gift));
        rechargeRedpoint ??= new Redpoint(MainRedDot.FestivalActivityRepoint, GetRedPointId(FestivalActivityRepointType.Recharge));
    }
@@ -161,11 +160,7 @@
    public void UpdateRedpoint()
    {
        redPoint.state = RedPointState.None;
        shopRedpoint.state = RedPointState.None;
        giftRedpoint.state = RedPointState.None;
        if (ShowShopRedpoint())//商店
            shopRedpoint.state = RedPointState.Simple;
        if (HasGiftCanHave())//礼包
            giftRedpoint.state = RedPointState.Simple;
@@ -239,52 +234,6 @@
        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.FestivalActivity)) return false;
        return true;
    }
    #region 兑换商店
    private string ShopVisitTimeDataKey { get { return $"FestivalActivityManager_ShopVisitTime_{PlayerDatas.Instance.PlayerId}"; } }
    private int LoadShopVisitTimeData()
    {
        return LocalSave.GetInt(ShopVisitTimeDataKey);
    }
    public void SaveShopVisitTimeData()
    {
        LocalSave.SetInt(ShopVisitTimeDataKey, TimeUtility.AllSeconds);
    }
    public bool IsShopVisitedToday
    {
        get
        {
            int lastVisitTime = LoadShopVisitTimeData();
            int todayStartTime = TimeUtility.GetTodayStartTick();
            return lastVisitTime >= todayStartTime;
        }
    }
    public bool ShowShopRedpoint()
    {
        var act = GetActInfo();
        if (act == null)
            return false;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        if (config == null)
            return false;
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ShopType, out var list) || list.IsNullOrEmpty())
            return false;
        for (int i = 0; i < list.Count; i++)
        {
            var item = list[i];
            bool isFree = IsFreeShop(item.shopId);
            bool isCanBuy = IsNoSellOutShopID(item.shopId);
            if (isFree && isCanBuy)
                return true;
        }
        return !IsShopVisitedToday;
    }
    #endregion
    #region 限时礼包
    public bool IsCanBuy(int ctgID, out bool isNoLimitBuy, out int nowBuyCnt, out int maxBuyCnt)
Main/System/FestivalActivity/FestivalActivityMissionManager.cs
@@ -23,6 +23,7 @@
        OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        StoreModel.Instance.RefreshBuyShopLimitEvent += OnRefreshBuyShopLimitEvent;
        InitShopRedPointId();
    }
    public override void Release()
@@ -65,7 +66,7 @@
    public Redpoint redPoint = new Redpoint(MainRedDot.FestivalActivityRepoint, FestivalActivityManager.Instance.GetRedPointId(FestivalActivityRepointType.Mission));
    // 实时获取当前活动配置
    private ActTaskConfig GetCurrentConfig()
    public ActTaskConfig GetCurrentConfig()
    {
        if (!OperationTimeHepler.Instance.TryGetOperation(operaType, out OperationMissionActivityInfo operation))
            return null;
@@ -154,6 +155,9 @@
    public void UpdateRedPoint()
    {
        redPoint.state = RedPointState.None;
        if (shopRedpoint != null)
            shopRedpoint.state = RedPointState.None;
        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.FestivalActivity))
            return;
        if (!IsOpen)
@@ -173,7 +177,7 @@
            if (GetTaskState(taskList[i].TasklD) == 1)
            {
                redPoint.state = RedPointState.Simple;
                return;
                break;
            }
        }
@@ -184,9 +188,13 @@
            if (GetTotalScoreState(i) == 1)
            {
                redPoint.state = RedPointState.Simple;
                return;
                break;
            }
        }
        // 兑换商店红点
        if (shopRedpoint != null && ShowShopRedpoint())
            shopRedpoint.state = RedPointState.Simple;
    }
    // 获取任务列表(排序:1可领取 > 0不可领取 > 2已领取)
@@ -382,4 +390,76 @@
        }
        return Language.Get("TotalRecharge08", TimeUtility.SecondsToShortDHMS(operation.GetResetSurplusTime()));
    }
    public void GetActTimeStr(TextEx timeText, string key = "TimeRush05")
    {
        timeText.text = GetActTimeStr();
    }
    #region 兑换商店
    private string ShopVisitTimeDataKey { get { return $"FestivalActivityMissionManager_ShopVisitTime_{PlayerDatas.Instance.PlayerId}"; } }
    private int LoadShopVisitTimeData()
    {
        return LocalSave.GetInt(ShopVisitTimeDataKey);
    }
    public void SaveShopVisitTimeData()
    {
        LocalSave.SetInt(ShopVisitTimeDataKey, TimeUtility.AllSeconds);
    }
    public bool IsShopVisitedToday
    {
        get
        {
            int lastVisitTime = LoadShopVisitTimeData();
            int todayStartTime = TimeUtility.GetTodayStartTick();
            return lastVisitTime >= todayStartTime;
        }
    }
    public Redpoint shopRedpoint;
    public void InitShopRedPointId()
    {
        shopRedpoint ??= new Redpoint(MainRedDot.FestivalActivityRepoint, FestivalActivityManager.Instance.GetRedPointId(FestivalActivityRepointType.Shop));
    }
    public bool ShowShopRedpoint()
    {
        ActTaskConfig config = GetCurrentConfig();
        if (config == null)
            return false;
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ActShopTypeEx, out var list) || list.IsNullOrEmpty())
            return false;
        for (int i = 0; i < list.Count; i++)
        {
            var item = list[i];
            bool isFree = IsFreeShop(item.shopId);
            bool isCanBuy = IsNoSellOutShopID(item.shopId);
            if (isFree && isCanBuy)
                return true;
        }
        return !IsShopVisitedToday;
    }
    public bool IsFreeShop(int shopID)
    {
        StoreConfig config = StoreConfig.Get(shopID);
        if (config == null) return false;
        return config.MoneyNum == 0;
    }
    public bool IsNoSellOutShopID(int shopID)
    {
        StoreConfig config = StoreConfig.Get(shopID);
        if (config == null) return false;
        StoreModel.Instance.TryGetIsSellOut(config, out int remainNum);
        return remainNum > 0;
    }
    #endregion
}
Main/System/FestivalActivity/FestivalActivityShopCell.cs
@@ -25,16 +25,13 @@
    [SerializeField] Text freeText;
    [SerializeField] Image exclusiveImage;//专属
    [SerializeField] Image sellOutImage;//售罄
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    FestivalActivityMissionManager manager => FestivalActivityMissionManager.Instance;
    public void Display(int index)
    {
        var act = manager.GetActInfo();
        if (act == null)
            return;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        ActTaskConfig config = manager.GetCurrentConfig();
        if (config == null)
            return;
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ShopType, out var list))
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ActShopTypeEx, out var list))
            return;
        var storeData = list[index];
Main/System/FestivalActivity/FestivalActivityShopLineCell.cs
@@ -3,16 +3,13 @@
public class FestivalActivityShopLineCell : CellView
{
    [SerializeField] FestivalActivityShopCell[] storeCells;
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    FestivalActivityMissionManager manager => FestivalActivityMissionManager.Instance;
    public void Display(int index)
    {
        var act = manager.GetActInfo();
        if (act == null)
            return;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        ActTaskConfig config = manager.GetCurrentConfig();
        if (config == null)
            return;
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ShopType, out var list))
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ActShopTypeEx, out var list))
            return;
        for (int i = 0; i < storeCells.Length; i++)
Main/System/FestivalActivity/FestivalActivityShopWin.cs
@@ -6,7 +6,7 @@
    [SerializeField] ButtonEx closeButton;
    [SerializeField] TextEx timeText;
    [SerializeField] ScrollerController scroller;
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    FestivalActivityMissionManager manager => FestivalActivityMissionManager.Instance;
    protected override void InitComponent()
    {
        closeButton.SetListener(CloseWindow);
@@ -21,17 +21,14 @@
        if (!manager.IsShopVisitedToday)
        {
            manager.SaveShopVisitTimeData();
            manager.UpdateRedpoint();
            manager.UpdateRedPoint();
        }
        var act = manager.GetActInfo();
        if (act == null)
            return;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        ActTaskConfig config = manager.GetCurrentConfig();
        if (config == null)
            return;
        ownItemCell.itemID = config.ShopItemID;
        ownItemCell.itemID = config.ActShopItemID;
        CreateScroller();
        OnSecondEvent();
@@ -54,18 +51,20 @@
    private void OnSecondEvent()
    {
        manager.GetActTimeStr(timeText);
        if (!OperationTimeHepler.Instance.TryGetOperation(OperationType.FestivalActivity_Mission, out OperationMissionActivityInfo operation))
        {
            timeText.text = Language.Get("OSActivity6");
            return;
        }
        timeText.text = Language.Get("TimeRush05", TimeUtility.SecondsToShortDHMS(operation.GetResetSurplusTime()));
    }
    void CreateScroller()
    {
        var act = manager.GetActInfo();
        if (act == null)
            return;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        ActTaskConfig config = manager.GetCurrentConfig();
        if (config == null)
            return;
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ShopType, out var list))
        if (!StoreModel.Instance.storeTypeDict.TryGetValue(config.ActShopTypeEx, out var list))
            return;
        scroller.Refresh();