From 8d5354f23b75fe5ff6187fd311c8b7857fb170c0 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 03 十一月 2025 23:55:23 +0800
Subject: [PATCH] 217 【福利内容】每日任务

---
 Main/System/DayMission/DayMissionManager.cs                                             |  201 ++++++++++++++
 Main/System/DayMission/DayMissionManager.cs.meta                                        |   11 
 Main/System/DayMission/DayMissionCell.cs                                                |   67 ++++
 Main/Config/ConfigManager.cs                                                            |    3 
 Main/System/DayMission/DayMissionWin.cs.meta                                            |   11 
 Main/System/Redpoint/MainRedDot.cs                                                      |   67 ++--
 Main/System/DayMission/DayMissionWin.cs                                                 |  138 +++++++++
 Main/Config/Configs/DailyTaskConfig.cs                                                  |   68 ++++
 Main/System/DayMission/DayMissionCell.cs.meta                                           |   11 
 Main/System/GeneralConfig/GeneralDefine.cs                                              |    3 
 Main/Config/Configs/DailyLivenessRewardConfig.cs                                        |   44 +++
 Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs                |   39 ++
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs.meta |   11 
 Main/System/DayMission.meta                                                             |    8 
 Main/Main.cs                                                                            |    2 
 Main/Config/Configs/DailyTaskConfig.cs.meta                                             |   11 
 Main/System/Guild/GuildManager.cs                                                       |    4 
 Main/Utility/EnumHelper.cs                                                              |    2 
 Main/System/HeroUI/HeroBaseWin.cs                                                       |    2 
 Main/System/DayMission/DayMissionBaseWin.cs.meta                                        |   11 
 Main/Config/Configs/DailyLivenessRewardConfig.cs.meta                                   |   11 
 Main/System/DayMission/DayMissionBaseWin.cs                                             |   42 +++
 Main/System/Main/RightFuncInHome.cs                                                     |   15 
 Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs.meta           |   11 
 Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs                                    |    1 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs      |   12 
 26 files changed, 771 insertions(+), 35 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index 3e738fb..bf3639b 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -42,6 +42,7 @@
             typeof(BattleMapConfig),
             typeof(ChestsAwardConfig),
             typeof(CTGConfig),
+            typeof(DailyTaskConfig),
             typeof(DamageNumConfig),
             typeof(DirtyWordConfig),
             typeof(DungeonConfig),
@@ -232,6 +233,8 @@
         ClearConfigDictionary<ChestsAwardConfig>();
         // 娓呯┖ CTGConfig 瀛楀吀
         ClearConfigDictionary<CTGConfig>();
+        // 娓呯┖ DailyTaskConfig 瀛楀吀
+        ClearConfigDictionary<DailyTaskConfig>();
         // 娓呯┖ DamageNumConfig 瀛楀吀
         ClearConfigDictionary<DamageNumConfig>();
         // 娓呯┖ DirtyWordConfig 瀛楀吀
