From 39001a600fcae2bcf27c225df8752d75fb92fef4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 31 十月 2025 11:18:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/HappyXB/HappyXBModel.cs |  179 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 135 insertions(+), 44 deletions(-)

diff --git a/Main/System/HappyXB/HappyXBModel.cs b/Main/System/HappyXB/HappyXBModel.cs
index 1b5af30..7d072a4 100644
--- a/Main/System/HappyXB/HappyXBModel.cs
+++ b/Main/System/HappyXB/HappyXBModel.cs
@@ -39,11 +39,16 @@
     }  
     private Dictionary<int, XBTypeInfo> xbTypeInfoDict = new Dictionary<int, XBTypeInfo>(); //鎶藉鐘舵�佺浉鍏崇殑 鏈嶅姟鍣ㄨ褰�
 
+    public int lhQuality;
+
     public override void Init()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
         FuncOpen.Instance.OnFuncStateChangeEvent += UpdateFuncState;
         PackManager.Instance.RefreshItemEvent += RefreshXBTool;
+        TimeMgr.Instance.OnDayEvent += OnDayEvent;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+        InvestModel.Instance.onInvestUpdate += OnInvestUpdate;
 
         xbGetItemDict.Clear();
         xbTypeItemDict.Clear();
@@ -64,6 +69,9 @@
 
             xbTypeItemDict[list[i].TreasureType].Add(list[i]);
         }
+
+        var config = FuncConfigConfig.Get("HeroCall");
+        lhQuality = int.Parse(config.Numerical1);
     }
 
     public override void Release()
@@ -71,17 +79,30 @@
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
         FuncOpen.Instance.OnFuncStateChangeEvent -= UpdateFuncState;
         PackManager.Instance.RefreshItemEvent -= RefreshXBTool;
+        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+        InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
     }
 
 
 
-    public void OnBeforePlayerDataInitialize()
+    void OnBeforePlayerDataInitialize()
     {
         isXBCoolTime = false;
         xbTypeInfoDict.Clear();
     }
 
+    void OnPlayerLoginOk()
+    {
+        HeroCallRedPoint();
+    }
 
