From 68ceec72d78d328f9eaa05fce40caf99fe333ba1 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期六, 11 十月 2025 19:21:30 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/BoneField/AdsManager.cs | 70 ++
Main/System/BoneField/AdsManager.cs.meta | 2
Main/System/Redpoint/MainRedDot.cs | 2
Main/Component/UI/Common/FuncOpen.cs | 53 +
Main/Component/UI/Common/PopupWindowsProcessor.cs | 4
Main/System/BoneField/BoneFieldManager.cs.meta | 2
Main/System/Battle/BattleField/StoryBoneBattleField.cs | 124 +++
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BD_tagMCBuyEnterInfo.cs | 2
Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs.meta | 2
Main/System/Dungeon/DungeonManager.cs.meta | 0
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs.meta | 2
Main/Config/Configs/ADAwardConfig.cs | 47 +
Main/Config/Configs/DungeonOpenTimeConfig.cs | 65 +
Main/System/Tip/ConfirmCancel.cs | 1
Main/System/FirstCharge/FirstChargeManager.cs | 43
Main/Config/Configs/DungeonConfig.cs.meta | 2
Main/Config/PartialConfigs/ADAwardConfig.cs.meta | 2
Main/Manager/UIManager.cs | 28
Main/System/ChallengeTab/ChallengeTabWin.cs.meta | 2
Main/System/BoneField/BoneFieldWin.cs | 268 +++++++
Main/Config/Configs/GuideConfig.cs | 5
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs.meta | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs | 13
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs | 24
Main/System/BoneField/BoneFieldChallengeButton.cs.meta | 2
Main/System/ChallengeTab.meta | 8
Main/System/NewBieGuidance/NewBieCenter.cs | 197 ++++-
Main/System/NewBieGuidance/NewBieWin.cs | 15
Main/System/Equip/EquipModel.cs | 5
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs.meta | 2
Main/Config/ConfigManager.cs | 9
Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs | 19
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs.meta | 2
Main/System/Mail/MailManager.cs | 14
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs | 41 +
Main/System/BoneField/BoneFieldWin.cs.meta | 2
Main/Config/PartialConfigs/ADAwardConfig.cs | 13
Main/System/Battle/BattleField/BattleField.cs | 31
Main/System/Battle/BattleFieldFactory.cs | 15
Main/System/BoneField/BoneFieldManager.cs | 200 +++++
Main/Config/PartialConfigs/DungeonConfig.cs | 25
Main/Main.cs | 7
Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs | 29
Main/System/ChallengeTab/ChallengeTabButton.cs | 35 +
Main/System/BoneField.meta | 8
Main/System/BoneField/BoneFieldChallengeButton.cs | 55 +
Main/System/Equip/EquipExchangeWin.cs | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs.meta | 2
Main/Config/PartialConfigs/DungeonConfig.cs.meta | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs | 13
Main/System/Dungeon/DungeonManager.cs | 108 +++
Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs | 12
Main/Config/Configs/ADAwardConfig.cs.meta | 2
Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs.meta | 2
Main/System/ChallengeTab/ChallengeTabWin.cs | 92 ++
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs | 18
Main/System/Dungeon/DungeonData.cs | 76 +-
/dev/null | 71 --
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs | 5
Main/Component/UI/Decorate/Graph/CircleHollowImage.cs | 9
Main/Config/Configs/DungeonConfig.cs | 77 ++
Main/System/Main/MainWin.cs | 9
Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs.meta | 2
Main/System/Battle/BattleField/StoryBoneBattleField.cs.meta | 2
Main/System/ChallengeTab/ChallengeTabButton.cs.meta | 2
Main/Config/Configs/DungeonOpenTimeConfig.cs.meta | 2
66 files changed, 1,759 insertions(+), 248 deletions(-)
diff --git a/Main/Component/UI/Common/FuncOpen.cs b/Main/Component/UI/Common/FuncOpen.cs
index 84ddee8..15dd64a 100644
--- a/Main/Component/UI/Common/FuncOpen.cs
+++ b/Main/Component/UI/Common/FuncOpen.cs
@@ -220,6 +220,59 @@
}
}
+
+ public string GetErrorTip(int key)
+ {
+ if (!FuncOpenLVConfig.HasKey(key))
+ return string.Empty;
+ FuncOpenLVConfig config = FuncOpenLVConfig.Get(key);
+ if (!IsFuncOpen(key, out int errorCode))
+ {
+ switch (errorCode)
+ {
+ case 1:
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_Level", config.LimitLV),
+ Language.Get("FuncLimitOpen1"));
+ case 2:
+ //寮�鏈嶅灏戝ぉ 涓�鑸槸缁勫悎
+ if (config.LimitLV != 0)
+ {
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_OpenDay", config.OpenDay),
+ Language.Get("FuncLimitOpen2"),
+ Language.Get("FuncLimit_Level", config.LimitLV),
+ Language.Get("FuncLimitOpen1"));
+
+ }
+ else if (config.LimitMissionID != 0)
+ {
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_OpenDay", config.OpenDay),
+ Language.Get("FuncLimitOpen2"),
+ Language.Get("FuncLimit_Mission",
+ TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID)),
+ Language.Get("FuncLimitOpen1"));
+ }
+ else
+ {
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_OpenDay", config.OpenDay),
+ Language.Get("FuncLimitOpen1"));
+ }
+ case 3:
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_Realm", RealmConfig.Get(config.LimiRealmLV).Name),
+ Language.Get("FuncLimitOpen1"));
+ case 4:
+ return StringUtility.Contact(
+ Language.Get("FuncLimit_Mission", TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID)),
+ Language.Get("FuncLimitOpen1"));
+ }
+ }
+ return string.Empty;
+ }
+
public int GetLimitLv(int key)
{
// FuncOpenLVConfig tagFuncOpenLVModel = FuncOpenLVConfig.Get(key);
diff --git a/Main/Component/UI/Common/PopupWindowsProcessor.cs b/Main/Component/UI/Common/PopupWindowsProcessor.cs
index 480b430..413d3be 100644
--- a/Main/Component/UI/Common/PopupWindowsProcessor.cs
+++ b/Main/Component/UI/Common/PopupWindowsProcessor.cs
@@ -95,12 +95,16 @@
if (!UIManager.Instance.IsOpened<HomeWin>())
return;
+
if (UIManager.Instance.IsOpened(popupWindowQueue[0].window))
{
//褰撳墠妯″紡鍙互鎵撳紑澶氫釜鐩稿悓绐楀彛锛屽鍔犻槻鑼�
return;
}
+ if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(popupWindowQueue[0].window))
+ return;
+
if (currentWindow.window != null)
{
//鍒ゆ柇涓婁竴涓帹閫佹槸鍚﹀叧闂�
diff --git a/Main/Component/UI/Decorate/Graph/CircleHollowImage.cs b/Main/Component/UI/Decorate/Graph/CircleHollowImage.cs
index f2e1b7f..012f902 100644
--- a/Main/Component/UI/Decorate/Graph/CircleHollowImage.cs
+++ b/Main/Component/UI/Decorate/Graph/CircleHollowImage.cs
@@ -58,13 +58,14 @@
var width = image.rectTransform.rect.width;
var height = image.rectTransform.rect.height;
- var outerArea = new Vector2(0.5f * width,0.5f * height);
+ var outerArea = new Vector2(0.5f * width, 0.5f * height);
- var realCenter = new Vector2(Mathf.Clamp(center.x,-width * 0.5f + cell.x,width * 0.5f - cell.x),
- Mathf.Clamp(center.y,-height * 0.5f + cell.y,height * 0.5f - cell.y));
+ // var realCenter = new Vector2(Mathf.Clamp(center.x,-width * 0.5f + cell.x,width * 0.5f - cell.x),
+ // Mathf.Clamp(center.y,-height * 0.5f + cell.y,height * 0.5f - cell.y));
+
+ var realCenter = center;
var uv = image.overrideSprite != null ? DataUtility.GetOuterUV(image.overrideSprite) : Vector4.zero;
-
var uvCenterX = (uv.x + uv.z) * 0.5f;
var uvCenterY = (uv.y + uv.w) * 0.5f;
var uvScaleX = (uv.z - uv.x) / width;
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index 96b0275..11a4bcf 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -38,10 +38,13 @@
// 鍔犺浇閰嶇疆鏂囦欢
HashSet<Type> configTypes = new HashSet<Type>() {
+ typeof(ADAwardConfig),
typeof(ChestsAwardConfig),
typeof(CTGConfig),
typeof(DamageNumConfig),
typeof(DirtyWordConfig),
+ typeof(DungeonConfig),
+ typeof(DungeonOpenTimeConfig),
typeof(FaceConfig),
typeof(FightPowerRatioConfig),
typeof(FirstChargeConfig),
@@ -218,6 +221,8 @@
public override void Release()
{
+ // 娓呯┖ ADAwardConfig 瀛楀吀
+ ClearConfigDictionary<ADAwardConfig>();
// 娓呯┖ ChestsAwardConfig 瀛楀吀
ClearConfigDictionary<ChestsAwardConfig>();
// 娓呯┖ CTGConfig 瀛楀吀
@@ -226,6 +231,10 @@
ClearConfigDictionary<DamageNumConfig>();
// 娓呯┖ DirtyWordConfig 瀛楀吀
ClearConfigDictionary<DirtyWordConfig>();
+ // 娓呯┖ DungeonConfig 瀛楀吀
+ ClearConfigDictionary<DungeonConfig>();
+ // 娓呯┖ DungeonOpenTimeConfig 瀛楀吀
+ ClearConfigDictionary<DungeonOpenTimeConfig>();
// 娓呯┖ FaceConfig 瀛楀吀
ClearConfigDictionary<FaceConfig>();
// 娓呯┖ FightPowerRatioConfig 瀛楀吀
diff --git a/Main/Config/Configs/ADAwardConfig.cs b/Main/Config/Configs/ADAwardConfig.cs
new file mode 100644
index 0000000..6d15479
--- /dev/null
+++ b/Main/Config/Configs/ADAwardConfig.cs
@@ -0,0 +1,47 @@
+锘�//--------------------------------------------------------
+// [Author]: YYL
+// [ Date ]: 2025骞�10鏈�9鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class ADAwardConfig : ConfigBase<int, ADAwardConfig>
+{
+ static ADAwardConfig()
+ {
+ // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+ visit = true;
+ }
+
+ public int ADID;
+ public int ADCntMax;
+ public int[][] ADAwardItemList;
+ public int ADMapID;
+
+ 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 ADID);
+
+ int.TryParse(tables[1],out ADCntMax);
+
+ ADAwardItemList = JsonMapper.ToObject<int[][]>(tables[2].Replace("(", "[").Replace(")", "]"));
+
+ int.TryParse(tables[3],out ADMapID);
+ }
+ catch (Exception exception)
+ {
+ Debug.LogError(exception);
+ }
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Config/Configs/ADAwardConfig.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Config/Configs/ADAwardConfig.cs.meta
index 0ec0b24..aa1216b 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Config/Configs/ADAwardConfig.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 58245db2532a8194bb46fcdd9c7cb783
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Config/Configs/DungeonConfig.cs b/Main/Config/Configs/DungeonConfig.cs
new file mode 100644
index 0000000..9c1aafa
--- /dev/null
+++ b/Main/Config/Configs/DungeonConfig.cs
@@ -0,0 +1,77 @@
+锘�//--------------------------------------------------------
+// [Author]: YYL
+// [ Date ]: Thursday, October 9, 2025
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class DungeonConfig : ConfigBase<int, DungeonConfig>
+{
+ static DungeonConfig()
+ {
+ // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+ visit = true;
+ }
+
+ public int ID;
+ public int DataMapID;
+ public int LineID;
+ public int LVLimitMin;
+ public int[][] PassAwardList;
+ public int[][] SweepAwardList;
+ public int[] LineupIDList;
+ public int NPCLV;
+ public float Difficulty;
+ public long FightPower;
+
+ 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 DataMapID);
+
+ int.TryParse(tables[2],out LineID);
+
+ int.TryParse(tables[3],out LVLimitMin);
+
+ PassAwardList = JsonMapper.ToObject<int[][]>(tables[4].Replace("(", "[").Replace(")", "]"));
+
+ SweepAwardList = JsonMapper.ToObject<int[][]>(tables[5].Replace("(", "[").Replace(")", "]"));
+
+ if (tables[6].Contains("["))
+ {
+ LineupIDList = JsonMapper.ToObject<int[]>(tables[6]);
+ }
+ else
+ {
+ string[] LineupIDListStringArray = tables[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ LineupIDList = new int[LineupIDListStringArray.Length];
+ for (int i=0;i<LineupIDListStringArray.Length;i++)
+ {
+ int.TryParse(LineupIDListStringArray[i],out LineupIDList[i]);
+ }
+ }
+
+ int.TryParse(tables[7],out NPCLV);
+
+ float.TryParse(tables[8],out Difficulty);
+
+ long.TryParse(tables[9],out FightPower);
+ }
+ catch (Exception exception)
+ {
+ Debug.LogError(exception);
+ }
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Config/Configs/DungeonConfig.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Config/Configs/DungeonConfig.cs.meta
index 0ec0b24..ecb8405 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Config/Configs/DungeonConfig.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 9ae93b5f387064c48a7145a724c1cb1d
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Config/Configs/DungeonOpenTimeConfig.cs b/Main/Config/Configs/DungeonOpenTimeConfig.cs
new file mode 100644
index 0000000..7408a8f
--- /dev/null
+++ b/Main/Config/Configs/DungeonOpenTimeConfig.cs
@@ -0,0 +1,65 @@
+锘�//--------------------------------------------------------
+// [Author]: YYL
+// [ Date ]: 2025骞�10鏈�9鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class DungeonOpenTimeConfig : ConfigBase<int, DungeonOpenTimeConfig>
+{
+ static DungeonOpenTimeConfig()
+ {
+ // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+ visit = true;
+ }
+
+ public int DataMapID;
+ public string FBName;
+ public int DayTimes;
+ public int PayCntMax;
+ public int PayMoneyType;
+ public int[] PayMoneyValues;
+
+ 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 DataMapID);
+
+ FBName = tables[1];
+
+ int.TryParse(tables[2],out DayTimes);
+
+ int.TryParse(tables[3],out PayCntMax);
+
+ int.TryParse(tables[4],out PayMoneyType);
+
+ if (tables[5].Contains("["))
+ {
+ PayMoneyValues = JsonMapper.ToObject<int[]>(tables[5]);
+ }
+ else
+ {
+ string[] PayMoneyValuesStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ PayMoneyValues = new int[PayMoneyValuesStringArray.Length];
+ for (int i=0;i<PayMoneyValuesStringArray.Length;i++)
+ {
+ int.TryParse(PayMoneyValuesStringArray[i],out PayMoneyValues[i]);
+ }
+ }
+ }
+ catch (Exception exception)
+ {
+ Debug.LogError(exception);
+ }
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Config/Configs/DungeonOpenTimeConfig.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Config/Configs/DungeonOpenTimeConfig.cs.meta
index 0ec0b24..c11dba8 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Config/Configs/DungeonOpenTimeConfig.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 70933c16af3ce7c4e8465995422fdc20
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Config/Configs/GuideConfig.cs b/Main/Config/Configs/GuideConfig.cs
index 422390e..6ae4012 100644
--- a/Main/Config/Configs/GuideConfig.cs
+++ b/Main/Config/Configs/GuideConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�10鏈�9鏃�
+// [ Date ]: 2025骞�10鏈�11鏃�
//--------------------------------------------------------
using System.Collections.Generic;
@@ -23,6 +23,7 @@
public string WinName;
public int PreGuideId;
public int[] Steps;
+ public int NoRecord;
public override int LoadKey(string _key)
{
@@ -59,6 +60,8 @@
int.TryParse(StepsStringArray[i],out Steps[i]);
}
}
+
+ int.TryParse(tables[7],out NoRecord);
}
catch (Exception exception)
{
diff --git a/Main/Config/PartialConfigs/ADAwardConfig.cs b/Main/Config/PartialConfigs/ADAwardConfig.cs
new file mode 100644
index 0000000..fb03ed8
--- /dev/null
+++ b/Main/Config/PartialConfigs/ADAwardConfig.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+public partial class ADAwardConfig : ConfigBase<int, ADAwardConfig>
+{
+ private static Dictionary<int, int> idDict = new Dictionary<int, int>();
+ protected override void OnConfigParseCompleted()
+ {
+ idDict[ADMapID] = ADID;
+ }
+ public static bool TryGetADIDByADMapID(int ADMapID, out int ADID)
+ {
+ return idDict.TryGetValue(ADMapID, out ADID) && ADID > 0;
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Config/PartialConfigs/ADAwardConfig.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Config/PartialConfigs/ADAwardConfig.cs.meta
index 0ec0b24..70bab71 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Config/PartialConfigs/ADAwardConfig.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: d2ce6f478897b7f448e77181bfe1c30c
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Config/PartialConfigs/DungeonConfig.cs b/Main/Config/PartialConfigs/DungeonConfig.cs
new file mode 100644
index 0000000..2c1bab2
--- /dev/null
+++ b/Main/Config/PartialConfigs/DungeonConfig.cs
@@ -0,0 +1,25 @@
+
+
+using System.Collections.Generic;
+
+public partial class DungeonConfig : ConfigBase<int, DungeonConfig>
+{
+ private static Dictionary<int, Dictionary<int, int>> dungeonIndexDict = new Dictionary<int, Dictionary<int, int>>();
+ protected override void OnConfigParseCompleted()
+ {
+ if (!dungeonIndexDict.ContainsKey(DataMapID))
+ dungeonIndexDict[DataMapID] = new Dictionary<int, int>();
+ dungeonIndexDict[DataMapID][LineID] = ID;
+ }
+
+ public static bool TryGetDungeonID(int mapID, int lineID, out int dungeonID)
+ {
+ dungeonID = 0;
+ return dungeonIndexDict.TryGetValue(mapID, out var dict) && dict.TryGetValue(lineID, out dungeonID);
+ }
+
+ public static Dictionary<int, Dictionary<int, int>> GetDungeonIndexDict()
+ {
+ return dungeonIndexDict;
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Config/PartialConfigs/DungeonConfig.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Config/PartialConfigs/DungeonConfig.cs.meta
index 0ec0b24..92da8e4 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Config/PartialConfigs/DungeonConfig.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 772733fef93f97a44a533b8a0cb581d8
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs
new file mode 100644
index 0000000..3174492
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs
@@ -0,0 +1,24 @@
+using UnityEngine;
+using System.Collections;
+
+//A5 05 鐜╁寮�濮嬪壇鏈壂鑽� #tagCMBeginFBWipeOut
+
+public class CA505_tagCMBeginFBWipeOut : GameNetPackBasic {
+ public uint MapID;
+ public ushort LineID;
+ public byte Cnt; // 鎵崱娆℃暟
+ public uint DataEx; //闄勫甫淇℃伅
+
+ public CA505_tagCMBeginFBWipeOut () {
+ combineCmd = (ushort)0x03FE;
+ _cmd = (ushort)0xA505;
+ }
+
+ public override void WriteToBytes () {
+ WriteBytes (MapID, NetDataType.DWORD);
+ WriteBytes (LineID, NetDataType.WORD);
+ WriteBytes (Cnt, NetDataType.BYTE);
+ WriteBytes (DataEx, NetDataType.DWORD);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs.meta
index 0ec0b24..9decb0f 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA505_tagCMBeginFBWipeOut.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 84b77d2d7dc7a8a4c8b7444ad736fb32
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs
new file mode 100644
index 0000000..c160bb9
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs
@@ -0,0 +1,18 @@
+using UnityEngine;
+using System.Collections;
+
+//A5 75 璐拱鍓湰杩涘叆娆℃暟#tagCMBuyEnterCount
+
+public class CA575_tagCMBuyEnterCount : GameNetPackBasic {
+ public uint FBID; // 鍓湰ID
+
+ public CA575_tagCMBuyEnterCount () {
+ combineCmd = (ushort)0x03FE;
+ _cmd = (ushort)0xA575;
+ }
+
+ public override void WriteToBytes () {
+ WriteBytes (FBID, NetDataType.DWORD);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs.meta
index 0ec0b24..44a3acf 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA575_tagCMBuyEnterCount.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 7429b3dc8036bc14683b9b61fd99b5ce
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs
new file mode 100644
index 0000000..18410c3
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+//03 20 鍓湰缁撴潫鐣岄潰#tagFBEnd
+
+public class DTC0320_tagFBEnd : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ H0320_tagFBEnd vNetData = vNetPack as H0320_tagFBEnd;
+ BoneFieldManager.Instance.UpdateFBEnd(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs.meta
index 0ec0b24..ac8c6d7 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0320_tagFBEnd.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 54b386c0b723a164e91c93600ecb8711
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs
deleted file mode 100644
index 9ceefea..0000000
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-// A3 20 鐜╁鍓湰鐩稿叧淇℃伅 #tagMCPlayerFBInfoData
-
-public class DTCA320_tagMCPlayerFBInfoData : DtcBasic {
- public override void Done(GameNetPackBasic vNetPack)
- {
- base.Done(vNetPack);
- HA320_tagMCPlayerFBInfoData vNetData = vNetPack as HA320_tagMCPlayerFBInfoData;
- DungeonModel.Instance.UpdateRecords(vNetData.FBDataList);
- }
-}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs
new file mode 100644
index 0000000..9aa0cd4
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 20 鐜╁鍓湰鐩稿叧淇℃伅 #tagSCFBInfoList
+
+public class DTCA320_tagSCFBInfoList : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack)
+ {
+ base.Done(vNetPack);
+ HA320_tagSCFBInfoList vNetData = vNetPack as HA320_tagSCFBInfoList;
+ DungeonManager.Instance.UpdateFBInfoList(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs.meta
index 0ec0b24..819a00d 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagSCFBInfoList.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 84dc35982f18cad45aac9a2b90869ebd
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BD_tagMCBuyEnterInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BD_tagMCBuyEnterInfo.cs
index baa3dc1..f790254 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BD_tagMCBuyEnterInfo.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BD_tagMCBuyEnterInfo.cs
@@ -8,6 +8,6 @@
{
base.Done(vNetPack);
HA3BD_tagMCBuyEnterInfo vNetData = vNetPack as HA3BD_tagMCBuyEnterInfo;
- DungeonModel.Instance.UpdateRecords(vNetData.FBInfo);
+ DungeonManager.Instance.UpdateRecords(vNetData.FBInfo);
}
}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs
new file mode 100644
index 0000000..33d437c
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// A7 22 骞垮憡淇℃伅鍒楄〃 #tagSCADInfoList
+
+public class DTCA722_tagSCADInfoList : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack)
+ {
+ base.Done(vNetPack);
+ HA722_tagSCADInfoList vNetData = vNetPack as HA722_tagSCADInfoList;
+ AdsManager.Instance.UpdateAdsInfoList(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs.meta
index 0ec0b24..3df859a 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA722_tagSCADInfoList.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: abc4ee77ef8582c41a1af696e0b18ea4
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index a853f2c..05bed4d 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -57,7 +57,7 @@
Register(typeof(HAA02_tagSCFirstChargeInfo), typeof(DTCAA02_tagSCFirstChargeInfo));
Register(typeof(HAA03_tagMCDailyPackBuyGiftInfo), typeof(DTCAA03_tagMCDailyPackBuyGiftInfo));
Register(typeof(HA302_tagMCFuncOpenStateList), typeof(DTCA302_tagMCFuncOpenStateList));
- Register(typeof(HA320_tagMCPlayerFBInfoData), typeof(DTCA320_tagMCPlayerFBInfoData));
+ Register(typeof(HA320_tagSCFBInfoList), typeof(DTCA320_tagSCFBInfoList));
Register(typeof(H0F03_tagRoleFamilyInfo), typeof(DTC0F03_tagRoleFamilyInfo));
Register(typeof(H0F05_tagFamilyChange), typeof(DTC0F05_tagFamilyChange));
Register(typeof(H0F07_tagFamilyRenameResult), typeof(DTC0F07_tagFamilyRenameResult));
@@ -116,6 +116,9 @@
Register(typeof(HB123_tagSCDropBootyInfo), typeof(DTCB123_tagSCDropBootyInfo));
Register(typeof(HB036_tagSCGoldRushInfo), typeof(DTCB036_tagSCGoldRushInfo));
Register(typeof(HB037_tagSCGoldRushCampInfo), typeof(DTCB037_tagSCGoldRushCampInfo));
+ Register(typeof(HA722_tagSCADInfoList), typeof(DTCA722_tagSCADInfoList));
+ Register(typeof(H0320_tagFBEnd), typeof(DTC0320_tagFBEnd));
+
}
//涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs b/Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs
new file mode 100644
index 0000000..0d6c6c9
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs
@@ -0,0 +1,19 @@
+using UnityEngine;
+using System.Collections;
+
+//03 20 鍓湰缁撴潫鐣岄潰#tagFBEnd
+
+public class H0320_tagFBEnd : GameNetPackBasic {
+ public ushort Len;
+ public string Msg; //size = Len
+
+ public H0320_tagFBEnd () {
+ _cmd = (ushort)0x0320;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out Len, vBytes, NetDataType.WORD);
+ TransBytes (out Msg, vBytes, NetDataType.Chars, Len);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs.meta
index 0ec0b24..9efe7fc 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/ServerPack/H03_MainCharacter/H0320_tagFBEnd.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 937362d4f44267349a0e6caf03f53599
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs
deleted file mode 100644
index 96136b4..0000000
--- a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-// A3 20 鐜╁鍓湰鐩稿叧淇℃伅 #tagMCPlayerFBInfoData
-
-public class HA320_tagMCPlayerFBInfoData : GameNetPackBasic {
- public byte FBDataCnt; // 鍓湰鏁版嵁涓暟
- public tagMCFBInfo[] FBDataList; // 鍓湰鏁版嵁鍒楄〃
-
- public HA320_tagMCPlayerFBInfoData () {
- _cmd = (ushort)0xA320;
- }
-
- public override void ReadFromBytes (byte[] vBytes) {
- TransBytes (out FBDataCnt, vBytes, NetDataType.BYTE);
- FBDataList = new tagMCFBInfo[FBDataCnt];
- for (int i = 0; i < FBDataCnt; i ++) {
- FBDataList[i] = new tagMCFBInfo();
- TransBytes (out FBDataList[i].FBID, vBytes, NetDataType.DWORD);
- TransBytes (out FBDataList[i].EnterCnt, vBytes, NetDataType.WORD);
- TransBytes (out FBDataList[i].RecoverCnt, vBytes, NetDataType.WORD);
- TransBytes (out FBDataList[i].ItemAddCnt, vBytes, NetDataType.WORD);
- TransBytes (out FBDataList[i].PassGradeCnt, vBytes, NetDataType.BYTE);
- TransBytes (out FBDataList[i].PassGrade, vBytes, NetDataType.DWORD, FBDataList[i].PassGradeCnt);
- TransBytes (out FBDataList[i].EnterCntTotal, vBytes, NetDataType.DWORD);
- TransBytes (out FBDataList[i].PassLineID, vBytes, NetDataType.DWORD);
- }
- }
-
- public class tagMCFBInfo {
- public uint FBID; //fbId
- public ushort EnterCnt; //褰撴棩杩涘叆娆℃暟
- public ushort RecoverCnt; //鎵惧洖娆℃暟
- public ushort ItemAddCnt; //鐗╁搧澧炲姞娆℃暟
- public byte PassGradeCnt; //鏄熺骇鍊煎搴斾釜鏁�, 姣忎釜key瀛�9涓猯ineID
- public uint[] PassGrade; //鍓湰绾胯矾瀵瑰簲鏄熺骇鍊煎垪琛�
- public uint EnterCntTotal; //绱杩涘叆娆℃暟
- public uint PassLineID; //宸茶繃鍏冲埌鐨刲ineID
- }
-
-}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs.meta
deleted file mode 100644
index 6edd4e2..0000000
--- a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagMCPlayerFBInfoData.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 708297d42528f9040923687ac7ad8ed8
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs
new file mode 100644
index 0000000..1cfe366
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 20 鐜╁鍓湰鐩稿叧淇℃伅 #tagSCFBInfoList
+
+public class HA320_tagSCFBInfoList : GameNetPackBasic {
+ public byte FBDataCnt; // 鍓湰鏁版嵁涓暟
+ public tagSCFBInfo[] FBDataList; // 鍓湰鏁版嵁鍒楄〃
+
+ public HA320_tagSCFBInfoList () {
+ _cmd = (ushort)0xA320;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out FBDataCnt, vBytes, NetDataType.BYTE);
+ FBDataList = new tagSCFBInfo[FBDataCnt];
+ for (int i = 0; i < FBDataCnt; i ++) {
+ FBDataList[i] = new tagSCFBInfo();
+ TransBytes (out FBDataList[i].MapID, vBytes, NetDataType.DWORD);
+ TransBytes (out FBDataList[i].EnterCnt, vBytes, NetDataType.WORD);
+ TransBytes (out FBDataList[i].ADAddCnt, vBytes, NetDataType.BYTE);
+ TransBytes (out FBDataList[i].BuyAddCnt, vBytes, NetDataType.BYTE);
+ TransBytes (out FBDataList[i].ItemAddCnt, vBytes, NetDataType.WORD);
+ TransBytes (out FBDataList[i].PassLineID, vBytes, NetDataType.DWORD);
+ TransBytes (out FBDataList[i].PassGradeCnt, vBytes, NetDataType.BYTE);
+ TransBytes (out FBDataList[i].PassGrade, vBytes, NetDataType.DWORD, FBDataList[i].PassGradeCnt);
+ }
+ }
+
+ public class tagSCFBInfo {
+ public uint MapID;
+ public ushort EnterCnt; //浠婃棩绱杩涘叆娆℃暟
+ public byte ADAddCnt; //骞垮憡澧炲姞娆℃暟
+ public byte BuyAddCnt; //璐拱澧炲姞娆℃暟
+ public ushort ItemAddCnt; //鐗╁搧澧炲姞娆℃暟
+ public uint PassLineID; //宸茶繃鍏冲埌鐨刲ineID
+ public byte PassGradeCnt; //鏄熺骇鍊煎搴斾釜鏁�, 姣忎釜key瀛�9涓猯ineID
+ public uint[] PassGrade; //鍓湰绾胯矾瀵瑰簲鏄熺骇鍊煎垪琛�
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs.meta
similarity index 83%
rename from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
rename to Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs.meta
index 0ec0b24..11b9af6 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA320_tagSCFBInfoList.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 09d1d01f36bbc4642bf12e6e209dc82f
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs
new file mode 100644
index 0000000..2404dcb
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs
@@ -0,0 +1,29 @@
+using UnityEngine;
+using System.Collections;
+
+// A7 22 骞垮憡淇℃伅鍒楄〃 #tagSCADInfoList
+
+public class HA722_tagSCADInfoList : GameNetPackBasic {
+ public byte Count;
+ public tagSCADInfo[] ADInfoList;
+
+ public HA722_tagSCADInfoList () {
+ _cmd = (ushort)0xA722;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out Count, vBytes, NetDataType.BYTE);
+ ADInfoList = new tagSCADInfo[Count];
+ for (int i = 0; i < Count; i ++) {
+ ADInfoList[i] = new tagSCADInfo();
+ TransBytes (out ADInfoList[i].ADID, vBytes, NetDataType.WORD);
+ TransBytes (out ADInfoList[i].ADCnt, vBytes, NetDataType.BYTE);
+ }
+ }
+
+ public class tagSCADInfo {
+ public ushort ADID; //骞垮憡ID
+ public byte ADCnt; //浠婃棩宸查鍙栧箍鍛婂鍔辨鏁�
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs.meta
index 0ec0b24..8078962 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/Core/NetworkPackage/ServerPack/HA7_Interaction/HA722_tagSCADInfoList.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 8c08b65a13f9abc4d852129082d6615c
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Main.cs b/Main/Main.cs
index c6c398f..bb8628f 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -65,7 +65,7 @@
managers.Add(GMCmdManager.Instance);
managers.Add(FairyEmblemModel.Instance);
managers.Add(EquipModel.Instance);
- managers.Add(DungeonModel.Instance);
+ managers.Add(DungeonManager.Instance);
managers.Add(DailyQuestModel.Instance);
managers.Add(CustomizedRechargeModel.Instance);
managers.Add(CustomizedGiftModel.Instance);
@@ -81,10 +81,11 @@
managers.Add(MainLevelManager.Instance);
managers.Add(BattleSettlementManager.Instance);
managers.Add(GoldRushManager.Instance);
- managers.Add(MailManager.Instance);
managers.Add(FirstChargeManager.Instance);
managers.Add(NewBieCenter.Instance);
-
+ managers.Add(AdsManager.Instance);
+ managers.Add(BoneFieldManager.Instance);
+
foreach (var manager in managers)
{
manager.Init();
diff --git a/Main/Manager/UIManager.cs b/Main/Manager/UIManager.cs
index b5e58a4..7fab3ba 100644
--- a/Main/Manager/UIManager.cs
+++ b/Main/Manager/UIManager.cs
@@ -317,15 +317,39 @@
public bool IsOpened(string uiName)
{
UIBase ui = GetUI(uiName);
-
+
if (null != ui)
{
return ui.IsActive();
}
-
+
return false;
}
+ // 妫�鏌ユ槸鍚﹀瓨鍦ㄤ换浣曞叏灞忔垨閬僵绐楀彛, 鏆傛湭瀹氫箟鍏ㄥ睆鍙互缁熶竴鍕鹃�塷penMask
+ public bool ExistAnyFullScreenOrMaskWin(string excludeUIName)
+ {
+ var exist = false;
+ foreach (var uiList in uiDict.Values)
+ {
+ // 閬嶅巻璇ョ被鍨嬬殑鎵�鏈塙I瀹炰緥
+ foreach (var ui in uiList)
+ {
+ // 鍒锋柊UI
+ if (ui.IsActive() && ui.name != excludeUIName)
+ {
+ if (ui.openMask)
+ {
+ exist = true;
+ break;
+ }
+ }
+ }
+ }
+
+ return exist;
+ }
+
// 鑾峰彇鎸囧畾绫诲瀷鐨勬墍鏈塙I瀹炰緥
public List<T> GetAllUI<T>() where T : UIBase
{
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 7f4353d..dfc7948 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -45,18 +45,22 @@
}
set
{
- m_IsPause = value;
- if (m_IsPause)
+ if (value)
{
+ m_IsPause = value;
PauseGame();
+ OnBattlePause?.Invoke(m_IsPause);
}
else
{
- ResumeGame();
+ if (CanResumeGame())
+ {
+ m_IsPause = value;
+ ResumeGame();
+ OnBattlePause?.Invoke(m_IsPause);
+ }
}
-
- OnBattlePause?.Invoke(m_IsPause);
}
}
@@ -545,4 +549,21 @@
{
recordPlayer.ForceFinish();
}
+
+
+ //鏆傚仠鐨勫師鍥犳湁寰堝锛岄渶瑕佹鏌ュ悇绉嶇姸鎬�
+ bool CanResumeGame()
+ {
+ if (UIManager.Instance.IsOpened<NewBieWin>())
+ {
+ return false;
+ }
+
+ if (UIManager.Instance.IsOpened<EquipExchangeWin>())
+ {
+ return false;
+ }
+
+ return true;
+ }
}
diff --git a/Main/System/Battle/BattleField/StoryBoneBattleField.cs b/Main/System/Battle/BattleField/StoryBoneBattleField.cs
new file mode 100644
index 0000000..8b2eff5
--- /dev/null
+++ b/Main/System/Battle/BattleField/StoryBoneBattleField.cs
@@ -0,0 +1,124 @@
+using System;
+using LitJson;
+using UnityEngine;
+using System.Collections.Generic;
+
+
+public class StoryBoneBattleField : BattleField
+{
+ protected int chapter;// 绔犺妭
+ protected int wave;// 娉㈡暟
+ protected int level;// 鍏冲崱
+ protected JsonData extendData;
+
+ protected MainChapterConfig chapterConfig;
+
+ protected MainLevelConfig levelConfig;
+
+
+ public StoryBoneBattleField(string _guid) : base(_guid)
+ {
+
+ }
+
+ public override void Init(int MapID, int FuncLineID, JsonData _extendData,
+ List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
+ {
+ base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
+
+ chapter = FuncLineID / 10000;
+ wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
+ level = (FuncLineID % 10000) / 100;
+
+ extendData = _extendData;
+ chapterConfig = MainChapterConfig.Get(chapter);
+ levelConfig = MainLevelConfig.Get(level);
+
+ SetBattleMode(BattleMode.Record);
+ }
+
+ public override void Release()
+ {
+ base.Release();
+ }
+
+
+ public override void AutoSetBattleMode()
+ {
+ SetBattleMode(BattleMode.Record);
+ }
+
+ public override void TurnFightState(int TurnNum, int State,
+ uint FuncLineID, JsonData extendData)
+ {
+ base.TurnFightState(TurnNum, State, FuncLineID, extendData);
+
+ switch (State)
+ {
+ // 璧峰鐘舵�佹爣璁�
+ case 0:
+ break;
+ case 1://鍑嗗瀹屾瘯
+ break;
+ case 2://鎴樻枟涓�
+ break;
+ case 3://鎴樻枟缁撴潫
+ break;
+ case 4://缁撶畻濂栧姳
+ break;
+ case 5://缁撴潫鐘舵�佹爣璁�
+ break;
+ default:
+ BattleDebug.LogError("recieve a unknown State");
+ break;
+ }
+ }
+
+ protected override void OnSettlement(JsonData turnFightStateData)
+ {
+ base.OnSettlement(turnFightStateData);
+ }
+
+ public override void WhaleFall()
+ {
+ UIManager.Instance.CloseWindow<FullScreenBattleWin>();
+ AutoFightModel.Instance.isPause = false;
+ UIManager.Instance.OpenWindow<BoneFieldWin>();
+ Destroy();
+ }
+
+
+
+ public override void HaveRest()
+ {
+ // 涓荤嚎BOSS鎴樻枟娌℃湁浼戞伅
+ }
+
+
+ // public override void OnBattleEnd(JsonData turnFightStateData)
+ // {
+ // base.OnBattleEnd(turnFightStateData);
+ // // HaveRest();
+ // }
+
+ public override void Run()
+ {
+ if (operationAgent == null)
+ {
+ //闃茶寖寮傚父
+ return;
+ }
+ base.Run();
+ }
+
+ public override void DistributeNextPackage()
+ {
+ if (IsBattleFinish)
+ return;
+
+ // 涓嶈璋冪敤base鐨勫嚱鏁�
+ BattleManager.Instance.DistributeNextReportPackage(guid);
+ }
+
+
+}
\ No newline at end of file
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/Battle/BattleField/StoryBoneBattleField.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/Battle/BattleField/StoryBoneBattleField.cs.meta
index 0ec0b24..4b47868 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/Battle/BattleField/StoryBoneBattleField.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 9e1d86ce80ddb05498e956a42cef8b33
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/BattleFieldFactory.cs b/Main/System/Battle/BattleFieldFactory.cs
index 9177299..3cdfca1 100644
--- a/Main/System/Battle/BattleFieldFactory.cs
+++ b/Main/System/Battle/BattleFieldFactory.cs
@@ -14,14 +14,17 @@
switch (MapID)
{
- case 1:
- battleField = new StoryBattleField();
- break;
- case 2:
+ case 1:
+ battleField = new StoryBattleField();
+ break;
+ case 2:
battleField = new StoryBossBattleField(guid);
break;
- default:
- break;
+ case 30010:
+ battleField = new StoryBoneBattleField(guid);
+ break;
+ default:
+ break;
}
return battleField;
diff --git a/Main/System/BoneField.meta b/Main/System/BoneField.meta
new file mode 100644
index 0000000..c3cb2f6
--- /dev/null
+++ b/Main/System/BoneField.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2771fb42327cbe54ab2401a146d7e659
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/BoneField/AdsManager.cs b/Main/System/BoneField/AdsManager.cs
new file mode 100644
index 0000000..b3974b9
--- /dev/null
+++ b/Main/System/BoneField/AdsManager.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+public class AdsManager : GameSystemManager<AdsManager>
+{
+ //<骞垮憡ID,浠婃棩宸查鍙栧箍鍛婂鍔辨鏁�>
+ private Dictionary<int, int> adsInfoDict = new Dictionary<int, int>();
+ public event Action<int,int> OnAdsInfoListUpdateEvent;//ADID ADMapID
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
+ }
+
+ public void OnBeforePlayerDataInitializeEvent()
+ {
+ adsInfoDict.Clear();
+ }
+
+ public void SendGetReward(int ADID)
+ {
+ var pack = new CA504_tagCMPlayerGetReward();
+ pack.RewardType = 81; // 骞垮憡濂栧姳 81
+ pack.DataEx = (uint)ADID; // 骞垮憡濂栧姳ID
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void PlayAds(int ADID)
+ {
+ if (ADID == 1)
+ {
+
+ int dataMapID = BoneFieldManager.Instance.DataMapID;
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out var fbInfo))
+ return;
+ SendGetReward(ADID);
+ BoneFieldManager.Instance.SendBBeginFBWipeOut(dataMapID, (int)fbInfo.PassLineID);
+ }
+
+ }
+
+ public int GetADCntByADID(int ADID)
+ {
+ if (adsInfoDict.IsNullOrEmpty() || !adsInfoDict.ContainsKey(ADID))
+ return 0;
+ return adsInfoDict[ADID];
+ }
+
+ public void UpdateAdsInfoList(HA722_tagSCADInfoList vNetData)
+ {
+ if (vNetData == null || vNetData.ADInfoList.IsNullOrEmpty())
+ return;
+ foreach (var item in vNetData.ADInfoList)
+ {
+ adsInfoDict[item.ADID] = item.ADCnt;
+
+ int mapID = 0;
+ if (ADAwardConfig.HasKey(item.ADID))
+ {
+ ADAwardConfig aDAwardConfig = ADAwardConfig.Get(item.ADID);
+ mapID = aDAwardConfig.ADMapID;
+ }
+ OnAdsInfoListUpdateEvent?.Invoke(item.ADID, mapID);
+ }
+ }
+}
+
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/BoneField/AdsManager.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/BoneField/AdsManager.cs.meta
index 0ec0b24..ca5cd4c 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/BoneField/AdsManager.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: fd600b8da29646b4a8aa0cb5dabdb5f8
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/BoneField/BoneFieldChallengeButton.cs b/Main/System/BoneField/BoneFieldChallengeButton.cs
new file mode 100644
index 0000000..86be514
--- /dev/null
+++ b/Main/System/BoneField/BoneFieldChallengeButton.cs
@@ -0,0 +1,55 @@
+using UnityEngine;
+
+public class BoneFieldChallengeButton : MonoBehaviour
+{
+ [SerializeField] ButtonEx btnChallenge;
+ [SerializeField] TextEx txtChallengeLv;
+ [SerializeField] TextEx txtChallengeYes;
+ [SerializeField] TextEx txtChallengeNo;
+ [SerializeField] ImageEx imgChallengeLVYes;
+ [SerializeField] ImageEx imgChallengeLVNo;
+ [SerializeField] ImageEx imgChallengeIcon;
+ [SerializeField] ImageEx imgChallengeRed;
+ bool isLvOk;
+ int lvLimitMin;
+ bool isHasNextLineID;
+ public void Awake()
+ {
+ btnChallenge.SetListener(OnClickChallenge);
+ }
+ public void Display(int lvLimitMin, bool isHasNextLineID, long bossFightPower)
+ {
+ this.isHasNextLineID = isHasNextLineID;
+ this.lvLimitMin = lvLimitMin;
+ isLvOk = PlayerDatas.Instance.baseData.LV >= lvLimitMin;
+ long myFightPower = PlayerDatas.Instance.baseData.FightPower;
+ imgChallengeRed.SetActive(isLvOk && isHasNextLineID && myFightPower >= bossFightPower);
+ txtChallengeLv.SetActive(!isLvOk);
+ txtChallengeLv.text = Language.Get("BoneField07", lvLimitMin);
+ txtChallengeYes.SetActive(isLvOk && isHasNextLineID);
+ txtChallengeNo.SetActive(!isLvOk || !isHasNextLineID);
+ imgChallengeLVYes.SetActive(isLvOk && isHasNextLineID);
+ imgChallengeLVNo.SetActive(!isLvOk || !isHasNextLineID);
+ imgChallengeIcon.SetActive(isLvOk && isHasNextLineID);
+ }
+ private void OnClickChallenge()
+ {
+ if (!isLvOk)
+ {
+ // %s0绾у彲鎸戞垬
+ SysNotifyMgr.Instance.ShowTip("BoneField01", lvLimitMin);
+ return;
+ }
+ if (!isHasNextLineID)
+ {
+ // 宸插埌杈炬渶楂樺眰
+ SysNotifyMgr.Instance.ShowTip("BoneField02", lvLimitMin);
+ return;
+ }
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(BoneFieldManager.Instance.DataMapID, out var fbInfo))
+ return;
+ int nowPassLineID = BoneFieldManager.Instance.GetNowPassLineID(fbInfo);
+ BoneFieldManager.Instance.SendTurnFight(BoneFieldManager.Instance.DataMapID, nowPassLineID);
+ UIManager.Instance.CloseWindow<BoneFieldWin>();
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/BoneField/BoneFieldChallengeButton.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/BoneField/BoneFieldChallengeButton.cs.meta
index 0ec0b24..20b3f78 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/BoneField/BoneFieldChallengeButton.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 7d146ab81b1eaa9429ab8f0a53fb5485
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/BoneField/BoneFieldManager.cs b/Main/System/BoneField/BoneFieldManager.cs
new file mode 100644
index 0000000..d7fc492
--- /dev/null
+++ b/Main/System/BoneField/BoneFieldManager.cs
@@ -0,0 +1,200 @@
+using System.Collections.Generic;
+using DG.DemiEditor;
+using LitJson;
+public class BoneFieldManager : GameSystemManager<BoneFieldManager>
+{
+
+ public readonly int DataMapID = 30010; // 鐧介鐩堥噹(鎴橀敜绉樺)
+ public readonly int MinStartLineID = 1; // funcLineID浠�1寮�濮�
+ public readonly int funcId = 9; //鍔熻兘ID
+ public Redpoint parentRedpoint = new Redpoint(MainRedDot.MainChallengeRedpoint, MainRedDot.BoneFieldRepoint);
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
+ DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+ TimeMgr.Instance.OnDayEvent += OnDayEvent;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
+ DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+ TimeMgr.Instance.OnDayEvent -= OnDayEvent;
+ }
+
+ private void OnFuncStateChangeEvent(int obj)
+ {
+ if (obj != funcId)
+ return;
+ UpdateRedPoint();
+ }
+
+ private void OnDayEvent()
+ {
+ UpdateRedPoint();
+ }
+
+ private void OnUpdateFBInfoChangeEvent(int mapID, bool isADAddCntChange, bool isBuyAddCntChange, bool isItemAddCntChange)
+ {
+ int dataMapID = DataMapID;
+ if (mapID != dataMapID)
+ return;
+ if (isADAddCntChange)
+ return;
+ UpdateRedPoint();
+ }
+
+ private void OnAdsInfoListUpdateEvent(int id, int mapId)
+ {
+ if (mapId != DataMapID)
+ return;
+ UpdateRedPoint();
+ }
+
+ public void OnBeforePlayerDataInitializeEvent()
+ {
+ //mailDataDict.Clear();
+ }
+
+ public void UpdateRedPoint()
+ {
+ parentRedpoint.state = RedPointState.None;
+ if (!FuncOpen.Instance.IsFuncOpen(funcId))
+ return;
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(DataMapID, out var fbInfo))
+ return;
+ bool isHasNextLineID = IsHasNextLineID(fbInfo);
+ int nowPassLineID = GetNowPassLineID(fbInfo);
+ DungeonConfig.TryGetDungeonID(DataMapID, nowPassLineID, out int dungeonID);
+ if (!DungeonConfig.HasKey(dungeonID))
+ return;
+ DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
+ bool isLvOk = PlayerDatas.Instance.baseData.LV >= dungeonConfig.LVLimitMin;
+ long myFightPower = PlayerDatas.Instance.baseData.FightPower;
+ if (myFightPower >= dungeonConfig.FightPower)
+ {
+ if (isLvOk && isHasNextLineID)
+ {
+ parentRedpoint.state = RedPointState.Simple;
+ }
+ }
+ else
+ {
+ if (TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
+ {
+ bool isSweepCountOk = showrealRemainSweepCount > 0;
+ if (isSweepCountOk)
+ {
+ parentRedpoint.state = RedPointState.Simple;
+ }
+ }
+ }
+ }
+
+ public bool IsHasNextLineID(FBInfo fBInfo)
+ {
+ int passLineID = (int)fBInfo.PassLineID;
+ int nextPassLineID = passLineID + 1;
+ return DungeonConfig.TryGetDungeonID(DataMapID, nextPassLineID, out int dungeonID);
+ }
+
+ public int GetNowPassLineID(FBInfo fBInfo)
+ {
+ int passLineID = (int)fBInfo.PassLineID;
+ if (passLineID < MinStartLineID)
+ return MinStartLineID;
+ int nextPassLineID = passLineID + 1;
+ if (!DungeonConfig.TryGetDungeonID(DataMapID, nextPassLineID, out int nextDungeonID))
+ return passLineID;
+ return nextPassLineID;
+ }
+
+ public bool TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount)
+ {
+ showSweepMaxCount = 0;
+ showrealRemainSweepCount = 0;
+ int dataMapID = BoneFieldManager.Instance.DataMapID;
+ if (!DungeonOpenTimeConfig.HasKey(dataMapID))
+ return false;
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out FBInfo fbInfo))
+ return false;
+ DungeonOpenTimeConfig dungeonOpenTimeConfig = DungeonOpenTimeConfig.Get(dataMapID);
+
+ int baseCount = dungeonOpenTimeConfig.DayTimes + dungeonOpenTimeConfig.PayCntMax;
+ int realMaxCount = baseCount + fbInfo.ADAddCnt + fbInfo.BuyAddCnt + fbInfo.ItemAddCnt;
+ int realRemainSweepCount = realMaxCount - fbInfo.EnterCnt;
+
+ showSweepMaxCount = realMaxCount - fbInfo.ADAddCnt - fbInfo.BuyAddCnt;
+ showrealRemainSweepCount = realRemainSweepCount - fbInfo.BuyAddCnt;
+ return true;
+ }
+
+ public void SendTurnFight(int mapID, int funcLineID)
+ {
+ CB410_tagCMTurnFight pack = new CB410_tagCMTurnFight();
+ pack.MapID = (uint)mapID;
+ pack.FuncLineID = (uint)funcLineID;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void SendBBeginFBWipeOut(int mapID, int lineID)
+ {
+ CA505_tagCMBeginFBWipeOut pack = new CA505_tagCMBeginFBWipeOut();
+ pack.MapID = (uint)mapID;
+ pack.LineID = (ushort)lineID;
+ pack.Cnt = 1;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+
+
+ public void SendBuyEnterCount(int FBID)
+ {
+ var pack = new CA575_tagCMBuyEnterCount();
+ pack.FBID = (uint)FBID; // 鍓湰ID
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void UpdateFBEnd(H0320_tagFBEnd vNetData)
+ {
+ if (vNetData.Msg.IsNullOrEmpty())
+ return;
+ ChallengeResultData result = ChallengeResultData.FromJson(vNetData.Msg);
+ if (result == null || result.itemInfo.IsNullOrEmpty())
+ return;
+ if (result.dataMapID != DataMapID)
+ return;
+ List<Item> showItems = new List<Item>();
+ foreach (var item in result.itemInfo)
+ {
+ Item tempItem = new Item(item.ItemID, item.Count);
+ showItems.Add(tempItem);
+ }
+ ItemLogicUtility.Instance.ShowGetItem(showItems);
+ }
+
+ public class ItemInfo
+ {
+ public int ItemID { get; set; }
+ public int Count { get; set; }
+ }
+
+ public class ChallengeResultData
+ {
+ public int dataMapID { get; set; }
+ public List<ItemInfo> itemInfo { get; set; }
+ public int lineID { get; set; }
+ public int isPass { get; set; }
+ public int isSweep { get; set; }
+
+ public static ChallengeResultData FromJson(string json)
+ {
+ return JsonMapper.ToObject<ChallengeResultData>(json);
+ }
+ }
+}
+
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/BoneField/BoneFieldManager.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/BoneField/BoneFieldManager.cs.meta
index 0ec0b24..890c90e 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/BoneField/BoneFieldManager.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 77bb3f7eaa082d34ea9ec3678a728a06
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/BoneField/BoneFieldWin.cs b/Main/System/BoneField/BoneFieldWin.cs
new file mode 100644
index 0000000..8a05b7a
--- /dev/null
+++ b/Main/System/BoneField/BoneFieldWin.cs
@@ -0,0 +1,268 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+public class BoneFieldWin : UIBase
+{
+ [SerializeField] TextEx txtDifficulty;
+ [SerializeField] TextEx txtBossName;
+ [SerializeField] TextEx txtTodaySweepCount;
+ [SerializeField] TextEx txtTodayAdsCount;
+ [SerializeField] TextEx txtFirstFree;
+ [SerializeField] TextEx txtFightPower;
+ [SerializeField] ImageEx imgMaxLineID;
+ [SerializeField] Transform transChallengeItemCells;
+ [SerializeField] List<ItemCell> challengeItemCells1;
+ [SerializeField] List<ItemCell> challengeItemCells2;
+ [SerializeField] List<ItemCell> sweepItemCells;
+ [SerializeField] List<SkillWordCell> skillWords;
+ [SerializeField] ButtonEx btnClose;
+ [SerializeField] Transform transNoChallenge;
+ [SerializeField] Transform transHasChallenge;
+ [SerializeField] BoneFieldChallengeButton btnChallenge1;
+ [SerializeField] BoneFieldChallengeButton btnChallenge2;
+ [SerializeField] ButtonEx btnSweep;
+ [SerializeField] ImageEx imgSweepNo;
+ [SerializeField] ButtonEx btnAds;
+ [SerializeField] ImageEx imgSweepRed;
+ bool isHasNextLineID;
+ int adID;
+
+ int showSweepMaxCount;
+ int showrealRemainSweepCount;
+ protected override void InitComponent()
+ {
+ base.InitComponent();
+ btnClose.SetListener(OnClickClose);
+ btnSweep.SetListener(OnClickSweep);
+ btnAds.SetListener(OnClickAds);
+ }
+
+ protected override void OnPreOpen()
+ {
+ base.OnPreOpen();
+ DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
+ TimeMgr.Instance.OnDayEvent += OnDayEvent;
+ Display();
+ }
+
+ protected override void OnPreClose()
+ {
+ base.OnPreClose();
+ DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
+ TimeMgr.Instance.OnDayEvent -= OnDayEvent;
+ }
+
+ private void OnUpdateFBInfoChangeEvent(int mapID, bool isADAddCntChange, bool isBuyAddCntChange, bool isItemAddCntChange)
+ {
+ int dataMapID = BoneFieldManager.Instance.DataMapID;
+ if (mapID != dataMapID)
+ return;
+ if (!ADAwardConfig.TryGetADIDByADMapID(BoneFieldManager.Instance.DataMapID, out adID) || !ADAwardConfig.HasKey(adID))
+ return;
+ ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
+ if (isADAddCntChange)
+ {
+ DisplayAdsButton(aDAwardConfig);
+ }
+ else
+ {
+ Display();
+ }
+ }
+
+ private void OnAdsInfoListUpdateEvent(int id, int mapId)
+ {
+ if (mapId != BoneFieldManager.Instance.DataMapID)
+ return;
+ if (!ADAwardConfig.TryGetADIDByADMapID(BoneFieldManager.Instance.DataMapID, out adID) || !ADAwardConfig.HasKey(adID))
+ return;
+ ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
+ DisplayAdsButton(aDAwardConfig);
+ }
+
+
+ private void OnDayEvent()
+ {
+ Display();
+ }
+
+ private void OnClickClose()
+ {
+ UIManager.Instance.CloseWindow<BoneFieldWin>();
+ }
+
+ private void OnClickSweep()
+ {
+ int dataMapID = BoneFieldManager.Instance.DataMapID;
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out var fbInfo))
+ return;
+ if (!DungeonOpenTimeConfig.HasKey(dataMapID))
+ return;
+ DungeonOpenTimeConfig config = DungeonOpenTimeConfig.Get(dataMapID);
+
+ if (showrealRemainSweepCount == showSweepMaxCount)
+ {
+ BoneFieldManager.Instance.SendBBeginFBWipeOut(dataMapID, (int)fbInfo.PassLineID);
+ return;
+ }
+
+ int index = Mathf.Min(Mathf.Max(0, showSweepMaxCount - showrealRemainSweepCount - 1), config.PayMoneyValues.Length - 1);
+ int payMoneyValue = config.PayMoneyValues[index];
+ int payMoneyType = config.PayMoneyType;
+ ConfirmCancel.MoneyIconToggleConfirmByType(ToggleCheckType.BoneField, payMoneyValue, payMoneyType,
+ Language.Get("BoneField11", UIHelper.GetIconNameWithMoneyType(payMoneyType), payMoneyValue), () =>
+ {
+ if (!UIHelper.CheckMoneyCount(payMoneyType, payMoneyValue, 2))
+ return;
+ BoneFieldManager.Instance.SendBuyEnterCount(dataMapID);
+ BoneFieldManager.Instance.SendBBeginFBWipeOut(dataMapID, (int)fbInfo.PassLineID);
+ });
+
+
+ }
+
+ private void OnClickAds()
+ {
+ AdsManager.Instance.PlayAds(adID);
+ }
+ public void Display()
+ {
+ int dataMapID = BoneFieldManager.Instance.DataMapID;
+ if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out var fbInfo))
+ return;
+
+ int nowPassLineID = BoneFieldManager.Instance.GetNowPassLineID(fbInfo);
+ isHasNextLineID = BoneFieldManager.Instance.IsHasNextLineID(fbInfo);
+ DungeonConfig.TryGetDungeonID(dataMapID, nowPassLineID, out int dungeonID);
+ if (!DungeonConfig.HasKey(dungeonID))
+ return;
+ DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
+ int[] lineupIDList = dungeonConfig.LineupIDList;
+ if (lineupIDList.IsNullOrEmpty())
+ return;
+ int LineupID = lineupIDList[0];
+ if (!NPCLineupConfig.HasKey(LineupID))
+ return;
+ NPCLineupConfig lineupConfig = NPCLineupConfig.Get(LineupID);
+ int bossId = lineupConfig.BossID;
+ if (bossId == 0 || !NPCConfig.HasKey(bossId))
+ return;
+ NPCConfig nPCConfig = NPCConfig.Get(bossId);
+ if (!ADAwardConfig.TryGetADIDByADMapID(dataMapID, out adID) || !ADAwardConfig.HasKey(adID))
+ return;
+ ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
+
+
+ DisplayFBInfo(nPCConfig, dungeonConfig, nowPassLineID);
+ DisplayChallengeButton(dungeonConfig, fbInfo);
+ DisplaySweepButton(dungeonConfig);
+ DisplayAdsButton(aDAwardConfig);
+ DisplaySkillWordsList(lineupConfig);
+ DisplayItemCellList(challengeItemCells1, dungeonConfig.PassAwardList);
+ DisplayItemCellList(challengeItemCells2, dungeonConfig.PassAwardList);
+
+ if (fbInfo.PassLineID > 0)
+ {
+ DungeonConfig.TryGetDungeonID(dataMapID, (int)fbInfo.PassLineID, out int sweepDungeonID);
+ if (!DungeonConfig.HasKey(dungeonID))
+ return;
+ DungeonConfig sweepDungeonConfig = DungeonConfig.Get(sweepDungeonID);
+ DisplayItemCellList(sweepItemCells, sweepDungeonConfig.SweepAwardList);
+ }
+
+ }
+
+ public void DisplayFBInfo(NPCConfig nPCConfig, DungeonConfig dungeonConfig, int nowPassLineID)
+ {
+ imgMaxLineID.SetActive(!isHasNextLineID);
+ transChallengeItemCells.SetActive(isHasNextLineID);
+ txtBossName.text = nPCConfig.NPCName;
+ txtDifficulty.text = nowPassLineID.ToString();
+ txtFightPower.text = UIHelper.ReplaceLargeArtNum(dungeonConfig.FightPower);
+ }
+
+ public void DisplayChallengeButton(DungeonConfig dungeonConfig, FBInfo fBInfo)
+ {
+ transNoChallenge.SetActive(fBInfo.PassLineID <= 0);
+ transHasChallenge.SetActive(fBInfo.PassLineID > 0);
+ btnChallenge1.Display(dungeonConfig.LVLimitMin, isHasNextLineID, dungeonConfig.FightPower);
+ btnChallenge2.Display(dungeonConfig.LVLimitMin, isHasNextLineID, dungeonConfig.FightPower);
+ }
+
+
+
+ public void DisplaySweepButton(DungeonConfig dungeonConfig)
+ {
+ if (!BoneFieldManager.Instance.TryGetShowSweepCount(out showSweepMaxCount, out showrealRemainSweepCount))
+ return;
+ bool isSweepCountOk = showrealRemainSweepCount > 0;
+ imgSweepNo.SetActive(!isSweepCountOk);
+ btnSweep.interactable = isSweepCountOk;
+ long myFightPower = PlayerDatas.Instance.baseData.FightPower;
+ imgSweepRed.SetActive(isSweepCountOk && myFightPower < dungeonConfig.FightPower);
+ txtFirstFree.SetActive(showSweepMaxCount == showrealRemainSweepCount);
+ txtTodaySweepCount.SetActive(showSweepMaxCount > showrealRemainSweepCount);
+ txtTodaySweepCount.text = UIHelper.AppendColor(isSweepCountOk ? TextColType.Green : TextColType.Red, Language.Get("BoneField08", showrealRemainSweepCount, showSweepMaxCount));
+ }
+
+ public void DisplayAdsButton(ADAwardConfig aDAwardConfig)
+ {
+ int adsCnt = AdsManager.Instance.GetADCntByADID(adID);
+ bool isShowAds = adsCnt < aDAwardConfig.ADCntMax;
+ int remainAdsCount = aDAwardConfig.ADCntMax - adsCnt;
+ btnAds.SetActive(isShowAds);
+ txtTodayAdsCount.text = UIHelper.AppendColor(isShowAds ? TextColType.Green : TextColType.Red, Language.Get("BoneField09", remainAdsCount, aDAwardConfig.ADCntMax)); ;
+ }
+
+ public void DisplayItemCellList(List<ItemCell> itemCells, int[][] items)
+ {
+ if (itemCells.IsNullOrEmpty() || items.IsNullOrEmpty())
+ return;
+ for (int i = 0; i < itemCells.Count; i++)
+ {
+ if (i < items.Length)
+ {
+ int index = i;
+ itemCells[i].SetActive(true);
+ itemCells[i].Init(new ItemCellModel(items[i][0], true, items[i][1]));
+ itemCells[i].button.SetListener(() =>
+ {
+ ItemTipUtility.Show(items[index][0], true);
+ });
+ }
+ else
+ {
+ itemCells[i].SetActive(false);
+ }
+ }
+ }
+
+ public void DisplaySkillWordsList(NPCLineupConfig lineUPConfig)
+ {
+ if (skillWords.IsNullOrEmpty())
+ return;
+ for (int i = 0; i < skillWords.Count; i++)
+ {
+ if (i < lineUPConfig.SkillIDExList.Length)
+ {
+ skillWords[i].SetActive(true);
+ int skillID = lineUPConfig.SkillIDExList[i];
+ skillWords[i].Init(skillID, () =>
+ {
+ SmallTipWin.showText = Language.Get("SmallTipFomat", SkillConfig.Get(skillID)?.SkillName, SkillConfig.Get(skillID)?.Description);
+ SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition);
+ SmallTipWin.isDownShow = true;
+ UIManager.Instance.OpenWindow<SmallTipWin>();
+ });
+ }
+ else
+ {
+ skillWords[i].SetActive(false);
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/BoneField/BoneFieldWin.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/BoneField/BoneFieldWin.cs.meta
index 0ec0b24..095bb71 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/BoneField/BoneFieldWin.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 018d0a5414867a143940ae53fd9a10c4
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/ChallengeTab.meta b/Main/System/ChallengeTab.meta
new file mode 100644
index 0000000..09c6f75
--- /dev/null
+++ b/Main/System/ChallengeTab.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b05faf55c2deb764eaf44f27a0deb3d4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/ChallengeTab/ChallengeTabButton.cs b/Main/System/ChallengeTab/ChallengeTabButton.cs
new file mode 100644
index 0000000..0d31545
--- /dev/null
+++ b/Main/System/ChallengeTab/ChallengeTabButton.cs
@@ -0,0 +1,35 @@
+using System;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class ChallengeTabButton : MonoBehaviour
+{
+ [SerializeField] Button btnTab;
+ [SerializeField] ImageEx imgIcon;
+ [SerializeField] TextEx txtName;
+ [SerializeField] TextEx txtCount;
+ [SerializeField] TextEx txtLockInfo;
+ [SerializeField] Transform transUnlock;
+ [SerializeField] RedpointBehaviour redpointBehaviour;
+ Action action;
+ void Awake()
+ {
+ btnTab.SetListener(() =>
+ {
+ action?.Invoke();
+ });
+ }
+
+ public void Display(int index, int redpointId, bool isLock, string countInfo, string lockInfo, Action action)
+ {
+ redpointBehaviour.redpointId = redpointId;
+ transUnlock.SetActive(!isLock);
+ txtCount.SetActive(isLock);
+ txtLockInfo.SetActive(!isLock);
+ imgIcon.SetSprite(StringUtility.Contact("ChallengeTab", index));
+ txtName.text = Language.Get(StringUtility.Contact("ChallengeTab", index));
+ txtCount.text = countInfo;
+ txtLockInfo.text = lockInfo;
+ this.action = action;
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/ChallengeTab/ChallengeTabButton.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/ChallengeTab/ChallengeTabButton.cs.meta
index 0ec0b24..d65b722 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/ChallengeTab/ChallengeTabButton.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 3bb48932e6ad9904b85d4dbab69a6553
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
new file mode 100644
index 0000000..d71ad40
--- /dev/null
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Cysharp.Threading.Tasks.Triggers;
+using UnityEngine;
+
+public class ChallengeTabWin : UIBase
+{
+ [SerializeField] ClickScreenOtherSpace clickScreenOtherSpace;
+ [SerializeField] ChallengeTabButton btnBoneField;
+ public static Action OnCloseChallengeTabWin;
+ protected override void InitComponent()
+ {
+ base.InitComponent();
+ clickScreenOtherSpace.RemoveAllListeners();
+ clickScreenOtherSpace.AddListener(() =>
+ {
+ UIManager.Instance.CloseWindow<ChallengeTabWin>();
+ });
+
+ }
+ protected override void OnPreOpen()
+ {
+ base.OnPreOpen();
+ DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
+ TimeMgr.Instance.OnDayEvent += OnDayEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+
+ Display();
+ }
+
+ private void OnDayEvent()
+ {
+ Display();
+ }
+
+ private void OnAdsInfoListUpdateEvent(int id, int mapId)
+ {
+ Display();
+ }
+
+ private void OnUpdateFBInfoChangeEvent(int arg1, bool arg2, bool arg3, bool arg4)
+ {
+ if (arg1 == BoneFieldManager.Instance.DataMapID)
+ {
+ DisplayBoneFieldButton();
+ }
+
+ }
+ public void OnFuncStateChangeEvent(int funcId)
+ {
+ if (funcId == BoneFieldManager.Instance.funcId)
+ {
+ DisplayBoneFieldButton();
+ }
+ }
+
+ protected override void OnPreClose()
+ {
+ base.OnPreClose();
+ DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
+ AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
+ TimeMgr.Instance.OnDayEvent -= OnDayEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+ OnCloseChallengeTabWin?.Invoke();
+ }
+ public void Display()
+ {
+ DisplayBoneFieldButton();
+ }
+
+
+ public void DisplayBoneFieldButton()
+ {
+ int index = 2;
+ int funcId = BoneFieldManager.Instance.funcId;
+ int redpointId = MainRedDot.BoneFieldRepoint;
+ bool isLock = FuncOpen.Instance.IsFuncOpen(funcId);
+ if (!BoneFieldManager.Instance.TryGetShowSweepCount(out int showSweepMaxCount, out int showrealRemainSweepCount))
+ return;
+ string countInfo = UIHelper.AppendColor(showrealRemainSweepCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge01", showrealRemainSweepCount));
+ string lockInfo = !isLock ? FuncOpen.Instance.GetErrorTip(funcId) : string.Empty;
+ btnBoneField.Display(index, redpointId, isLock, countInfo, lockInfo, () =>
+ {
+ if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
+ return;
+ UIManager.Instance.OpenWindow<BoneFieldWin>();
+ });
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta b/Main/System/ChallengeTab/ChallengeTabWin.cs.meta
similarity index 83%
copy from Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
copy to Main/System/ChallengeTab/ChallengeTabWin.cs.meta
index 0ec0b24..1c50849 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA320_tagMCPlayerFBInfoData.cs.meta
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 56cd057c8501b0246b3887eaa785e5f4
+guid: 97c14b01c5b4b344794d9cf10855b050
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Dungeon/DungeonData.cs b/Main/System/Dungeon/DungeonData.cs
index bba8148..e2ba073 100644
--- a/Main/System/Dungeon/DungeonData.cs
+++ b/Main/System/Dungeon/DungeonData.cs
@@ -235,26 +235,26 @@
public int passLineID;
- public DungeonRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
- {
- this.id = (int)_serverInfo.FBID;
- this.enterTimes = (int)_serverInfo.EnterCnt;
- this.recoverTimes = (int)_serverInfo.RecoverCnt;
- this.extraTimes = (int)_serverInfo.ItemAddCnt;
- this.lineGrades = new Dictionary<int, int>();
- this.passLineID = (int)_serverInfo.PassLineID;
- for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
- {
- var tempValue = (int)_serverInfo.PassGrade[i];
- for (int j = 0; j < 9; j++)
- {
- var a = MathUtility.Power(10, j);
- var b = MathUtility.Power(10, j + 1);
- this.lineGrades[i * 9 + j] = (tempValue % b) / a;
- }
- }
- this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
- }
+ // public DungeonRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
+ // {
+ // this.id = (int)_serverInfo.FBID;
+ // this.enterTimes = (int)_serverInfo.EnterCnt;
+ // this.recoverTimes = (int)_serverInfo.RecoverCnt;
+ // this.extraTimes = (int)_serverInfo.ItemAddCnt;
+ // this.lineGrades = new Dictionary<int, int>();
+ // this.passLineID = (int)_serverInfo.PassLineID;
+ // for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
+ // {
+ // var tempValue = (int)_serverInfo.PassGrade[i];
+ // for (int j = 0; j < 9; j++)
+ // {
+ // var a = MathUtility.Power(10, j);
+ // var b = MathUtility.Power(10, j + 1);
+ // this.lineGrades[i * 9 + j] = (tempValue % b) / a;
+ // }
+ // }
+ // this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
+ // }
public DungeonRecord(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo _serverInfo)
{
@@ -262,24 +262,24 @@
this.buyTimes = _serverInfo.BuyCount;
}
- public void UpdateRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
- {
- this.enterTimes = (int)_serverInfo.EnterCnt;
- this.recoverTimes = (int)_serverInfo.RecoverCnt;
- this.extraTimes = (int)_serverInfo.ItemAddCnt;
- this.passLineID = (int)_serverInfo.PassLineID;
- for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
- {
- var tempValue = (int)_serverInfo.PassGrade[i];
- for (int j = 0; j < 9; j++)
- {
- var a = MathUtility.Power(10, j);
- var b = MathUtility.Power(10, j + 1);
- this.lineGrades[i * 9 + j] = (tempValue % b) / a;
- }
- }
- this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
- }
+ // public void UpdateRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
+ // {
+ // this.enterTimes = (int)_serverInfo.EnterCnt;
+ // this.recoverTimes = (int)_serverInfo.RecoverCnt;
+ // this.extraTimes = (int)_serverInfo.ItemAddCnt;
+ // this.passLineID = (int)_serverInfo.PassLineID;
+ // for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
+ // {
+ // var tempValue = (int)_serverInfo.PassGrade[i];
+ // for (int j = 0; j < 9; j++)
+ // {
+ // var a = MathUtility.Power(10, j);
+ // var b = MathUtility.Power(10, j + 1);
+ // this.lineGrades[i * 9 + j] = (tempValue % b) / a;
+ // }
+ // }
+ // this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
+ // }
public void UpdateRecord(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo _serverInfo)
{
diff --git a/Main/System/Dungeon/DungeonManager.cs b/Main/System/Dungeon/DungeonManager.cs
new file mode 100644
index 0000000..d696272
--- /dev/null
+++ b/Main/System/Dungeon/DungeonManager.cs
@@ -0,0 +1,108 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using LitJson;
+
+
+public class DungeonManager : GameSystemManager<DungeonManager>
+{
+ private Dictionary<int, FBInfo> fbInfoDict = new Dictionary<int, FBInfo>();
+ public event Action<int> UpdateFBInfoListEvent;//int mapID
+ public event Action<int, bool, bool, bool> UpdateFBInfoChangeEvent;
+ public event Action<int> UpdateFBInfoListEventByADAddCnt;//int mapID 骞垮憡澧炲姞娆℃暟鏈夋洿鏂�
+ public event Action<int> UpdateFBInfoListEventNotByADAddCnt;//int mapID 涓嶆槸骞垮憡澧炲姞娆℃暟瀵艰嚧鐨勬洿鏂�
+ Dictionary<int, DungeonRecord> dungeonRecords = new Dictionary<int, DungeonRecord>();
+ public event Action updateDungeonBuyCnt;
+
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
+ }
+
+ public void OnBeforePlayerDataInitializeEvent()
+ {
+ fbInfoDict.Clear();
+ }
+
+ public bool TryGetFBInfoByMapID(int mapID, out FBInfo info)
+ {
+ return fbInfoDict.TryGetValue(mapID, out info);
+ }
+
+ public void UpdateFBInfoList(HA320_tagSCFBInfoList vNetData)
+ {
+ if (vNetData == null || vNetData.FBDataList.IsNullOrEmpty())
+ return;
+ bool isADAddCntChange = false;
+ bool isBuyAddCntChange = false;
+ bool isItemAddCntChange = false;
+
+ foreach (var item in vNetData.FBDataList)
+ {
+ if (!fbInfoDict.ContainsKey((int)item.MapID))
+ fbInfoDict[(int)item.MapID] = new FBInfo();
+ int mapID = (int)item.MapID;
+ fbInfoDict[mapID].MapID = item.MapID;
+ fbInfoDict[mapID].EnterCnt = item.EnterCnt;
+
+ isADAddCntChange = fbInfoDict[mapID].ADAddCnt != item.ADAddCnt;
+ fbInfoDict[mapID].ADAddCnt = item.ADAddCnt;
+
+ isBuyAddCntChange = fbInfoDict[mapID].BuyAddCnt != item.BuyAddCnt;
+ fbInfoDict[mapID].BuyAddCnt = item.BuyAddCnt;
+
+ isItemAddCntChange = fbInfoDict[mapID].ItemAddCnt != item.ItemAddCnt;
+ fbInfoDict[mapID].ItemAddCnt = item.ItemAddCnt;
+
+ fbInfoDict[mapID].PassLineID = item.PassLineID;
+ fbInfoDict[mapID].PassGradeCnt = item.PassGradeCnt;
+ fbInfoDict[mapID].PassGrade = item.PassGrade;
+
+ UpdateFBInfoListEvent?.Invoke(mapID);
+ UpdateFBInfoChangeEvent?.Invoke(mapID, isADAddCntChange, isBuyAddCntChange, isItemAddCntChange);
+ }
+ }
+
+ public void UpdateRecords(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo[] vNetDatas)
+ {
+ for (int i = 0; i < vNetDatas.Length; i++)
+ {
+ var info = vNetDatas[i];
+ var dungeonId = (int)info.FBID;
+ if (dungeonRecords.ContainsKey(dungeonId))
+ {
+ dungeonRecords[dungeonId].UpdateRecord(info);
+ }
+ else
+ {
+ dungeonRecords[dungeonId] = new DungeonRecord(info);
+ }
+ }
+ if (updateDungeonBuyCnt != null)
+ {
+ updateDungeonBuyCnt();
+ }
+ }
+
+
+
+}
+
+public class FBInfo
+{
+ public uint MapID;
+ public ushort EnterCnt; //浠婃棩绱杩涘叆娆℃暟
+ public byte ADAddCnt; //骞垮憡澧炲姞娆℃暟
+ public byte BuyAddCnt; //璐拱澧炲姞娆℃暟
+ public ushort ItemAddCnt; //鐗╁搧澧炲姞娆℃暟
+ public uint PassLineID; //宸茶繃鍏冲埌鐨刲ineID
+ public byte PassGradeCnt; //鏄熺骇鍊煎搴斾釜鏁�, 姣忎釜key瀛�9涓猯ineID
+ public uint[] PassGrade; //鍓湰绾胯矾瀵瑰簲鏄熺骇鍊煎垪琛�
+}
+
diff --git a/Main/System/Dungeon/DungeonModel.cs.meta b/Main/System/Dungeon/DungeonManager.cs.meta
similarity index 100%
rename from Main/System/Dungeon/DungeonModel.cs.meta
rename to Main/System/Dungeon/DungeonManager.cs.meta
diff --git a/Main/System/Dungeon/DungeonModel.cs b/Main/System/Dungeon/DungeonModel.cs
deleted file mode 100644
index c6942c9..0000000
--- a/Main/System/Dungeon/DungeonModel.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using System;
-using LitJson;
-
-
-public class DungeonModel : GameSystemManager<DungeonModel>
-{
-
- Dictionary<int, DungeonRecord> dungeonRecords = new Dictionary<int, DungeonRecord>();
-
- public event Action<int> dungeonRecordChangeEvent;
- public event Action updateDungeonBuyCnt;
-
- public override void Init()
- {
-
- }
-
- public override void Release()
- {
- }
-
- public void UpdateRecords(HA320_tagMCPlayerFBInfoData.tagMCFBInfo[] _serverInfos)
- {
- for (int i = 0; i < _serverInfos.Length; i++)
- {
- var info = _serverInfos[i];
- var dungeonId = (int)info.FBID;
- if (dungeonRecords.ContainsKey(dungeonId))
- {
- dungeonRecords[dungeonId].UpdateRecord(info);
- }
- else
- {
- dungeonRecords[dungeonId] = new DungeonRecord(info);
- }
-
- if (dungeonRecordChangeEvent != null)
- {
- dungeonRecordChangeEvent(dungeonId);
- }
- }
-
- }
-
- public void UpdateRecords(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo[] vNetDatas)
- {
- for (int i = 0; i < vNetDatas.Length; i++)
- {
- var info = vNetDatas[i];
- var dungeonId = (int)info.FBID;
- if (dungeonRecords.ContainsKey(dungeonId))
- {
- dungeonRecords[dungeonId].UpdateRecord(info);
- }
- else
- {
- dungeonRecords[dungeonId] = new DungeonRecord(info);
- }
- }
- if (updateDungeonBuyCnt != null)
- {
- updateDungeonBuyCnt();
- }
- }
-
-}
-
-
diff --git a/Main/System/Equip/EquipExchangeWin.cs b/Main/System/Equip/EquipExchangeWin.cs
index fb3c1c2..ba25835 100644
--- a/Main/System/Equip/EquipExchangeWin.cs
+++ b/Main/System/Equip/EquipExchangeWin.cs
@@ -31,7 +31,7 @@
- protected override void OnPreClose()
+ protected override void OnClose()
{
EquipModel.Instance.OnEquipOPResultAction -= OnRefreshItem;
// 閫氱煡涓绘垬鍦�
diff --git a/Main/System/Equip/EquipModel.cs b/Main/System/Equip/EquipModel.cs
index f6f2ead..b8c4317 100644
--- a/Main/System/Equip/EquipModel.cs
+++ b/Main/System/Equip/EquipModel.cs
@@ -283,8 +283,11 @@
if (waitEquipOP.Count == 0)
return null;
- return PackManager.Instance.GetItemByIndex(PackType.DropItem, waitEquipOP.Dequeue());
+ // 鏂版墜寮曞涓紝涓嶅厑璁稿垏鎹㈣澶囩晫闈�
+ if (NewBieCenter.Instance.inGuiding)
+ return null;
+ return PackManager.Instance.GetItemByIndex(PackType.DropItem, waitEquipOP.Dequeue());
}
diff --git a/Main/System/FirstCharge/FirstChargeManager.cs b/Main/System/FirstCharge/FirstChargeManager.cs
index 8c5cb99..353ddd8 100644
--- a/Main/System/FirstCharge/FirstChargeManager.cs
+++ b/Main/System/FirstCharge/FirstChargeManager.cs
@@ -30,7 +30,8 @@
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
-
+ InitClickTabDict();
+ InitRedPoint();
}
public override void Release()
@@ -110,15 +111,15 @@
{
firstChargeInfoDict.Clear();
}
+
public void OnPlayerLoginOk()
{
- InitClickTabDict();
- InitRedPoint();
- if (FuncOpen.Instance.IsFuncOpen(FuncID)&& TryGetUnBuyFirstId(out int firstId))
+ if (FuncOpen.Instance.IsFuncOpen(FuncID) && TryGetUnBuyFirstId(out int firstId))
{
PopupWindowsProcessor.Instance.Add("FirstChargeWin");
}
}
+
public bool TryGetFirstChargeDataByFirstId(int firstId, out FirstChargeData firstChargeData)
{
return firstChargeInfoDict.TryGetValue(firstId, out firstChargeData);
@@ -254,7 +255,7 @@
UpdateRedPoint();
OnUpdateFirstChargeInfo?.Invoke();
}
-
+
/// <summary>
/// 妫�鏌ユ槸鍚︽墍鏈夐鍏呭鍔遍兘宸查鍙栵紝濡傛灉鏄紝鍒欏皢褰撳墠鏈嶅姟鍣ㄦ椂闂翠繚瀛樺埌鏈湴
/// </summary>
@@ -355,7 +356,7 @@
}
}
}
-
+
// 妫�鏌ユ槸鍚︽墍鏈夐鍏呭鍔遍兘宸茬粡棰嗗彇
public bool IsAllFirstChargeRewardsClaimed()
{
@@ -363,17 +364,17 @@
var firstChargeIds = FirstChargeConfig.GetKeys();
if (firstChargeIds == null || firstChargeIds.Count == 0)
return false;
-
+
foreach (var firstId in firstChargeIds)
{
// 灏濊瘯鑾峰彇棣栧厖鏁版嵁
if (!TryGetFirstChargeDataByFirstId(firstId, out var firstChargeData))
return false;
-
+
// 妫�鏌ユ槸鍚﹁喘涔�
if (!firstChargeData.IsBuy())
return false;
-
+
// 妫�鏌ユ槸鍚︽墍鏈夊鍔遍兘宸查鍙�
if (!firstChargeData.IsAllHave())
return false;
@@ -383,32 +384,32 @@
// 妫�鏌ユ槸鍚﹀凡缁忚繃浜嗙浜屽ぉ0鐐�
return true;
}
-
+
// 妫�鏌ユ槸鍚﹀凡缁忚繃浜嗘墍鏈夊鍔遍鍙栧畬姣曞悗鐨勭浜屽ぉ0鐐�
public bool IsNextDayAfterAllClaimed()
{
// 鐢熸垚涓�涓敮涓�鐨勯敭鏉ヨ幏鍙栨椂闂�
string key = $"FirstCharge_AllRewardsClaimed_Time_{PlayerDatas.Instance.baseData.PlayerID}";
-
+
// 妫�鏌ユ槸鍚﹀瓨鍦ㄨ褰曠殑鏃堕棿鎴�
if (!LocalSave.HasKey(key))
return false;
-
+
// 鑾峰彇璁板綍鐨勬椂闂存埑
string timeString = LocalSave.GetString(key);
if (string.IsNullOrEmpty(timeString))
return false;
-
+
// 瑙f瀽鏃堕棿鎴�
if (!long.TryParse(timeString, out long ticks))
return false;
-
+
// 灏嗘椂闂存埑杞崲涓篋ateTime
DateTime allRewardsClaimedTime = new DateTime(ticks);
-
+
// 璁$畻绗簩澶�0鐐圭殑鏃堕棿
DateTime nextDayStart = allRewardsClaimedTime.Date.AddDays(1);
-
+
// 鍒ゆ柇褰撳墠鏈嶅姟鍣ㄦ椂闂存槸鍚﹀凡缁忚繃浜嗙浜屽ぉ0鐐�
DateTime serverNow = TimeUtility.ServerNow;
return serverNow >= nextDayStart;
@@ -458,8 +459,8 @@
}
return true;
}
-
- // ... existing code ...
+
+ // ... existing code ...
/// <summary>
/// 鑾峰彇褰撳墠鏃堕棿鏄喘涔拌繖妗e厖鍊肩ぜ鍖呯殑绗嚑澶�
/// 璐拱鐨勫綋澶╃畻浣滅涓�澶╋紝绗簩澶�0鐐瑰悗绠楃浜屽ぉ锛屼互姝ょ被鎺�
@@ -469,15 +470,15 @@
{
DateTime serverNow = TimeUtility.ServerNow;
DateTime chargeTime = TimeUtility.GetTime(ChargeTime);
-
+
DateTime chargeDate = chargeTime.Date;
DateTime serverDate = serverNow.Date;
-
+
// 璁$畻浠庡厖鍊兼棩鏈熷埌褰撳墠鏃ユ湡鐨勫畬鏁村ぉ鏁�
// 璐拱鐨勫綋澶╃畻绗竴澶╋紝绗簩澶�0鐐瑰悗绠楃浜屽ぉ
TimeSpan timeSpan = serverDate - chargeDate;
int days = (int)timeSpan.TotalDays + 1; // +1 鍥犱负褰撳ぉ绠楃涓�澶�
-
+
int maxDay = FirstChargeManager.Instance.maxDay;
return Mathf.Min(maxDay, Mathf.Max(1, days));
diff --git a/Main/System/Mail/MailManager.cs b/Main/System/Mail/MailManager.cs
index 2c3a8ff..477112c 100644
--- a/Main/System/Mail/MailManager.cs
+++ b/Main/System/Mail/MailManager.cs
@@ -22,16 +22,12 @@
public readonly string dateFormat = "yyyy.MM.dd";
public string nowUuid = string.Empty;
public int personalMailMaxLimitCount;
+
+
public override void Init()
{
- if (tabRedpoint0 == null)
- {
- tabRedpoint0 = new Redpoint(MainRedDot.MailRepoint, GetTabRedpointId(MailCategory.Personal));
- }
- if (tabRedpoint1 == null)
- {
- tabRedpoint1 = new Redpoint(MainRedDot.MailRepoint, GetTabRedpointId(MailCategory.Global));
- }
+ tabRedpoint0 = new Redpoint(MainRedDot.MailRepoint, GetTabRedpointId(MailCategory.Personal));
+ tabRedpoint1 = new Redpoint(MainRedDot.MailRepoint, GetTabRedpointId(MailCategory.Global));
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
personalMailMaxLimitCount = int.Parse(FuncConfigConfig.Get("PersonalMail").Numerical1);
}
@@ -143,7 +139,7 @@
{
// 灏忎簬1澶╋紙浣嗘湭杩囨湡锛夛細鎸夌簿纭殑灏忔椂/鍒嗛挓鏄剧ず銆�
TimeSpan t = TimeSpan.FromDays(days);
- result = Language.Get("Mail12",StringUtility.Contact( " ", Language.Get("Mail13", t.Hours, t.Minutes)));
+ result = Language.Get("Mail12", StringUtility.Contact(" ", Language.Get("Mail13", t.Hours, t.Minutes)));
}
else
{
diff --git a/Main/System/Main/MainWin.cs b/Main/System/Main/MainWin.cs
index 06de8d3..993e17d 100644
--- a/Main/System/Main/MainWin.cs
+++ b/Main/System/Main/MainWin.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -49,6 +50,7 @@
{
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
AutoFightModel.Instance.OnFightEvent += OnSkillCast;
+ ChallengeTabWin.OnCloseChallengeTabWin += OnCloseChallengeTabWin;
base.OnPreOpen();
// 鍒锋柊UI
@@ -59,15 +61,22 @@
{
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
AutoFightModel.Instance.OnFightEvent -= OnSkillCast;
+ ChallengeTabWin.OnCloseChallengeTabWin -= OnCloseChallengeTabWin;
base.OnPreClose();
}
+ private void OnCloseChallengeTabWin()
+ {
+ tabButtons[3].state = TitleBtnState.Normal;
+ tabButtons[3].UpdateButtonState();
+ }
protected override void SelectBottomTab(int index)
{
if (index == 3)
{
//鎸戞垬鐗规畩鏄剧ず閫昏緫
+ UIManager.Instance.OpenWindow<ChallengeTabWin>();
return;
}
diff --git a/Main/System/NewBieGuidance/NewBieCenter.cs b/Main/System/NewBieGuidance/NewBieCenter.cs
index 4ea2df5..63fd9a6 100644
--- a/Main/System/NewBieGuidance/NewBieCenter.cs
+++ b/Main/System/NewBieGuidance/NewBieCenter.cs
@@ -30,12 +30,15 @@
List<int> allGuides = new List<int>();
public List<int> completeGuidesBuf = new List<int>();
+ //鍥犲叾浠栧師鍥犲鑷寸殑绛夊緟鏄剧ず鐨勫紩瀵肩獥鍙o紝鍦∣penWindow鏃朵細瑙﹀彂澶嶆煡锛屼絾鏃舵満澶櫄澧炲姞鍏抽棴鐣岄潰鏃惰Е鍙�
+ List<string> waitGuideWinNames = new List<string>();
bool inited = false;
public event Action guideStepChangeEvent;
public event Action guideBeginEvent;
public event Action<int> guideCompletedEvent;
+
public override void Init()
{
@@ -44,6 +47,7 @@
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
UIManager.Instance.OnOpenWindow += OnOpenWindow;
+ UIManager.Instance.OnCloseWindow += OnCloseWindow;
}
public override void Release()
@@ -53,6 +57,7 @@
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
UIManager.Instance.OnOpenWindow -= OnOpenWindow;
+ UIManager.Instance.OnCloseWindow -= OnCloseWindow;
}
void OnOpenWindow(UIBase _ui)
@@ -61,6 +66,22 @@
if (guides != null)
{
TryStartNewBieGuides(guides);
+ }
+ }
+
+ //鍏抽棴鍏朵粬鐣岄潰鏃跺鏌ユ湁娌¢渶瑕佺瓑寰呯殑寮曞
+ void OnCloseWindow(UIBase _ui)
+ {
+ foreach (var winName in waitGuideWinNames)
+ {
+ var guides = GuideConfig.GetGuideListByWinName(winName);
+ if (guides != null)
+ {
+ if (TryStartNewBieGuides(guides))
+ {
+ break;
+ }
+ }
}
}
@@ -78,7 +99,7 @@
var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.MissionClick);
if (guides != null)
{
- TryStartNewBieGuides(guides);
+ TryStartNewBieGuides(guides, true);
}
}
@@ -142,7 +163,8 @@
}
//鎵惧嚭鍙繘琛岀殑寮曞
- public void TryStartNewBieGuides(List<int> _guides)
+ //isOrgTrigger 鏄惁鏄師鐢熻Е鍙戯紝濡傜偣鍑荤殑鍙兘鏄師鐢熻Е鍙戯紝鍏朵粬鐨勯兘涓嶈兘
+ public bool TryStartNewBieGuides(List<int> _guides, bool isOrgTrigger = false)
{
if (!inited)
{
@@ -157,15 +179,14 @@
if (_guides == null)
{
- return;
+ return false;
}
if (currentGuide != 0)
{
- return;
+ return false;
}
- var ok = false;
for (int i = 0; i < _guides.Count; i++)
{
var guideId = _guides[i];
@@ -181,33 +202,57 @@
continue;
}
- ok = CheckGuideCondition(guideId);
- if (ok && currentGuide != guideId)
+ if (currentGuide != guideId && CheckGuideCondition(guideId, isOrgTrigger))
{
- StartNewBieGuide(guideId);
- break;
+ return StartNewBieGuide(guideId);
}
}
-
+
+ return false;
}
- public void StartNewBieGuide(int _id)
+ bool WaitGuide(int _id)
+ {
+ var config = GuideConfig.Get(_id);
+ if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(config.WinName))
+ {
+ if (!waitGuideWinNames.Contains(config.WinName))
+ {
+ waitGuideWinNames.Add(config.WinName);
+ }
+ return true;
+ }
+
+
+ return false;
+ }
+
+ public bool StartNewBieGuide(int _id)
{
if (_id == 0)
{
Debug.LogError("璇锋鏌ュ紩瀵糹d = 0 鐨勬儏鍐�");
- return;
+ return false;
}
var config = GuideConfig.Get(_id);
if (config == null)
{
Debug.LogError($"娌℃湁璇ュ紩瀵糏D锛岃妫�鏌ュ紩瀵糹d = {_id} 鐨勬儏鍐�");
- return;
+ return false;
}
- AutoFightModel.Instance.isPause = true;
+ if (WaitGuide(_id))
+ {
+ return false;
+ }
+ if (waitGuideWinNames.Contains(config.WinName))
+ {
+ waitGuideWinNames.Remove(config.WinName);
+ }
+
+ BattleManager.Instance.storyBattleField.IsPause = true;
currentGuide = _id;
guideStep = config.Steps.Length > 0 ? config.Steps[0] : 0;
@@ -226,7 +271,13 @@
guideStepChangeEvent?.Invoke();
}
UIManager.Instance.CloseWindow<ChatWin>();
+ return true;
+ }
+
+ bool IsNeedRecord(int _id)
+ {
+ return GuideConfig.Get(_id).NoRecord == 0;
}
public void FinishNewBieGuide(int _id)
@@ -235,54 +286,67 @@
currentGuide = 0;
UIManager.Instance.CloseWindow<NewBieWin>();
- if (!completeGuidesBuf.Contains(guideRecord))
+ if (IsNeedRecord(_id))
{
- completeGuidesBuf.Add(guideRecord);
- }
+ if (!completeGuidesBuf.Contains(guideRecord))
+ {
+ completeGuidesBuf.Add(guideRecord);
+ }
- var send = new CA222_tagCMSetGuideOK();
- send.GuideIndex = (byte)_id;
- send.IsOK = 1;
- GameNetSystem.Instance.SendInfo(send);
+ var send = new CA222_tagCMSetGuideOK();
+ send.GuideIndex = (byte)_id;
+ send.IsOK = 1;
+ GameNetSystem.Instance.SendInfo(send);
+ }
if (guideCompletedEvent != null)
{
guideCompletedEvent(guideRecord);
}
- AutoFightModel.Instance.isPause = false;
+ BattleManager.Instance.storyBattleField.IsPause = false;
}
public void RemoveNewBieGuide(int _id)
{
- if (!completeGuidesBuf.Contains(_id))
+ if (IsNeedRecord(_id))
{
- completeGuidesBuf.Add(_id);
- }
+ if (!completeGuidesBuf.Contains(_id))
+ {
+ completeGuidesBuf.Add(_id);
+ }
- var send = new CA222_tagCMSetGuideOK();
- send.GuideIndex = (byte)_id;
- send.IsOK = 1;
- GameNetSystem.Instance.SendInfo(send);
+ var send = new CA222_tagCMSetGuideOK();
+ send.GuideIndex = (byte)_id;
+ send.IsOK = 1;
+ GameNetSystem.Instance.SendInfo(send);
+ }
}
public void FinishCurrentGuideWithoutCloseWin()
{
var guideRecord = currentGuide;
currentGuide = 0;
- completeGuidesBuf.Add(guideRecord);
- var send = new CA222_tagCMSetGuideOK();
- send.GuideIndex = (byte)guideRecord;
- send.IsOK = 1;
- GameNetSystem.Instance.SendInfo(send);
+ if (IsNeedRecord(guideRecord))
+ {
+ if (!completeGuidesBuf.Contains(guideRecord))
+ {
+ completeGuidesBuf.Add(guideRecord);
+ }
+
+ var send = new CA222_tagCMSetGuideOK();
+ send.GuideIndex = (byte)guideRecord;
+ send.IsOK = 1;
+ GameNetSystem.Instance.SendInfo(send);
+ }
if (guideCompletedEvent != null)
{
guideCompletedEvent(guideRecord);
}
- AutoFightModel.Instance.isPause = false;
+ BattleManager.Instance.storyBattleField.IsPause = false;
}
public void ReportGuideStepComplete(int _step)
@@ -315,8 +379,8 @@
}
-
- public bool CheckGuideCondition(int _guideId)
+ //isOrgTrigger 鏄惁鏄師鐢熻Е鍙戯紝濡傜偣鍑荤殑鍙兘鏄師鐢熻Е鍙戯紝鍏朵粬鐨勯兘涓嶈兘
+ public bool CheckGuideCondition(int _guideId, bool isOrgTrigger)
{
var config = GuideConfig.Get(_guideId);
if (config == null)
@@ -324,34 +388,41 @@
return false;
}
if (!UIManager.Instance.IsOpened(config.WinName))
- {
+ {
return false;
}
switch ((GuideTriggerType)config.TriggerType)
- {
- case GuideTriggerType.None:
- return true;
- case GuideTriggerType.FunctionOpen:
- return FuncOpen.Instance.IsFuncOpen(config.Condition);
- case GuideTriggerType.Level:
- return PlayerDatas.Instance.baseData.LV >= config.Condition;
- case GuideTriggerType.OpenWindow:
- return UIManager.Instance.IsOpened(config.WinName);
- case GuideTriggerType.MainLineQuestCanDo:
- if (config.SupplementCondition == 2)
- {
- return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
- }
- return TaskManager.Instance.mainTask.TaskID == config.Condition;
- case GuideTriggerType.Map:
- return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
- case GuideTriggerType.MissionClick:
- return TaskManager.Instance.GetMainTaskType() == config.Condition;
- default:
- return false;
- }
+ {
+ case GuideTriggerType.None:
+ return true;
+ case GuideTriggerType.FunctionOpen:
+ return FuncOpen.Instance.IsFuncOpen(config.Condition);
+ case GuideTriggerType.Level:
+ return PlayerDatas.Instance.baseData.LV >= config.Condition;
+ case GuideTriggerType.OpenWindow:
+ return UIManager.Instance.IsOpened(config.WinName);
+ case GuideTriggerType.MainLineQuestCanDo:
+ if (config.SupplementCondition == 2)
+ {
+ return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
+ }
+ return TaskManager.Instance.mainTask.TaskID == config.Condition;
+ case GuideTriggerType.Map:
+ return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
+ case GuideTriggerType.MissionClick:
+ //鍙湁鐪熸鐐瑰嚮鎵嶅彲浠ヨЕ鍙�
+ if (isOrgTrigger)
+ {
+ return TaskManager.Instance.GetMainTaskType() == config.Condition && TaskManager.Instance.GetMainTaskState() != 2;
+ }
+ return false;
+ default:
+ return false;
+ }
}
+
+
public void CompleteAllGuides()
{
@@ -363,10 +434,14 @@
currentGuide = 0;
UIManager.Instance.CloseWindow<NewBieWin>();
+ completeGuidesBuf.Clear();
var allGuideKeys = GuideConfig.GetKeys();
for (int i = 0; i < allGuideKeys.Count; i++)
{
- completeGuidesBuf.Add(allGuideKeys[i]);
+ if (IsNeedRecord(allGuideKeys[i]))
+ {
+ completeGuidesBuf.Add(allGuideKeys[i]);
+ }
}
}
diff --git a/Main/System/NewBieGuidance/NewBieWin.cs b/Main/System/NewBieGuidance/NewBieWin.cs
index 19c9656..4239c72 100644
--- a/Main/System/NewBieGuidance/NewBieWin.cs
+++ b/Main/System/NewBieGuidance/NewBieWin.cs
@@ -62,7 +62,7 @@
NewBieCenter.Instance.guideStepChangeEvent += OnStepChange;
}
- protected override void OnPreClose()
+ protected override void OnClose()
{
NewBieCenter.Instance.guideStepChangeEvent -= OnStepChange;
if (NewBieCenter.Instance.currentGuide != 0)
@@ -102,8 +102,15 @@
{
m_ClickTarget = FindTransform(stepConfig.UIElementPath);
if (m_ClickTarget != null)
- {
+ {
m_lastTargetPosition = m_ClickTarget.position;
+ }
+ else
+ {
+ #if UNITY_EDITOR
+ if (!string.IsNullOrEmpty(stepConfig.UIElementPath))
+ Debug.LogError($"寮曞姝ラ{step}鎵句笉鍒扮洰鏍噞stepConfig.UIElementPath}, 鑻ヤ笉闇�瑕佽鍒犻櫎璺緞");
+ #endif
}
}
catch (Exception ex)
@@ -249,6 +256,10 @@
{
if (Input.GetMouseButtonUp(0))
{
+ if (stepConfig == null)
+ {
+ return;
+ }
if (stepConfig.clickAnyWhereComplete || m_NewBieMask.mask.IsInCirleArea(Input.mousePosition, CameraManager.uiCamera))
{
if (m_ClickTarget == null)
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index 315913f..4f3fec5 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -96,7 +96,7 @@
public const int FairySiegeRepoint = 466; //浠欑洘鏀诲煄鎴�
public const int MailRepoint = 467; //閭
public const int FirstChargeRepoint = 468; //棣栧厖
-
+ public const int BoneFieldRepoint = 469; //鐧介鐩堥噹
public void Register()
diff --git a/Main/System/Tip/ConfirmCancel.cs b/Main/System/Tip/ConfirmCancel.cs
index 58b15e0..88c0465 100644
--- a/Main/System/Tip/ConfirmCancel.cs
+++ b/Main/System/Tip/ConfirmCancel.cs
@@ -336,6 +336,7 @@
Auction = 0, //鎷嶅崠琛�
WashCancel = 1, //娲楃粌鍙栨秷
GoldRush = 2, //娣橀噾
+ BoneField = 3, //鐧介鐩堥噹
}
--
Gitblit v1.8.0