diff --git a/Main/Config/Configs/DailyLivenessRewardConfig.cs b/Main/Config/Configs/DailyLivenessRewardConfig.cs
new file mode 100644
index 0000000..34c09e9
--- /dev/null
+++ b/Main/Config/Configs/DailyLivenessRewardConfig.cs
@@ -0,0 +1,44 @@
+锘�//--------------------------------------------------------
+//    [Author]:           YYL
+//    [  Date ]:           2025骞�11鏈�3鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class DailyLivenessRewardConfig : ConfigBase<int, DailyLivenessRewardConfig>
+{
+    static DailyLivenessRewardConfig()
+    {
+        // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+        visit = true; 
+    }
+
+    public int ID;
+	public int NeedLiveness;
+	public int[][] AwardItemList;
+
+    public override int LoadKey(string _key)
+    {
+        int key = GetKey(_key);
+        return key;
+    }
+
+    public override void LoadConfig(string input)
+    {
+        try {
+        string[] tables = input.Split('\t');
+        int.TryParse(tables[0],out ID); 
+
+			int.TryParse(tables[1],out NeedLiveness); 
+
+			AwardItemList = JsonMapper.ToObject<int[][]>(tables[2].Replace("(", "[").Replace(")", "]")); 
+        }
+        catch (Exception exception)
+        {
+            Debug.LogError(exception);
+        }
+    }
+}
diff --git a/Main/Config/Configs/DailyLivenessRewardConfig.cs.meta b/Main/Config/Configs/DailyLivenessRewardConfig.cs.meta
new file mode 100644
index 0000000..d4bdf87
--- /dev/null
+++ b/Main/Config/Configs/DailyLivenessRewardConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6c305e1f375abfd49b4c9d1053ef5bcf
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Config/Configs/DailyTaskConfig.cs b/Main/Config/Configs/DailyTaskConfig.cs
new file mode 100644
index 0000000..4482cd1
--- /dev/null
+++ b/Main/Config/Configs/DailyTaskConfig.cs
@@ -0,0 +1,68 @@
+锘�//--------------------------------------------------------
+//    [Author]:           YYL
+//    [  Date ]:           2025骞�11鏈�3鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class DailyTaskConfig : ConfigBase<int, DailyTaskConfig>
+{
+    static DailyTaskConfig()
+    {
+        // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+        visit = true; 
+    }
+
+    public int TaskID;
+	public int TaskType;
+	public int[] TaskConds;
+	public int NeedValue;
+	public int AwardLiveness;
+	public string Title;
+	public int GuideID;
+
+    public override int LoadKey(string _key)
+    {
+        int key = GetKey(_key);
+        return key;
+    }
+
+    public override void LoadConfig(string input)
+    {
+        try {
+        string[] tables = input.Split('\t');
+        int.TryParse(tables[0],out TaskID); 
+
+			int.TryParse(tables[1],out TaskType); 
+
+			if (tables[2].Contains("["))
+			{
+				TaskConds = JsonMapper.ToObject<int[]>(tables[2]);
+			}
+			else
+			{
+				string[] TaskCondsStringArray = tables[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+				TaskConds = new int[TaskCondsStringArray.Length];
+				for (int i=0;i<TaskCondsStringArray.Length;i++)
+				{
+					 int.TryParse(TaskCondsStringArray[i],out TaskConds[i]);
+				}
+			}
+
+			int.TryParse(tables[3],out NeedValue); 
+
+			int.TryParse(tables[4],out AwardLiveness); 
+
+			Title = tables[5];
+
+			int.TryParse(tables[6],out GuideID); 
+        }
+        catch (Exception exception)
+        {
+            Debug.LogError(exception);
+        }
+    }
+}
diff --git a/Main/Config/Configs/DailyTaskConfig.cs.meta b/Main/Config/Configs/DailyTaskConfig.cs.meta
new file mode 100644
index 0000000..dcc84a1
--- /dev/null
+++ b/Main/Config/Configs/DailyTaskConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ba5c113ebde460469cc494b48333132
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs
new file mode 100644
index 0000000..9fc7708
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 09 姣忔棩娲昏穬浠诲姟淇℃伅 #tagSCDailyTaskInfo
+
+public class DTCB109_tagSCDailyTaskInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HB109_tagSCDailyTaskInfo vNetData = vNetPack as HB109_tagSCDailyTaskInfo;
+        DayMissionManager.Instance.UpdateDailyTaskInfo(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs.meta
new file mode 100644
index 0000000..d8f2a8c
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB109_tagSCDailyTaskInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 894bb389b50caa241b017836c059b06e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index 672dfce..9b29666 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -117,6 +117,7 @@
         Register(typeof(HA009_tagSCGameRecInfo), typeof(DTCA009_tagSCGameRecInfo));
         Register(typeof(HA922_tagSCArenaMatchList), typeof(DTCA922_tagSCArenaMatchList));
         Register(typeof(HA923_tagSCArenaPlayerInfo), typeof(DTCA923_tagSCArenaPlayerInfo));
+        Register(typeof(HB109_tagSCDailyTaskInfo), typeof(DTCB109_tagSCDailyTaskInfo));
     }
 
     //涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs
new file mode 100644
index 0000000..c9fe9b5
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 09 姣忔棩娲昏穬浠诲姟淇℃伅 #tagSCDailyTaskInfo
+
+public class HB109_tagSCDailyTaskInfo : GameNetPackBasic {
+    public uint ActivityTotal;    // 浠婃棩绱鑾峰緱娲昏穬搴�
+    public uint ActivityAward;    // 绱娲昏穬棰嗗璁板綍锛屾寜娲昏穬ID濂栧姳浜岃繘鍒朵綅瀛樺偍鏄惁宸查鍙�
+    public uint DailyTaskState;    // 浠婃棩浠诲姟鏄惁宸查鍙栧鍔憋紝鎸変换鍔D浜岃繘鍒朵綅瀛樺偍鏄惁宸查鍙�
+    public byte TaskCount;
+    public  tagSCDailyTask[] TaskList;    // 宸紓鏇存柊鐨勪换鍔′俊鎭�
+
+    public HB109_tagSCDailyTaskInfo () {
+        _cmd = (ushort)0xB109;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out ActivityTotal, vBytes, NetDataType.DWORD);
+        TransBytes (out ActivityAward, vBytes, NetDataType.DWORD);
+        TransBytes (out DailyTaskState, vBytes, NetDataType.DWORD);
+        TransBytes (out TaskCount, vBytes, NetDataType.BYTE);
+        TaskList = new tagSCDailyTask[TaskCount];
+        for (int i = 0; i < TaskCount; i ++) {
+            TaskList[i] = new tagSCDailyTask();
+            TransBytes (out TaskList[i].TaskType, vBytes, NetDataType.BYTE);
+            TransBytes (out TaskList[i].CLen, vBytes, NetDataType.BYTE);
+            TransBytes (out TaskList[i].Conds, vBytes, NetDataType.DWORD, TaskList[i].CLen);
+            TransBytes (out TaskList[i].CurValue, vBytes, NetDataType.DWORD);
+        }
+    }
+
+    public class tagSCDailyTask {
+        public byte TaskType;        // 浠诲姟绫诲瀷
+        public byte CLen;
+        public  uint[] Conds;        // 鏉′欢鍒楄〃
+        public uint CurValue;        // 杩涘害鍊硷紝鐩稿悓浠诲姟绫诲瀷鏉′欢鐨勮繘搴﹀�煎叡浜�
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs.meta
new file mode 100644
index 0000000..8443ab8
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB109_tagSCDailyTaskInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 83a37cb51971a04478013e6f737e6eaa
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Main.cs b/Main/Main.cs
index d9cb64f..3815a5e 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -83,6 +83,8 @@
         managers.Add(AdsManager.Instance);
         managers.Add(BoneFieldManager.Instance);
         managers.Add(ArenaManager.Instance);
+        managers.Add(DayMissionManager.Instance);
+        
         foreach (var manager in managers)
         {
             manager.Init();
diff --git a/Main/System/DayMission.meta b/Main/System/DayMission.meta
new file mode 100644
index 0000000..72f84d2
--- /dev/null
+++ b/Main/System/DayMission.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1f7eb0d49e99cb641b0b1643cce2d73e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/DayMissionBaseWin.cs b/Main/System/DayMission/DayMissionBaseWin.cs
new file mode 100644
index 0000000..9e2dff8
--- /dev/null
+++ b/Main/System/DayMission/DayMissionBaseWin.cs
@@ -0,0 +1,42 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using Cysharp.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.UI;
+
+//鏃ュ父鐣岄潰
+public class DayMissionBaseWin : FunctionsBaseWin
+{
+   [SerializeField] Text titleText;
+
+
+    protected override void OpenSubUIByTabIndex()
+    {
+        switch (functionOrder)
+        {
+            case 0:
+                //鏃ュ父浠诲姟
+                currentSubUI = UIManager.Instance.OpenWindow<DayMissionWin>();
+                titleText.text = Language.Get("DayMission2");
+                break;
+            case 1:
+                //鍛ㄥ鍔�
+                // currentSubUI = UIManager.Instance.OpenWindow<HeroCollectionWin>();
+                titleText.text = Language.Get("DayMission3");
+                break;
+            case 2:
+                //涓荤嚎浠诲姟锛堣嫳闆勪箣璺級
+                titleText.text = Language.Get("DayMission4");
+                break;
+            default:
+                Debug.LogWarning("鏈煡鐨勬爣绛剧储寮�: " + functionOrder);
+                break;
+        }
+    }
+}
+
+
+
+
+
diff --git a/Main/System/DayMission/DayMissionBaseWin.cs.meta b/Main/System/DayMission/DayMissionBaseWin.cs.meta
new file mode 100644
index 0000000..7c45a0e
--- /dev/null
+++ b/Main/System/DayMission/DayMissionBaseWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d7b1726e7f98b034daa3ddccc679e67b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/DayMissionCell.cs b/Main/System/DayMission/DayMissionCell.cs
new file mode 100644
index 0000000..d6cec92
--- /dev/null
+++ b/Main/System/DayMission/DayMissionCell.cs
@@ -0,0 +1,67 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class DayMissionCell : CellView
+{
+    [SerializeField] Text titleText;
+    [SerializeField] Text valueText;
+    [SerializeField] Image processImg;
+    [SerializeField] Text processText;
+    [SerializeField] Button getBtn;
+    [SerializeField] Button gotoBtn;
+    [SerializeField] Transform gotRect;
+    [SerializeField] Transform mask;
+
+
+    public void Display(int index)
+    {
+        int id = DayMissionManager.Instance.dailyIDList[index];
+        var config = DailyTaskConfig.Get(id);
+        titleText.text = string.Format(config.Title, config.NeedValue);
+        valueText.text = config.AwardLiveness.ToString();
+        var process = DayMissionManager.Instance.GetDailyTaskProcess(id);
+        processImg.fillAmount = (float)process / config.NeedValue;
+        processText.text = Math.Min(process, config.NeedValue) + "/" + config.NeedValue;
+
+        var state = DayMissionManager.Instance.GetDailyTaskState(config);
+        if (state == 0)
+        {
+            getBtn.SetActive(false);
+            gotoBtn.SetActive(true);
+            gotRect.SetActive(false);
+            mask.SetActive(true);
+            gotoBtn.AddListener(()=>
+            {
+                UIManager.Instance.CloseWindow<DayMissionBaseWin>();
+                NewBieCenter.Instance.StartNewBieGuide(config.GuideID);
+            });
+        }
+        else if (state == 1)
+        {
+            getBtn.SetActive(true);
+            gotoBtn.SetActive(false);
+            gotRect.SetActive(false);
+            mask.SetActive(false);
+            getBtn.AddListener(()=>
+            {
+                var pack = new CA504_tagCMPlayerGetReward();
+                pack.RewardType = 1;
+                pack.DataEx = (uint)id;
+                GameNetSystem.Instance.SendInfo(pack);
+            });
+        }
+        else if (state == 2)
+        {
+            getBtn.SetActive(false);
+            gotoBtn.SetActive(false);
+            gotRect.SetActive(true);
+            mask.SetActive(true);
+        }
+    }
+
+   
+}
+
+
diff --git a/Main/System/DayMission/DayMissionCell.cs.meta b/Main/System/DayMission/DayMissionCell.cs.meta
new file mode 100644
index 0000000..9d84636
--- /dev/null
+++ b/Main/System/DayMission/DayMissionCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ad65770eaf39355489a8cd13d53d3399
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/DayMissionManager.cs b/Main/System/DayMission/DayMissionManager.cs
new file mode 100644
index 0000000..001529e
--- /dev/null
+++ b/Main/System/DayMission/DayMissionManager.cs
@@ -0,0 +1,201 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+
+public class DayMissionManager : GameSystemManager<DayMissionManager>
+{
+
+    public int activityTotal;    // 浠婃棩绱鑾峰緱娲昏穬搴�
+    public int activityAward;    // 绱娲昏穬棰嗗璁板綍锛屾寜娲昏穬ID濂栧姳浜岃繘鍒朵綅瀛樺偍鏄惁宸查鍙�
+    public int dailyTaskState;    // 浠婃棩浠诲姟鏄惁宸查鍙栧鍔憋紝鎸変换鍔D浜岃繘鍒朵綅瀛樺偍鏄惁宸查鍙�
+    public Dictionary<int, Dictionary<int, int>> taskProcessDict = new Dictionary<int, Dictionary<int, int>>();    // 浠诲姟杩涘害瀛楀吀锛宬ey:浠诲姟绫诲瀷锛寁alue:杩涘害鍊�
+    public event Action OnDayMissionEvent;  // 鏃ュ父浠诲姟浜嬩欢
+
+    public List<int> dailyIDList = new List<int>();
+
+    bool isRefreshDayMission = false;   //鍋氫釜寤惰繜鍒锋柊
+
+    public override void Init()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+
+        ParseConfig();
+    }
+
+    public override void Release()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+    }
+
+    void OnBeforePlayerDataInitialize()
+    {
+        activityTotal = 0;
+        activityAward = 0;
+        dailyTaskState = 0;
+        taskProcessDict.Clear();
+    }
+
+    void OnSecondEvent()
+    {
+        if (isRefreshDayMission)
+        {
+            isRefreshDayMission = false;
+            UpdateRedpoint();
+            OnDayMissionEvent?.Invoke();
+        }
+    }
+    void ParseConfig()
+    {
+        dailyIDList = DailyTaskConfig.GetKeys();
+    }
+
+    public void UpdateDailyTaskInfo(HB109_tagSCDailyTaskInfo netPack)
+    {
+        if (netPack.TaskCount > 4)
+        {
+            //4鏄殢渚垮啓鐨� 姝e父鍒锋柊鍖呭皬浜庣瓑浜�1锛屽彧鏈夐噸鐧诲拰杩囧ぉ浼氬皢鎵�鏈夊悓姝ヤ竴娆�
+            //鏃ュ父娲昏穬鍖呬細琚垬鏂楀寘鍖呭惈鎵撲贡椤哄簭锛屾晠鎸夋渶澶у�煎瓨鍌�
+            activityTotal = 0;
+            activityAward = 0;
+            dailyTaskState = 0;
+            taskProcessDict.Clear();
+        }
+        activityTotal = Math.Max(activityTotal, (int)netPack.ActivityTotal);
+        activityAward = Math.Max(activityAward, (int)netPack.ActivityAward);
+        dailyTaskState = Math.Max(dailyTaskState, (int)netPack.DailyTaskState);
+        for (int i = 0; i < netPack.TaskCount; i++)
+        {
+            var task = netPack.TaskList[i];
+            if (!taskProcessDict.ContainsKey(task.TaskType))
+            {
+                taskProcessDict[task.TaskType] = new Dictionary<int, int>();
+
+            }
+            int cond = 0;
+            if (!task.Conds.IsNullOrEmpty())
+            {
+                // 鏆傛椂鎸夊崟鏉′欢瑙勫垯瀛樺偍锛屽悗缁湁鍙樺寲鍐嶅畾涔�
+                cond = (int)task.Conds[0];
+            }
+            if (!taskProcessDict[task.TaskType].ContainsKey(cond))
+            {
+                taskProcessDict[task.TaskType][cond] = 0;
+            }
+            taskProcessDict[task.TaskType][cond] = Math.Max(taskProcessDict[task.TaskType][cond], (int)task.CurValue);
+        }
+        isRefreshDayMission = true;
+        // UpdateRedpoint();
+        // OnDayMissionEvent?.Invoke();
+    }
+
+    public int GetDailyTaskProcess(int id)
+    {
+        var config = DailyTaskConfig.Get(id);
+        if (!taskProcessDict.ContainsKey(config.TaskType))
+        {
+            return 0;
+        }
+        var cond = 0;
+        if (!config.TaskConds.IsNullOrEmpty())
+        {
+            // 鏆傛椂鎸夊崟鏉′欢瑙勫垯瀛樺偍锛屽悗缁湁鍙樺寲鍐嶅畾涔�
+            cond = config.TaskConds[0];
+        }
+
+        if (!taskProcessDict[config.TaskType].ContainsKey(cond))
+        {
+            return 0;
+        }
+        return taskProcessDict[config.TaskType][cond];
+    }
+
+    Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_DailyKey, MainRedDot.RedPoint_DailyFuncKey);
+    void UpdateRedpoint()
+    {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DayMission))
+        {
+            return;
+        }
+        //绱Н濂栧姳 鍜� 鍙鍙栦换鍔″鍔变换涓�
+        redpoint.state = RedPointState.None;
+        foreach (var config in DailyLivenessRewardConfig.GetValues())
+        {
+            if (GetDayActivityState(config) == 1)
+            {
+                redpoint.state = RedPointState.Simple;
+                return;
+            }
+        }
+
+        foreach (var config in DailyTaskConfig.GetValues())
+        {
+            if (GetDailyTaskState(config) == 1)
+            {
+                redpoint.state = RedPointState.Simple;
+                return;
+            }
+        }
+    }
+
+    //鎬绘椿璺冨鍔憋細0 鏈揪鏍� 1 鍙鍙� 2 宸查鍙�
+    public int GetDayActivityState(DailyLivenessRewardConfig config)
+    {
+        if (activityTotal < config.NeedLiveness)
+        {
+            return 0;
+        }
+        if (((1 << config.ID) & activityAward) == 0)
+        {
+            return 1;
+        }
+        return 2;
+    }
+
+    //姣忔棩浠诲姟濂栧姳锛�0 鏈揪鏍� 1 鍙鍙� 2 宸查鍙�
+    public int GetDailyTaskState(DailyTaskConfig config)
+    {
+        if (GetDailyTaskProcess(config.TaskID) < config.NeedValue)
+        {
+            return 0;
+        }
+        if (((1 << config.TaskID) & dailyTaskState) == 0)
+        {
+            return 1;
+        }
+        return 2;
+    }
+
+
+    public void SortDailyTask()
+    {
+        dailyIDList.Sort(CmpDayTask);
+    }
+
+    // 鍙鍙� 銆� 宸查鍙� 銆� 鏈揪鏍�
+    List<int> indexs = new List<int>() { 1, 0, 2 };
+    int CmpDayTask(int idA, int idB)
+    {
+        var configA = DailyTaskConfig.Get(idA);
+
+        var configB = DailyTaskConfig.Get(idB);
+
+        var stateA = GetDailyTaskState(configA);
+        var stateB = GetDailyTaskState(configB);
+        var indexA = indexs.IndexOf(stateA);
+        var indexB = indexs.IndexOf(stateB);
+
+        if (indexA != indexB)
+        {
+            return indexA.CompareTo(indexB);
+        }
+
+        return idA.CompareTo(idB);
+    }
+
+
+}
+
diff --git a/Main/System/DayMission/DayMissionManager.cs.meta b/Main/System/DayMission/DayMissionManager.cs.meta
new file mode 100644
index 0000000..402821e
--- /dev/null
+++ b/Main/System/DayMission/DayMissionManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 64cbcc7debad2de488af4a6e79510c08
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/DayMissionWin.cs b/Main/System/DayMission/DayMissionWin.cs
new file mode 100644
index 0000000..d0f6830
--- /dev/null
+++ b/Main/System/DayMission/DayMissionWin.cs
@@ -0,0 +1,138 @@
+锘縰sing System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+//鏃ュ父浠诲姟
+public class DayMissionWin : UIBase
+{
+    [SerializeField] Text totalActivityText;
+    [SerializeField] Image totalActivityProcessImg;
+    [SerializeField] ItemCell[] itemCells;
+    [SerializeField] Transform[] finishMarkImg;
+    [SerializeField] Transform[] canGetAwardImg;
+    [SerializeField] Text[] targetActivityText;
+    [SerializeField] ScrollerController scroller;
+
+    int beforeActivity; //鐢ㄤ簬鏄剧ず娲昏穬濂栧姳
+
+    protected override void OnPreOpen()
+    {
+        beforeActivity = DayMissionManager.Instance.activityTotal;
+        scroller.OnRefreshCell += OnRefreshCell;
+        DayMissionManager.Instance.OnDayMissionEvent += OnDayMissionEvent;
+
+        CreateScroller();
+        Display();
+    }
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+        DayMissionManager.Instance.OnDayMissionEvent -= OnDayMissionEvent;
+    }
+
+
+    void Display()
+    {
+        totalActivityText.text = DayMissionManager.Instance.activityTotal.ToString();
+        var keys = DailyLivenessRewardConfig.GetKeys();
+        keys.Sort();
+        for (int i = 0; i < itemCells.Length; i++)
+        {
+            int id = keys[i];
+            var config = DailyLivenessRewardConfig.Get(id);
+            int itemID = config.AwardItemList[0][0];
+            int itemCount = config.AwardItemList[0][1];
+
+            var state = DayMissionManager.Instance.GetDayActivityState(config);
+            itemCells[i].Init(new ItemCellModel(itemID, false, itemCount));
+            itemCells[i].button.AddListener(() => { ShowAward(id); });
+            if (state == 0)
+            {
+                finishMarkImg[i].SetActive(false);
+                canGetAwardImg[i].SetActive(false);
+            }
+            else if (state == 1)
+            {
+                finishMarkImg[i].SetActive(false);
+                canGetAwardImg[i].SetActive(true);
+            }
+            else if (state == 2)
+            {
+                finishMarkImg[i].SetActive(true);
+                canGetAwardImg[i].SetActive(false);
+            }
+
+            targetActivityText[i].text = config.NeedLiveness.ToString();
+        }
+        totalActivityProcessImg.fillAmount = (float)DayMissionManager.Instance.activityTotal / 100;
+    }
+
+
+    void CreateScroller()
+    {
+        scroller.Refresh();
+        DayMissionManager.Instance.SortDailyTask();
+        for (int i = 0; i < DayMissionManager.Instance.dailyIDList.Count; i++)
+        {
+            var id = DayMissionManager.Instance.dailyIDList[i];
+            scroller.AddCell(ScrollerDataType.Header, i);
+        }
+        scroller.Restart();
+    }
+
+    void OnDayMissionEvent()
+    {
+        DayMissionManager.Instance.SortDailyTask();
+        Display();
+        scroller.m_Scorller.RefreshActiveCellViews();
+        if (DayMissionManager.Instance.activityTotal != beforeActivity)
+        {
+            List<Item> showItems = new List<Item>();
+            Item tempItem = new Item(GeneralDefine.activityItemID, DayMissionManager.Instance.activityTotal - beforeActivity);
+            showItems.Add(tempItem);
+            ItemLogicUtility.Instance.ShowGetItem(showItems);
+
+            beforeActivity = DayMissionManager.Instance.activityTotal;
+        }
+    }
+
+    void ShowAward(int id)
+    {
+        var config = DailyLivenessRewardConfig.Get(id);
+        var state = DayMissionManager.Instance.GetDayActivityState(config);
+        if (state == 1)
+        {
+            var keys = DailyLivenessRewardConfig.GetKeys();
+            keys.Sort();
+            foreach(var id1 in keys)
+            {
+                var config1 = DailyLivenessRewardConfig.Get(id1);
+                var state1 = DayMissionManager.Instance.GetDayActivityState(config1);
+                if (state1 == 1)
+                {
+                    //澧炲姞涓�閿濂�
+                    var pack = new CA504_tagCMPlayerGetReward();
+                    pack.RewardType = 0;
+                    pack.DataEx = (uint)id1;
+                    GameNetSystem.Instance.SendInfo(pack);
+                }
+            }
+            return;
+        }
+        int itemID = config.AwardItemList[0][0];
+        ItemTipUtility.Show(itemID);
+    }
+
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as DayMissionCell;
+        _cell.Display(cell.index);
+    }
+}
+
+
+
+
+
diff --git a/Main/System/DayMission/DayMissionWin.cs.meta b/Main/System/DayMission/DayMissionWin.cs.meta
new file mode 100644
index 0000000..8e4945e
--- /dev/null
+++ b/Main/System/DayMission/DayMissionWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 342c2cca8edf22941b9f959890f2c9ba
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/GeneralConfig/GeneralDefine.cs b/Main/System/GeneralConfig/GeneralDefine.cs
index 01e186b..b835f31 100644
--- a/Main/System/GeneralConfig/GeneralDefine.cs
+++ b/Main/System/GeneralConfig/GeneralDefine.cs
@@ -9,6 +9,7 @@
 public class GeneralDefine
 {
     public static Dictionary<int, int> MoneyDisplayModel { get; private set; }
+    public static int activityItemID { get; private set; }
     
     public static int expDisplayId { get; private set; }
     
@@ -45,7 +46,7 @@
         try
         {
             MoneyDisplayModel = ConfigParse.ParseIntDict(GetInputString("MoneyDisplayModel", 1));
-
+            activityItemID = GetInt("MoneyDisplayModel", 2);
 
             var config = FuncConfigConfig.Get("PutInItemPack");
             JsonData itemPutInData = JsonMapper.ToObject(config.Numerical1);
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index ca9c83a..1b5706e 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -898,9 +898,9 @@
 
     #region 绾㈢偣
     
-    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.guildHallRedpointID * 10);
+    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
     //鐝嶅疂闃�(琛屽晢)
-    Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.MainGuildRedpoint * 100 + 1);
+    Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.hawkerRedpointID);
 
     void UpdateDonateRedPoint()
     {
diff --git a/Main/System/HeroUI/HeroBaseWin.cs b/Main/System/HeroUI/HeroBaseWin.cs
index dc88305..ad69532 100644
--- a/Main/System/HeroUI/HeroBaseWin.cs
+++ b/Main/System/HeroUI/HeroBaseWin.cs
@@ -42,7 +42,7 @@
         Debug.Log("鎵撳紑瀛愮晫闈� : " + functionOrder);
         // 涓诲煄 鍐呮斂 姝﹀皢 鎸戞垬 鍏細
         //鏍规嵁绱㈠紩鎵撳紑涓嶅悓鐨勭晫闈�
-         switch (functionOrder)
+        switch (functionOrder)
         {
             case 0:
                 currentSubUI = UIManager.Instance.OpenWindow<HeroListWin>();
diff --git a/Main/System/Main/RightFuncInHome.cs b/Main/System/Main/RightFuncInHome.cs
index b0902dd..57c9b5b 100644
--- a/Main/System/Main/RightFuncInHome.cs
+++ b/Main/System/Main/RightFuncInHome.cs
@@ -13,6 +13,7 @@
     [SerializeField] Button closeBtn;
     [SerializeField] Button storeBtn;
     [SerializeField] Button monthCardBtn;
+    [SerializeField] Button dayMissionBtn;
 
     string listenWindowName = "";   //鐩戝惉鍏抽棴鏃跺啀鏄剧ず
 
@@ -21,11 +22,13 @@
     {
         monthCardBtn.AddListener(() =>
         {
-            ListenWindow("");
+            //鐢ㄤ簬鐩戝惉鐣岄潰锛屾墦寮�鏃剁缉杩涘彸杈瑰姛鑳芥爮锛屽叧闂椂鏄剧ず
+            // ListenWindow("");
             InvestModel.Instance.BuyInvest(InvestModel.monthCardType);
         });
         storeBtn.AddListener(() =>
         {
+            //鐢ㄤ簬鐩戝惉鐣岄潰锛屾墦寮�鏃剁缉杩涘彸杈瑰姛鑳芥爮锛屽叧闂椂鏄剧ず
             ListenWindow("StoreBaseWin");
             UIManager.Instance.OpenWindow<StoreBaseWin>();
         });
@@ -45,11 +48,19 @@
 
         UIManager.Instance.OnCloseWindow -= OnCloseWindow;
         UIManager.Instance.OnCloseWindow += OnCloseWindow;
+
+        dayMissionBtn.AddListener(() =>
+        {
+            //鐢ㄤ簬鐩戝惉鐣岄潰锛屾墦寮�鏃剁缉杩涘彸杈瑰姛鑳芥爮锛屽叧闂椂鏄剧ず
+            ListenWindow("DayMissionBaseWin");
+            UIManager.Instance.OpenWindow<DayMissionBaseWin>();
+        });
     }
 
     void ShowBtns()
     {
         storeBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store));
+        dayMissionBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DayMission));
     }
 
 