+
+    void OnInvestUpdate(int type)
+    {
+        if (type == 7)
+            HeroCallRedPoint();
+    }
     public XBGetItemConfig GetXBItemConfigByType(int type)
     {
         int lv = 0;
@@ -307,33 +328,32 @@
             //璐у竵瀵诲疂
             int moneyType = funcSet.CostMoneyType;
             int xbOneMoney = funcSet.CostMoneyList[0];
-
-            if (UIHelper.GetMoneyCnt(moneyType) >= (ulong)xbOneMoney)
+            //鏆傚畾鍏呭�艰揣甯侀渶瑕佷簩娆$‘璁�
+            if (moneyType == 1)
             {
-                //鏆傚畾鍏呭�艰揣甯侀渶瑕佷簩娆$‘璁�
-                if (moneyType == 1)
+                StoreModel.Instance.UseMoneyCheck(xbOneMoney, moneyType, () =>
                 {
-                    StoreModel.Instance.UseMoneyCheck(xbOneMoney, moneyType, () =>
+                    if (UIHelper.GetMoneyCnt(moneyType) >= xbOneMoney)
                     {
                         SendXBQuest(xbType, 0, 0);
-                    }, (int)BuyStoreItemCheckType.HeroCall, fullTip: Language.Get("CostMoneyForItem", funcSet.CostItemID, xbOneMoney,
-                    UIHelper.GetIconNameWithMoneyType(moneyType), funcSet.CostItemCountList[0]));
+                    }
+                    else
+                    {
+                        ItemTipUtility.ShowMoneyTip(moneyType);
+                    }
+                }, (int)BuyStoreItemCheckType.HeroCall, fullTip: Language.Get("CostMoneyForItem", funcSet.CostItemID, xbOneMoney,
+                UIHelper.GetIconNameWithMoneyType(moneyType), funcSet.CostItemCountList[0]));
 
-                }
-                else
-                {
-                    SendXBQuest(xbType, 0, 0);
-                }
             }
             else
             {
-                if (!GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
-                { 
-                    SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
+                if (UIHelper.GetMoneyCnt(moneyType) >= xbOneMoney)
+                {
+                    SendXBQuest(xbType, 0, 0);
                 }
                 else
                 {
-                    ItemTipUtility.Show(GeneralDefine.MoneyDisplayModel[moneyType], true);
+                    ItemTipUtility.ShowMoneyTip(moneyType);
                 }
             }
         }
@@ -363,32 +383,33 @@
 
             //璐у竵瀵诲疂
             int moneyType = funcSet.CostMoneyType;
-            if (UIHelper.GetMoneyCnt(moneyType) >= (ulong)needMoney)
+
+            //鏆傚畾鍏呭�艰揣甯侀渶瑕佷簩娆$‘璁�
+            if (moneyType == 1)
             {
-                //鏆傚畾鍏呭�艰揣甯侀渶瑕佷簩娆$‘璁�
-                if (moneyType == 1)
+                StoreModel.Instance.UseMoneyCheck(needMoney, moneyType, () =>
                 {
-                    StoreModel.Instance.UseMoneyCheck(needMoney, moneyType, () =>
+                    //鍙鏈夐亾鍏峰氨鏄亾鍏峰瀹濓紝涓嶈冻閮ㄥ垎鏈嶅姟绔墸璐у竵
+                    if (UIHelper.GetMoneyCnt(moneyType) >= needMoney)
                     {
-                        //鍙鏈夐亾鍏峰氨鏄亾鍏峰瀹濓紝涓嶈冻閮ㄥ垎鏈嶅姟绔墸璐у竵
                         SendXBQuest(xbType, 1, toolCnt > 0 ? 2 : 0);
-                    }, (int)BuyStoreItemCheckType.HeroCall, fullTip: Language.Get("CostMoneyForItem", funcSet.CostItemID, needMoney,
-                    UIHelper.GetIconNameWithMoneyType(moneyType), needToolCnt - toolCnt));
-                }
-                else
-                {
-                    SendXBQuest(xbType, 1, toolCnt > 0 ? 2 : 0);
-                }
+                    }
+                    else
+                    {
+                        ItemTipUtility.ShowMoneyTip(moneyType);
+                    }
+                }, (int)BuyStoreItemCheckType.HeroCall, fullTip: Language.Get("CostMoneyForItem", funcSet.CostItemID, needMoney,
+                UIHelper.GetIconNameWithMoneyType(moneyType), needToolCnt - toolCnt));
             }
             else
             {
-                if (!GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
-                { 
-                    SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
+                if (UIHelper.GetMoneyCnt(moneyType) >= needMoney)
+                {
+                    SendXBQuest(xbType, 1, toolCnt > 0 ? 2 : 0);
                 }
                 else
                 {
-                    ItemTipUtility.Show(GeneralDefine.MoneyDisplayModel[moneyType], true);
+                    ItemTipUtility.ShowMoneyTip(moneyType);
                 }
             }
 
@@ -410,6 +431,50 @@
         //鍒ゆ柇鏄惁鏈夊厤璐规鏁帮紝涓斿厤璐规鏁版槸鍚︾敤瀹�
         var funcSet = TreasureSetConfig.Get(type);
         return freeCountToday < funcSet.DailyFreeCount;
+    }
+
+
+    public int GetFreeCountToday(int type)
+    {
+        XBTypeInfo typeInfo = GetXBInfoByType(type);
+        if (typeInfo != null)
+        {
+            return typeInfo.freeCountToday;
+        }
+        
+        return 0;
+    }
+
+    public int GetDailyFreeCount(int type)
+    {
+        return TreasureSetConfig.Get(type).DailyFreeCount;
+    }
+
+    //鑾峰彇杩橀渶澶氬皯娆″彲寰楀垢杩愬鍔�
+    public int GetNextXBCountForBigAward(int type, out List<int> qualityList)
+    {
+        qualityList = new List<int>();
+        XBTypeInfo typeInfo = GetXBInfoByType(type);
+        if (typeInfo == null)
+        {
+            return 0;
+        }
+
+        var xbConfig = GetXBItemConfigByType(type);
+        var luckList = xbConfig.LuckyItemRateInfo.Keys.ToList();
+        luckList.Sort();
+        //鎸夐樁姊樉绀�
+        for (int i = 0; i < luckList.Count; i++)
+        {
+            if (typeInfo.luckValue < luckList[i])
+            {
+                //鎶婁簩缁存暟缁勯噷鐨勬墍鏈夌浜屼釜鍏冪礌缁勬垚鏂板垪琛�
+                qualityList = xbConfig.LuckyItemRateInfo[luckList[i]].Select(x => x[1]).ToList();
+                qualityList.Sort();
+                return luckList[i] - typeInfo.luckValue;
+            }
+        }
+        return 0;
     }
 
 
@@ -493,10 +558,15 @@
     #region 绾㈢偣閫昏緫
     public const int HappyXB_RedKey = 203;
     public const int XBHeroCall1_RedKey = 20300;    //姝﹀皢鍏嶈垂鍙敜
+    public const int XBHeroCall10_RedKey = 20301;    //姝﹀皢10鍙敜
+    public const int XBHeroCallScore_RedKey = 20302;    //姝﹀皢绉垎鍙敜
 
 
-    public Redpoint happyXBRed = new Redpoint(HappyXB_RedKey);
+    public Redpoint happyXBRed = new Redpoint(MainRedDot.MainHerosRedpoint, HappyXB_RedKey);
     public Redpoint bestXBFreeRed = new Redpoint(HappyXB_RedKey, XBHeroCall1_RedKey);
+    public Redpoint bestXB10Red = new Redpoint(HappyXB_RedKey, XBHeroCall10_RedKey);
+    public Redpoint bestXBScoreRed = new Redpoint(HappyXB_RedKey, XBHeroCallScore_RedKey);
+
     
 
     private void UpdateFuncState(int funcId)
@@ -514,39 +584,60 @@
         HeroCallRedPoint();
     }
 
