From 259419d539a4b1f506e5e2e2586ea2dbd80f6c73 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 07 十一月 2025 11:26:16 +0800
Subject: [PATCH] 236 子 【福利内容】每日任务/每周任务/章节奖励 / 【福利内容】每日任务/每周任务/章节奖励-客户端
---
Main/System/DayMission/MissionHeroRoadWin.cs | 66 +++++
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs | 33 ++
Main/System/DayMission/MissionHeroRoadCell.cs.meta | 11
Main/System/DayMission/MissionHeroRoadWin.cs.meta | 11
Main/System/Achievement.meta | 8
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs.meta | 11
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs | 29 ++
Main/Config/PartialConfigs/SuccessConfig.cs.meta | 11
Main/System/DayMission/DayMissionBaseWin.cs | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs.meta | 11
Main/System/Redpoint/RedpointCenter.cs | 12
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs.meta | 11
Main/System/Message/RichTableEvent.cs | 26 +-
Main/Config/Configs/SuccessConfig.cs | 71 -----
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs | 2
Main/Config/PartialConfigs/SuccessConfig.cs | 33 ++
Main/System/Achievement/AchievementManager.cs.meta | 11
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs.meta | 11
Main/Config/PartialConfigs/MainLevelConfig.cs | 8
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs | 12 +
Main/System/Achievement/AchievementManager.cs | 196 ++++++++++++++++
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs | 12 +
Main/System/DayMission/MissionHeroRoadCell.cs | 68 +++++
23 files changed, 587 insertions(+), 79 deletions(-)
diff --git a/Main/Config/Configs/SuccessConfig.cs b/Main/Config/Configs/SuccessConfig.cs
index 24e8428..d40fa4a 100644
--- a/Main/Config/Configs/SuccessConfig.cs
+++ b/Main/Config/Configs/SuccessConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�8鏈�5鏃�
+// [ Date ]: 2025骞�11鏈�6鏃�
//--------------------------------------------------------
using System.Collections.Generic;
@@ -18,24 +18,9 @@
public int ID;
public int Type;
- public int Group;
public int NeedCnt;
public int[] Condition;
- public string Condition2;
- public int Condition3;
- public string AwardItemList;
- public string AwardItemList2;
- public string Money;
- public int Exp;
- public int[] AwardAttribute;
- public int RedPacketID;
- public int MagicWeaponID;
- public string MagicWeaponExp;
- public string Describe;
- public int NeedGoto;
- public int Jump;
- public int ReOrder;
- public int RealmPracticeID;
+ public int[][] AwardItemList;
public override int LoadKey(string _key)
{
@@ -51,17 +36,15 @@
int.TryParse(tables[1],out Type);
- int.TryParse(tables[2],out Group);
+ int.TryParse(tables[2],out NeedCnt);
- int.TryParse(tables[3],out NeedCnt);
-
- if (tables[4].Contains("["))
+ if (tables[3].Contains("["))
{
- Condition = JsonMapper.ToObject<int[]>(tables[4]);
+ Condition = JsonMapper.ToObject<int[]>(tables[3]);
}
else
{
- string[] ConditionStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ string[] ConditionStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
Condition = new int[ConditionStringArray.Length];
for (int i=0;i<ConditionStringArray.Length;i++)
{
@@ -69,47 +52,7 @@
}
}
- Condition2 = tables[5];
-
- int.TryParse(tables[6],out Condition3);
-
- AwardItemList = tables[7];
-
- AwardItemList2 = tables[8];
-
- Money = tables[9];
-
- int.TryParse(tables[10],out Exp);
-
- if (tables[11].Contains("["))
- {
- AwardAttribute = JsonMapper.ToObject<int[]>(tables[11]);
- }
- else
- {
- string[] AwardAttributeStringArray = tables[11].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
- AwardAttribute = new int[AwardAttributeStringArray.Length];
- for (int i=0;i<AwardAttributeStringArray.Length;i++)
- {
- int.TryParse(AwardAttributeStringArray[i],out AwardAttribute[i]);
- }
- }
-
- int.TryParse(tables[12],out RedPacketID);
-
- int.TryParse(tables[13],out MagicWeaponID);
-
- MagicWeaponExp = tables[14];
-
- Describe = tables[15];
-
- int.TryParse(tables[16],out NeedGoto);
-
- int.TryParse(tables[17],out Jump);
-
- int.TryParse(tables[18],out ReOrder);
-
- int.TryParse(tables[19],out RealmPracticeID);
+ AwardItemList = JsonMapper.ToObject<int[][]>(tables[4].Replace("(", "[").Replace(")", "]"));
}
catch (Exception exception)
{
diff --git a/Main/Config/PartialConfigs/MainLevelConfig.cs b/Main/Config/PartialConfigs/MainLevelConfig.cs
index d7b205b..20abbb0 100644
--- a/Main/Config/PartialConfigs/MainLevelConfig.cs
+++ b/Main/Config/PartialConfigs/MainLevelConfig.cs
@@ -46,5 +46,13 @@
return waveLineupLists.Count(list => list.Length > 0);
}
+ // 鑾峰彇鐩爣鍏冲崱鐨勭储寮�
+ public static int GetToTargetLevelIndex(int targetLevel)
+ {
+ var levels = GetKeys();
+ levels.Sort();
+ return levels.IndexOf(targetLevel);
+
+ }
}
\ No newline at end of file
diff --git a/Main/Config/PartialConfigs/SuccessConfig.cs b/Main/Config/PartialConfigs/SuccessConfig.cs
new file mode 100644
index 0000000..96f1802
--- /dev/null
+++ b/Main/Config/PartialConfigs/SuccessConfig.cs
@@ -0,0 +1,33 @@
+using System.Collections.Generic;
+public partial class SuccessConfig : ConfigBase<int, SuccessConfig>
+{
+ public static Dictionary<int, List<int>> typeToIDsDict = new Dictionary<int, List<int>>();
+ protected override void OnConfigParseCompleted()
+ {
+ if (!typeToIDsDict.ContainsKey(Type))
+ {
+ typeToIDsDict[Type] = new List<int>();
+ }
+ typeToIDsDict[Type].Add(ID);
+ }
+
+ public static List<int> GetTypeToIDDict(int type)
+ {
+ if (typeToIDsDict.ContainsKey(type))
+ {
+ return typeToIDsDict[type];
+ }
+ return null;
+ }
+
+ //鑾峰緱鎴愬氨鏉′欢锛岄粯璁や竴涓被鍨嬪彧鏈変竴绉嶆潯浠�
+ public static string GetConditionString(int type)
+ {
+ if (typeToIDsDict.ContainsKey(type))
+ {
+ var conds = Get(typeToIDsDict[type][0]).Condition;
+ return conds.IsNullOrEmpty() ? "" : conds.ToString();
+ }
+ return "";
+ }
+}
diff --git a/Main/Config/PartialConfigs/SuccessConfig.cs.meta b/Main/Config/PartialConfigs/SuccessConfig.cs.meta
new file mode 100644
index 0000000..96808b7
--- /dev/null
+++ b/Main/Config/PartialConfigs/SuccessConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5c9f079829a75b84587ebbbd29a56119
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs
new file mode 100644
index 0000000..fae7ad7
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 40 鎴愬氨淇℃伅鍒楄〃 #tagSCSuccessInfoList
+
+public class DTCA340_tagSCSuccessInfoList : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ HA340_tagSCSuccessInfoList vNetData = vNetPack as HA340_tagSCSuccessInfoList;
+ AchievementManager.Instance.UpdateAchievement(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs.meta
new file mode 100644
index 0000000..ee3b5b2
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA340_tagSCSuccessInfoList.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2349866a7124b0c488485ddc575a80b9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs
new file mode 100644
index 0000000..3df3fba
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 42 鎴愬氨棰嗗璁板綍鍒楄〃 #tagSCSuccessAwardRecordList
+
+public class DTCA342_tagSCSuccessAwardRecordList : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ HA342_tagSCSuccessAwardRecordList vNetData = vNetPack as HA342_tagSCSuccessAwardRecordList;
+ AchievementManager.Instance.UpdateAchievementAward(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs.meta
new file mode 100644
index 0000000..519658a
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA342_tagSCSuccessAwardRecordList.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b0b463773ed6e62448f3b7158f1ab2a5
+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 81e9230..a8be8c4 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -120,6 +120,8 @@
Register(typeof(HA923_tagSCArenaPlayerInfo), typeof(DTCA923_tagSCArenaPlayerInfo));
Register(typeof(HB109_tagSCDailyTaskInfo), typeof(DTCB109_tagSCDailyTaskInfo));
Register(typeof(HB201_tagSCTianziKYInfo), typeof(DTCB201_tagSCTianziKYInfo));
+ Register(typeof(HA340_tagSCSuccessInfoList), typeof(DTCA340_tagSCSuccessInfoList));
+ Register(typeof(HA342_tagSCSuccessAwardRecordList), typeof(DTCA342_tagSCSuccessAwardRecordList));
}
//涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs
new file mode 100644
index 0000000..5ce3439
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 40 鎴愬氨淇℃伅鍒楄〃 #tagSCSuccessInfoList
+
+public class HA340_tagSCSuccessInfoList : GameNetPackBasic {
+ public ushort Count; //淇℃伅涓暟
+ public tagSCSuccessInfo[] SuccessInfoList;
+
+ public HA340_tagSCSuccessInfoList () {
+ _cmd = (ushort)0xA340;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out Count, vBytes, NetDataType.WORD);
+ SuccessInfoList = new tagSCSuccessInfo[Count];
+ for (int i = 0; i < Count; i ++) {
+ SuccessInfoList[i] = new tagSCSuccessInfo();
+ TransBytes (out SuccessInfoList[i].SuccType, vBytes, NetDataType.WORD);
+ TransBytes (out SuccessInfoList[i].CLen, vBytes, NetDataType.BYTE);
+ TransBytes (out SuccessInfoList[i].Conds, vBytes, NetDataType.DWORD, SuccessInfoList[i].CLen);
+ TransBytes (out SuccessInfoList[i].CurValue, vBytes, NetDataType.DWORD);
+ }
+ }
+
+ public class tagSCSuccessInfo {
+ public ushort SuccType; //鎴愬氨绫诲瀷
+ public byte CLen;
+ public uint[] Conds; // 鏉′欢鍒楄〃
+ public uint CurValue; // 杩涘害鍊硷紝鐩稿悓浠诲姟绫诲瀷鏉′欢鐨勮繘搴﹀�煎叡浜�
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs.meta
new file mode 100644
index 0000000..b39bad9
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA340_tagSCSuccessInfoList.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0da6e6a7f64979d4e9d2e102f68fef21
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs
new file mode 100644
index 0000000..56b58a9
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs
@@ -0,0 +1,29 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 42 鎴愬氨棰嗗璁板綍鍒楄〃 #tagSCSuccessAwardRecordList
+
+public class HA342_tagSCSuccessAwardRecordList : GameNetPackBasic {
+ public ushort RecordCnt; //璁板綍涓暟
+ public tagSCSuccessAwardRecord[] RecordList; //璁板綍鍒楄〃
+
+ public HA342_tagSCSuccessAwardRecordList () {
+ _cmd = (ushort)0xA342;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out RecordCnt, vBytes, NetDataType.WORD);
+ RecordList = new tagSCSuccessAwardRecord[RecordCnt];
+ for (int i = 0; i < RecordCnt; i ++) {
+ RecordList[i] = new tagSCSuccessAwardRecord();
+ TransBytes (out RecordList[i].RecordIndex, vBytes, NetDataType.WORD);
+ TransBytes (out RecordList[i].Record, vBytes, NetDataType.DWORD);
+ }
+ }
+
+ public class tagSCSuccessAwardRecord {
+ public ushort RecordIndex; //绗嚑涓褰曞�� 姣忎釜key瀛�31涓猻uccid 0-30涓�0, 31-61涓�1..
+ public uint Record; //鏍规嵁鎴愬氨ID浣嶅垽鏂槸鍚﹀凡棰嗗彇
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs.meta
new file mode 100644
index 0000000..a504448
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA342_tagSCSuccessAwardRecordList.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: be0a52fd85a2e37429a2ed249d0fa74f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Achievement.meta b/Main/System/Achievement.meta
new file mode 100644
index 0000000..97c8dcc
--- /dev/null
+++ b/Main/System/Achievement.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3793503c7ba33204da1ca91f1bb6aacd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Achievement/AchievementManager.cs b/Main/System/Achievement/AchievementManager.cs
new file mode 100644
index 0000000..f67a54f
--- /dev/null
+++ b/Main/System/Achievement/AchievementManager.cs
@@ -0,0 +1,196 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using System.Linq;
+
+
+public partial class AchievementManager : GameSystemManager<AchievementManager>
+{
+ //鎴愬氨绫诲瀷锛氭潯浠讹紙鍙互鏄┖锛夛細杩涘害
+ Dictionary<int, Dictionary<string, int>> achivementDict = new Dictionary<int, Dictionary<string, int>>();
+ public event Action<int> OnAchievementUpdateEvent;
+ //key:绗嚑涓褰曞�� 姣忎釜key瀛�31涓猻uccid 0-30涓�0, 31-61涓�1..; value: 鏍规嵁鎴愬氨ID浣嶅垽鏂槸鍚﹀凡棰嗗彇
+ Dictionary<int, int> achivementAwardDict = new Dictionary<int, int>();
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+ }
+
+ void OnBeforePlayerDataInitialize()
+ {
+ }
+
+ public void UpdateAchievement(HA340_tagSCSuccessInfoList netPack)
+ {
+ List<int> types = new List<int>();
+ for (int i = 0; i < netPack.Count; i++)
+ {
+ var info = netPack.SuccessInfoList[i];
+ if (!achivementDict.ContainsKey(info.SuccType))
+ {
+ achivementDict[info.SuccType] = new Dictionary<string, int>();
+ }
+
+ string key = info.CLen > 0 ? info.Conds.ToString() : "";
+ achivementDict[info.SuccType][key] = (int)info.CurValue;
+
+ OnAchievementUpdateEvent?.Invoke(info.SuccType);
+ if (!types.Contains(info.SuccType))
+ {
+ types.Add(info.SuccType);
+ }
+ }
+ UpdateRedpoint(types);
+ }
+
+ public int GetAchievementProgress(int type)
+ {
+ if (achivementDict.ContainsKey(type))
+ {
+ var condKey = SuccessConfig.GetConditionString(type);
+ if (achivementDict[type].ContainsKey(condKey))
+ {
+ return achivementDict[type][condKey];
+ }
+ }
+ return 0;
+
+ }
+
+ public void UpdateAchievementAward(HA342_tagSCSuccessAwardRecordList netPack)
+ {
+ List<int> types = new List<int>();
+ for (int i = 0; i < netPack.RecordCnt; i++)
+ {
+ var record = netPack.RecordList[i];
+ achivementAwardDict[record.RecordIndex] = (int)record.Record;
+ var startID = record.RecordIndex * 31;
+ var endID = startID + 30;
+ for (int j = startID; j <= endID; j++)
+ {
+ if (SuccessConfig.HasKey(j))
+ {
+ var type = SuccessConfig.Get(j).Type;
+ if (!types.Contains(type))
+ {
+ types.Add(type);
+ }
+ }
+ }
+ }
+ OnAchievementUpdateEvent?.Invoke(-1);
+ UpdateRedpoint(types);
+ }
+
+ //鎴愬氨鏄惁宸查鍙�
+ //姣忎釜key瀛�31涓猻uccid 0-30涓�0, 31-61涓�1..; 鏍规嵁鎴愬氨ID浣嶅垽鏂槸鍚﹀凡棰嗗彇
+ public bool IsAchievementAwarded(int id)
+ {
+ var index = id / 31;
+ var bit = id % 31;
+ if (achivementAwardDict.ContainsKey(index))
+ {
+ return (achivementAwardDict[index] & (1 << bit)) != 0;
+ }
+ return false;
+ }
+
+ //鑾峰彇鎴愬氨鐘舵�� 0: 鏈鍙� 1: 鏈揪鎴� 2: 宸查鍙�
+ public int GetAchievementState(int id)
+ {
+ var process = GetAchievementProgress(id);
+ var config = SuccessConfig.Get(id);
+ if (process < config.NeedCnt)
+ {
+ return 1;
+ }
+ if (IsAchievementAwarded(id))
+ {
+ return 2;
+ }
+ return 0;
+ }
+
+
+ //涓荤嚎绔犺妭
+ Redpoint mainLevelRedpoint = new Redpoint(MainRedDot.RedPoint_DailyKey, MainRedDot.RedPoint_MainMissionKey);
+ //绫诲瀷锛氱孩鐐筰d
+ Dictionary<int, int> redpointDict = new Dictionary<int, int>()
+ {
+ {1, MainRedDot.RedPoint_MainMissionKey}
+ };
+
+ void UpdateRedpoint(List<int> _types)
+ {
+ if (_types.IsNullOrEmpty())
+ {
+ _types = redpointDict.Keys.ToList();
+ }
+
+ foreach (var type in _types)
+ {
+ var redpoint = RedpointCenter.Instance.GetRedpoint(redpointDict[type]);
+ redpoint.state = RedPointState.None;
+ //鏍规嵁ID鍒ゆ柇鏄惁鏈夊彲棰嗗彇鐨�
+ var allAchivement = SuccessConfig.GetTypeToIDDict(type);
+ var process = GetAchievementProgress(type);
+ foreach (var id in allAchivement)
+ {
+ var config = SuccessConfig.Get(id);
+ if (config.NeedCnt <= process)
+ {
+ if (!IsAchievementAwarded(id))
+ {
+ redpoint.state = RedPointState.Simple;
+ break;
+ }
+ }
+ }
+
+ }
+ }
+
+ //鏍规嵁绫诲瀷鑾峰彇鎵�鏈夋垚灏盜D, 涓旀槸鎺掑簭鍚庣殑 鏈鍙�>鏈揪鎴�>宸查鍙�
+ public List<int> GetAchievementIDs(int type)
+ {
+ var ids = SuccessConfig.GetTypeToIDDict(type);
+ ids.Sort(CmpIds);
+ return ids;
+ }
+
+ int CmpIds(int a, int b)
+ {
+ var stateA = GetAchievementState(a);
+ var stateB = GetAchievementState(b);
+
+ if (stateA != stateB)
+ {
+ return stateA - stateB;
+ }
+
+ return a - b;
+ }
+
+ public void SendGetAward(int id)
+ {
+ var config = SuccessConfig.Get(id);
+ //绠�鍗曞垽鏂儗鍖�
+ if (PackManager.Instance.GetEmptyGridCount(PackType.Item) < config.AwardItemList.Length)
+ {
+ SysNotifyMgr.Instance.ShowTip("GeRen_lhs_202580");
+ return;
+ }
+
+ var pack = new CA504_tagCMPlayerGetReward();
+ pack.RewardType = 59;
+ pack.DataEx = (uint)id;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+}
+
diff --git a/Main/System/Achievement/AchievementManager.cs.meta b/Main/System/Achievement/AchievementManager.cs.meta
new file mode 100644
index 0000000..e3f06ab
--- /dev/null
+++ b/Main/System/Achievement/AchievementManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cf5275bc4183a394c83cbfa9707c3f13
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/DayMission/DayMissionBaseWin.cs b/Main/System/DayMission/DayMissionBaseWin.cs
index c88fd30..7ccb3f8 100644
--- a/Main/System/DayMission/DayMissionBaseWin.cs
+++ b/Main/System/DayMission/DayMissionBaseWin.cs
@@ -27,7 +27,7 @@
break;
case 2:
//涓荤嚎浠诲姟锛堣嫳闆勪箣璺級
- currentSubUI = UIManager.Instance.OpenWindow<DayMissionWin>();
+ currentSubUI = UIManager.Instance.OpenWindow<MissionHeroRoadWin>();
titleText.text = Language.Get("DayMission4");
break;
default:
diff --git a/Main/System/DayMission/MissionHeroRoadCell.cs b/Main/System/DayMission/MissionHeroRoadCell.cs
new file mode 100644
index 0000000..68fe83a
--- /dev/null
+++ b/Main/System/DayMission/MissionHeroRoadCell.cs
@@ -0,0 +1,68 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class MissionHeroRoadCell : CellView
+{
+ [SerializeField] Text nameText;
+ [SerializeField] Image processImg;
+ [SerializeField] Text processText;
+ [SerializeField] ItemCell[] itemCells;
+ [SerializeField] Transform[] gotRects;
+
+ [SerializeField] Button getBtn;
+ [SerializeField] Button gotoBtn;
+ [SerializeField] Transform gotRect;
+ [SerializeField] Transform mask;
+
+
+ public void Display(int id)
+ {
+ var config = SuccessConfig.Get(id);
+ nameText.text = Language.Get("Achievement1", config.NeedCnt / 100, config.NeedCnt % 100);
+
+ var targetLevel = MainLevelConfig.GetToTargetLevelIndex(config.NeedCnt) + 1;
+ var curLevel = MainLevelConfig.GetToTargetLevelIndex(AchievementManager.Instance.GetAchievementProgress(config.Type)) + 1;
+
+ processImg.fillAmount = (float)curLevel / targetLevel;
+ processText.text = Math.Min(targetLevel, curLevel) + "/" + targetLevel;
+
+ var state = AchievementManager.Instance.GetAchievementState(id);
+ for (int i = 0; i < itemCells.Length; i++)
+ {
+ if (i < config.AwardItemList.Length)
+ {
+ itemCells[i].SetActive(true);
+ int itemID = config.AwardItemList[i][0];
+ itemCells[i].Init(new ItemCellModel(itemID, false, config.AwardItemList[i][1]));
+ itemCells[i].button.AddListener(() =>
+ {
+ ItemTipUtility.Show(itemID);
+ });
+ gotRects[i].SetActive(state == 2);
+ }
+ else
+ {
+ itemCells[i].SetActive(false);
+ }
+ }
+
+ getBtn.SetActive(state == 0);
+ gotoBtn.SetActive(state == 1);
+ gotRect.SetActive(state == 2);
+ mask.SetActive(state == 2);
+
+
+ getBtn.AddListener(() =>
+ {
+ AchievementManager.Instance.SendGetAward(id);
+ });
+ }
+
+
+}
+
+
diff --git a/Main/System/DayMission/MissionHeroRoadCell.cs.meta b/Main/System/DayMission/MissionHeroRoadCell.cs.meta
new file mode 100644
index 0000000..2fc8ed3
--- /dev/null
+++ b/Main/System/DayMission/MissionHeroRoadCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e5424536ae280184192560cd8373d771
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/DayMission/MissionHeroRoadWin.cs b/Main/System/DayMission/MissionHeroRoadWin.cs
new file mode 100644
index 0000000..d028288
--- /dev/null
+++ b/Main/System/DayMission/MissionHeroRoadWin.cs
@@ -0,0 +1,66 @@
+锘縰sing System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+//涓荤嚎浠诲姟锛氳嫳闆勪箣璺�
+public class MissionHeroRoadWin : UIBase
+{
+ [SerializeField] ScrollerController scroller;
+
+
+ List<int> ids = new List<int>();
+ protected override void OnPreOpen()
+ {
+ scroller.OnRefreshCell += OnRefreshCell;
+ AchievementManager.Instance.OnAchievementUpdateEvent += OnAchievementUpdateEvent;
+ CreateScroller();
+
+
+ }
+
+ protected override void OnPreClose()
+ {
+ scroller.OnRefreshCell -= OnRefreshCell;
+ AchievementManager.Instance.OnAchievementUpdateEvent -= OnAchievementUpdateEvent;
+
+ }
+
+
+
+
+
+ void OnAchievementUpdateEvent(int type)
+ {
+ if (type == 1 || type == -1)
+ {
+ ids = AchievementManager.Instance.GetAchievementIDs(1);
+ scroller.m_Scorller.RefreshActiveCellViews();
+ }
+ }
+
+ void CreateScroller()
+ {
+ ids = AchievementManager.Instance.GetAchievementIDs(1);
+ var count = ids.Count;
+ scroller.Refresh();
+ for (int i = 0; i < count; i++)
+ {
+ scroller.AddCell(ScrollerDataType.Header, i);
+ }
+ scroller.Restart();
+
+ }
+
+
+ void OnRefreshCell(ScrollerDataType type, CellView cell)
+ {
+ var _cell = cell as MissionHeroRoadCell;
+ _cell.Display(ids[cell.index]);
+ }
+}
+
+
+
+
+
diff --git a/Main/System/DayMission/MissionHeroRoadWin.cs.meta b/Main/System/DayMission/MissionHeroRoadWin.cs.meta
new file mode 100644
index 0000000..affa6e8
--- /dev/null
+++ b/Main/System/DayMission/MissionHeroRoadWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 803a78750ea407f49b5ddf73889160d9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Message/RichTableEvent.cs b/Main/System/Message/RichTableEvent.cs
index c298614..b43baf6 100644
--- a/Main/System/Message/RichTableEvent.cs
+++ b/Main/System/Message/RichTableEvent.cs
@@ -224,19 +224,19 @@
// }
}
break;
- case "success":
- {
- var _id = 0;
- if (_dict.ContainsKey("id") && int.TryParse(_dict["id"], out _id))
- {
- var _cfg = SuccessConfig.Get(_id);
- if (_cfg != null)
- {
- return _cfg.Describe;
- }
- }
- }
- break;
+ // case "success":
+ // {
+ // var _id = 0;
+ // if (_dict.ContainsKey("id") && int.TryParse(_dict["id"], out _id))
+ // {
+ // var _cfg = SuccessConfig.Get(_id);
+ // if (_cfg != null)
+ // {
+ // return _cfg.Describe;
+ // }
+ // }
+ // }
+ // break;
case "treasureprivilege":
{
diff --git a/Main/System/Redpoint/RedpointCenter.cs b/Main/System/Redpoint/RedpointCenter.cs
index c0a7f71..9447982 100644
--- a/Main/System/Redpoint/RedpointCenter.cs
+++ b/Main/System/Redpoint/RedpointCenter.cs
@@ -107,7 +107,7 @@
{
TestParentValue(_redpoint.parent);
}
-
+
if (_redpoint.otherParent > 0)
{
TestParentValue(_redpoint.otherParent);
@@ -176,4 +176,14 @@
}
}
+ public Redpoint GetRedpoint(int _id)
+ {
+ Redpoint redpoint = null;
+ if (this.redpoints.TryGetValue(_id, out redpoint))
+ {
+ return redpoint;
+ }
+
+ return null;
+ }
}
--
Gitblit v1.8.0