@@ -73,7 +84,7 @@
         }
     }
 
-
+    //鐢ㄤ簬鐩戝惉鐣岄潰锛屾墦寮�鏃剁缉杩涘彸杈瑰姛鑳芥爮锛屽叧闂椂鏄剧ず
     void ListenWindow(string _listenWindowName)
     {
         ShowFuncCol(false);
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index 8dbae1d..57079f0 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -24,6 +24,32 @@
     //姣斿鍔熻兘A绾㈢偣100锛屽瓙绾㈢偣1001锛屼互姝ょ被鎺紝鎴栬��100*10000 +1绫绘帹锛岄伩鍏嶉噸澶嶇殑鍙兘鎬э紝濡�1010 灏卞彲鑳藉拰鍔熻兘B涓殑绾㈢偣閲嶅
     //    鍔熻兘B绾㈢偣101锛屽瓙绾㈢偣1011锛屼互姝ょ被鎺紝鎴栬��101*10000 +1绫绘帹锛岄伩鍏嶉噸澶嶇殑鍙兘鎬�
 
+    //瀹樿亴
+    public const int RedPoint_OfficialKey = 101;
+
+
+    #region 鑳屽寘绾㈢偣
+    public const int RedPoint_MainPackKey = 102;
+    public const int RedPoint_BagFuncKey = 10201;    //鑳屽寘鍔熻兘
+    public const int RedPoint_ComposeFuncKey = 10202;   //鍚堟垚
+    public Redpoint redPointMainPack = new Redpoint(MainAffairsRedpoint, RedPoint_MainPackKey);
+
+    #endregion
+
+
+    #region 鍟嗗簵鍏ュ彛绾㈢偣
+    public const int Store_REDPOINT = 103;
+
+    #endregion
+
+    //鏃ュ父
+    public const int RedPoint_DailyKey = 104;
+    public Redpoint redPointDaily = new Redpoint(RightFuncRedpoint, RedPoint_DailyKey);
+    public const int RedPoint_DailyFuncKey = 1041;  //鏃ュ父浠诲姟
+    public const int RedPoint_WeekBPFuncKey = 1042;  //鍛ㄥ鍔憋紙鎴樹护锛�
+    public const int RedPoint_MainMissionKey = 1043;  //涓荤嚎浠诲姟濂栧姳锛堟垚灏憋級
+
+
     //姝﹀皢鍗�
     public const int HeroCardRedpoint = 200;
     public Redpoint HeroListRedpoint = new Redpoint(MainHerosRedpoint, HeroCardRedpoint);
@@ -45,34 +71,6 @@
     public Redpoint redPointFriendChat = new Redpoint(RedPoint_FriendChatKey);
     #endregion
 
-    #region 鑳屽寘绾㈢偣
-    public const int RedPoint_MainPackKey = 102;
-    public const int RedPoint_BagFuncKey = 10201;    //鑳屽寘鍔熻兘
-    public const int RedPoint_ComposeFuncKey = 10202;   //鍚堟垚
-    public Redpoint redPointMainPack = new Redpoint(MainAffairsRedpoint, RedPoint_MainPackKey);
-
-    #endregion
-
-    //瀹樿亴
-    public const int RedPoint_OfficialKey = 101;
-
-
-    #region 浠欑洘绾㈢偣
-    //澶у巺
-    public const int guildHallRedpointID = MainGuildRedpoint * 10;
-    Redpoint hallRedpoint = new Redpoint(MainGuildRedpoint, guildHallRedpointID);
-    #endregion
-
-
-
-    #region 鍟嗗簵鍏ュ彛绾㈢偣
-    public const int Store_REDPOINT = 103;
-
-
-    #endregion
-
-
-
 
     #region 寮�鏈嶆椿鍔ㄧ孩鐐�
     public const int REDPOINT_OPENSERVER = 209;
@@ -88,8 +86,19 @@
     #region 浠欑洘娲诲姩绾㈢偣
     public readonly Redpoint fairyActivityRedpoint = new Redpoint(218);
     #endregion
-        
+
     public const int BlessLVRedpoint = 399;  //绁濈绛夌骇绾㈢偣
+    
+
+    #region 浠欑洘绾㈢偣
+    //澶у巺
+    public const int guildHallRedpointID = 40;
+    Redpoint hallRedpoint = new Redpoint(MainGuildRedpoint, guildHallRedpointID);
+    public const int donateRedpointID = 400;    //鎹愮尞
+    public const int hawkerRedpointID = 401;    //琛屽晢锛堝師鐝嶅疂闃侊級
+    #endregion
+
+
     public const int DailySpecialsRedpoint = 439;  //姣忔棩鐗规儬鍏ュ彛绾㈢偣
 
     public const int BlessedLandRedpoint = 444; //娣橀噾绾㈢偣
diff --git a/Main/Utility/EnumHelper.cs b/Main/Utility/EnumHelper.cs
index c5c6a2e..5cd03cd 100644
--- a/Main/Utility/EnumHelper.cs
+++ b/Main/Utility/EnumHelper.cs
@@ -825,7 +825,9 @@
     Realm = 10, //澧冪晫 瀹樿亴
     Guild = 11,// 鍏細
     BlessLV = 12, //绁濈绛夌骇
+    DayMission = 15,//鏃ュ父
     Store = 16,//鍧婂競
+    DaySign = 17,//姣忔棩绛惧埌
     HappyFindTreasure = 18,// 鑻遍泟鎷涘嫙
     Chat = 19,//鑱婂ぉ
     AutoFight = 20,//鑷姩鎴樻枟

--
Gitblit v1.8.0