+    void OnDayEvent()
+    { 
+        HeroCallRedPoint();
+    }
+
     //鑻遍泟鎷涘嫙
     public void HeroCallRedPoint()
     {
-        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.HappyFindTreasure)) return;
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.HappyFindTreasure))
+            return;
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Hero))
+            return;
+
         // 鍏嶈垂 10杩� 绉垎
-        happyXBRed.state = RedPointState.None;
+        bestXB10Red.state = RedPointState.None;
+        bestXBFreeRed.state = RedPointState.None;
+        bestXBScoreRed.state = RedPointState.None;
 
 
         if (IsHaveFreeXB((int)HappXBTitle.HeroCallAdvanced))
         {
             bestXBFreeRed.state = RedPointState.Simple;
-            return;
-        }
-        else
-        {
-            bestXBFreeRed.state = RedPointState.None;
         }
 
         if (IsHaveManyXBToolEx((int)HappXBTitle.HeroCallAdvanced, out int xbtoolCnt, out int needtoolCnt, out int needMoney))
         {
-            happyXBRed.state = RedPointState.Simple;
+            bestXB10Red.state = RedPointState.Simple;
             return;
         }
 
         //绉垎瓒冲
-
+        if ((InvestModel.Instance.IsInvested(InvestModel.monthCardType)
+        || GetXBInfoByType((int)HappXBTitle.HeroCallScore)?.treasureCount == 0)
+        && UIHelper.GetMoneyCnt(51) >= TreasureSetConfig.Get((int)HappXBTitle.HeroCallScore).CostMoneyList[0])
+        { 
+            bestXBScoreRed.state = RedPointState.Simple;
+        }
 
     }
 
+    //鎸夋牸瀛愬簱閰嶇疆鐨勫姹� 鑾峰緱鑾峰彇鐗╁搧
+    public List<int> GetAllGridLibItemIDByType(int type)
+    {
+        List<int> itemIDListTemp = new List<int>();
+        foreach (var kv in GetXBItemConfigByType(type).GridLibInfo)
+        {
+            itemIDListTemp.AddRange(TreasureItemLibConfig.GetItemIDList(kv.Value));
+        }
+        return itemIDListTemp.Distinct().ToList();
 
+    }
     
     #endregion
-}
+    }
 
 public class XBTypeInfo
 {

--
Gitblit v1.8.0