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