From 4de42356ff71d295be7d3bf2e0b7d218b719ad9c Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 08 十二月 2025 16:47:06 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/Config/Configs/HeroQualityConfig.cs | 17 +
Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs | 29 +
Main/System/LineupRecommend/LineupRecommendCell.cs | 100 ++++++
Main/System/LineupRecommend/LineupRecommendBaseWin.cs.meta | 11
Main/Config/Configs/LineupRecommendConfig.cs | 77 ++++
Main/System/HeroUI/HeroCollectionLvUpWin.cs | 29 +
Main/Config/ConfigManager.cs | 3
Main/System/LineupRecommend/LineupRecommendManager.cs.meta | 11
Main/System/Redpoint/MainRedDot.cs | 1
Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs.meta | 11
Main/System/LineupRecommend/LineupRecommendBaseWin.cs | 20 +
Main/System/LineupRecommend/LineupRecommendWin.cs.meta | 11
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs | 1
Main/System/LineupRecommend/LineupRecommendWin.cs | 136 ++++++++
Main/System/LineupRecommend/LineupRecommendManager.cs | 328 ++++++++++++++++++++
Main/Config/Configs/LineupRecommendConfig.cs.meta | 11
Main/System/LineupRecommend/LineupRecommendCell.cs.meta | 11
Main/Main.cs | 1
Main/System/LineupRecommend.meta | 8
Main/System/LineupRecommend/LineupRecommendItem.cs | 74 ++++
Main/System/HeroUI/HeroListWin.cs | 12
Main/System/LineupRecommend/LineupRecommendItem.cs.meta | 11
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs | 12
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs.meta | 11
24 files changed, 920 insertions(+), 16 deletions(-)
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index c6aa9df..97d68ae 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -60,6 +60,7 @@
typeof(HorseSkinConfig),
typeof(ItemCompoundConfig),
typeof(ItemConfig),
+ typeof(LineupRecommendConfig),
typeof(LLMJConfig),
typeof(MainChapterConfig),
typeof(MainLevelConfig),
@@ -277,6 +278,8 @@
ClearConfigDictionary<ItemCompoundConfig>();
// 娓呯┖ ItemConfig 瀛楀吀
ClearConfigDictionary<ItemConfig>();
+ // 娓呯┖ LineupRecommendConfig 瀛楀吀
+ ClearConfigDictionary<LineupRecommendConfig>();
// 娓呯┖ LLMJConfig 瀛楀吀
ClearConfigDictionary<LLMJConfig>();
// 娓呯┖ MainChapterConfig 瀛楀吀
diff --git a/Main/Config/Configs/HeroQualityConfig.cs b/Main/Config/Configs/HeroQualityConfig.cs
index 95be87d..4bae93b 100644
--- a/Main/Config/Configs/HeroQualityConfig.cs
+++ b/Main/Config/Configs/HeroQualityConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�12鏈�5鏃�
+// [ Date ]: Monday, December 8, 2025
//--------------------------------------------------------
using System.Collections.Generic;
@@ -24,6 +24,7 @@
public int StarAddPer;
public int[] BookActAwardMoney;
public int[][] DismissReturnItems;
+ public int[] RecommendAwardMoney;
public override int LoadKey(string _key)
{
@@ -62,6 +63,20 @@
}
DismissReturnItems = JsonMapper.ToObject<int[][]>(tables[7].Replace("(", "[").Replace(")", "]"));
+
+ if (tables[8].Contains("["))
+ {
+ RecommendAwardMoney = JsonMapper.ToObject<int[]>(tables[8]);
+ }
+ else
+ {
+ string[] RecommendAwardMoneyStringArray = tables[8].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ RecommendAwardMoney = new int[RecommendAwardMoneyStringArray.Length];
+ for (int i=0;i<RecommendAwardMoneyStringArray.Length;i++)
+ {
+ int.TryParse(RecommendAwardMoneyStringArray[i],out RecommendAwardMoney[i]);
+ }
+ }
}
catch (Exception exception)
{
diff --git a/Main/Config/Configs/LineupRecommendConfig.cs b/Main/Config/Configs/LineupRecommendConfig.cs
new file mode 100644
index 0000000..7578b1a
--- /dev/null
+++ b/Main/Config/Configs/LineupRecommendConfig.cs
@@ -0,0 +1,77 @@
+锘�//--------------------------------------------------------
+// [Author]: YYL
+// [ Date ]: 2025骞�12鏈�5鏃�
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class LineupRecommendConfig : ConfigBase<int, LineupRecommendConfig>
+{
+ static LineupRecommendConfig()
+ {
+ // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+ visit = true;
+ }
+
+ public int RecommendID;
+ public int[] HeroIDList;
+ public int[] PosIndexList;
+ public string Name;
+ public string Feature;
+ public string Desc;
+
+ 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 RecommendID);
+
+ if (tables[1].Contains("["))
+ {
+ HeroIDList = JsonMapper.ToObject<int[]>(tables[1]);
+ }
+ else
+ {
+ string[] HeroIDListStringArray = tables[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ HeroIDList = new int[HeroIDListStringArray.Length];
+ for (int i=0;i<HeroIDListStringArray.Length;i++)
+ {
+ int.TryParse(HeroIDListStringArray[i],out HeroIDList[i]);
+ }
+ }
+
+ if (tables[2].Contains("["))
+ {
+ PosIndexList = JsonMapper.ToObject<int[]>(tables[2]);
+ }
+ else
+ {
+ string[] PosIndexListStringArray = tables[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ PosIndexList = new int[PosIndexListStringArray.Length];
+ for (int i=0;i<PosIndexListStringArray.Length;i++)
+ {
+ int.TryParse(PosIndexListStringArray[i],out PosIndexList[i]);
+ }
+ }
+
+ Name = tables[3];
+
+ Feature = tables[4];
+
+ Desc = tables[5];
+ }
+ catch (Exception exception)
+ {
+ Debug.LogError(exception);
+ }
+ }
+}
diff --git a/Main/Config/Configs/LineupRecommendConfig.cs.meta b/Main/Config/Configs/LineupRecommendConfig.cs.meta
new file mode 100644
index 0000000..c5400d0
--- /dev/null
+++ b/Main/Config/Configs/LineupRecommendConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1dba5f6e898ed7a41b2ef35456c8d731
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs
new file mode 100644
index 0000000..1ecc684
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 29 闃靛鎺ㄨ崘淇℃伅 #tagSCLineupRecommendInfo
+
+public class DTCB129_tagSCLineupRecommendInfo : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ HB129_tagSCLineupRecommendInfo vNetData = vNetPack as HB129_tagSCLineupRecommendInfo;
+ LineupRecommendManager.Instance.UpdateLineupRecommendInfo(vNetData);
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs.meta
new file mode 100644
index 0000000..7c3b843
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB129_tagSCLineupRecommendInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c9d2c83b99b093c4f990e8ebb1bc14f2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index e145559..1c12966 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -133,6 +133,7 @@
Register(typeof(HB310_tagMCTalk), typeof(DTCB310_tagMCTalk));
Register(typeof(HB311_tagMCTalkCacheList), typeof(DTCB311_tagMCTalkCacheList));
Register(typeof(HA319_tagMCPackDownloadRecord), typeof(DTCA319_tagMCPackDownloadRecord));
+ Register(typeof(HB129_tagSCLineupRecommendInfo), typeof(DTCB129_tagSCLineupRecommendInfo));
}
//涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs
new file mode 100644
index 0000000..2edf619
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs
@@ -0,0 +1,29 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 29 闃靛鎺ㄨ崘淇℃伅 #tagSCLineupRecommendInfo
+
+public class HB129_tagSCLineupRecommendInfo : GameNetPackBasic {
+ public byte Count;
+ public tagSCLineupRecommend[] RecommendList;
+
+ public HB129_tagSCLineupRecommendInfo () {
+ _cmd = (ushort)0xB129;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out Count, vBytes, NetDataType.BYTE);
+ RecommendList = new tagSCLineupRecommend[Count];
+ for (int i = 0; i < Count; i ++) {
+ RecommendList[i] = new tagSCLineupRecommend();
+ TransBytes (out RecommendList[i].RecommendID, vBytes, NetDataType.BYTE);
+ TransBytes (out RecommendList[i].AwardState, vBytes, NetDataType.DWORD);
+ }
+ }
+
+ public class tagSCLineupRecommend {
+ public byte RecommendID; //鎺ㄨ崘闃靛琛↖D
+ public uint AwardState; //鎺ㄨ崘姝﹀皢棰嗗鐘舵�侊紝鎸夋灏嗛厤缃殑椤哄簭浣嶅瓨鍌ㄦ槸鍚﹀凡棰嗗彇
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs.meta
new file mode 100644
index 0000000..5c03f93
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB129_tagSCLineupRecommendInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 438f34b9f832ae1458a219768ac86057
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Main.cs b/Main/Main.cs
index 9d6c377..c01f11b 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -92,6 +92,7 @@
managers.Add(AttributeManager.Instance);
managers.Add(FuncNPCManager.Instance);
managers.Add(GuildBossManager.Instance);
+ managers.Add(LineupRecommendManager.Instance);
foreach (var manager in managers)
{
diff --git a/Main/System/HeroUI/HeroCollectionLvUpWin.cs b/Main/System/HeroUI/HeroCollectionLvUpWin.cs
index b4aa863..cf71fb2 100644
--- a/Main/System/HeroUI/HeroCollectionLvUpWin.cs
+++ b/Main/System/HeroUI/HeroCollectionLvUpWin.cs
@@ -32,7 +32,7 @@
[SerializeField] GameObject fullImg;
- [SerializeField] Text titleText;
+ // [SerializeField] Text titleText;
protected override void InitComponent()
@@ -93,29 +93,34 @@
// }
// else
{
- fullPanel.SetActive(false);
- lvupPanel.SetActive(true);
+ // fullPanel.SetActive(true);
+ lvupPanel.SetActive(state == 1);
+ fullHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], colData.BookStarLV);
+ name3.text = colData.BookBreakLV == 0 ? config.Name : Language.Get("herocardbreaklv", config.Name, colData.BookBreakLV);
+
+
btn.SetActive(true);
- beforeHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], colData.BookStarLV);
- name1.text = colData.BookBreakLV == 0 ? config.Name : Language.Get("herocardbreaklv", config.Name, colData.BookBreakLV);
+ // beforeHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], colData.BookStarLV);
+ // name1.text = colData.BookBreakLV == 0 ? config.Name : Language.Get("herocardbreaklv", config.Name, colData.BookBreakLV);
// int addPer = 0;
var qualityConfig = HeroQualityConfig.Get(config.Quality);
awardInfo.text = string.Empty;
unActiveGo.SetActive(false);
- titleText.text = Language.Get("HeroAwake12");
+ // titleText.text = Language.Get("HeroAwake12");
int afterBreakLV = colData.BookBreakLV;
int afterStarLV = colData.BookStarLV;
if (state == 1)
{
+ lvupPanel.SetActive(true);
//婵�娲�
// addPer = qualityConfig.BookInitAddPer;
btnText.text = Language.Get("L1131"); //L1131 婵�娲�
awardInfo.text = Language.Get("HeroAwake10", UIHelper.GetIconNameWithMoneyType(qualityConfig.BookActAwardMoney[0]),
qualityConfig.BookActAwardMoney[1]);
unActiveGo.SetActive(true);
- titleText.text = Language.Get("HeroAwake11");
+ // titleText.text = Language.Get("HeroAwake11");
}
// else if (state == 3)
// {
@@ -144,16 +149,16 @@
btnText.text = Language.Get("L1001");
}
- fullPanel.SetActive(true);
+ // fullPanel.SetActive(true);
lvupPanel.SetActive(false);
- fullHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], colData.BookStarLV);
- name3.text = colData.BookBreakLV == 0 ? config.Name : Language.Get("herocardbreaklv", config.Name, colData.BookBreakLV);
+ // fullHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], colData.BookStarLV);
+ // name3.text = colData.BookBreakLV == 0 ? config.Name : Language.Get("herocardbreaklv", config.Name, colData.BookBreakLV);
}
- afterHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], afterStarLV);
- name2.text = afterBreakLV == 0 ? config.Name :Language.Get("herocardbreaklv", config.Name, afterBreakLV);
+ // afterHeadCell.Init(HeroUIManager.Instance.selectCollectHeroID, config.SkinIDList[0], afterStarLV);
+ // name2.text = afterBreakLV == 0 ? config.Name :Language.Get("herocardbreaklv", config.Name, afterBreakLV);
// for (int i = 0; i < beforeAttrValues.Length; i++)
diff --git a/Main/System/HeroUI/HeroListWin.cs b/Main/System/HeroUI/HeroListWin.cs
index 9b6bf0c..b010d65 100644
--- a/Main/System/HeroUI/HeroListWin.cs
+++ b/Main/System/HeroUI/HeroListWin.cs
@@ -19,6 +19,8 @@
[SerializeField] Button changeHeroPosBtn; //甯冮樀鎸夐挳
[SerializeField] Transform heroSelectBehaviour;
HeroSelectBehaviour fiterManager; //姝﹀皢绛涢��
+ [SerializeField] ButtonEx lineupRecommendBtn;
+
SinglePack singlePack;
@@ -40,6 +42,10 @@
});
fiterManager = HeroSelectBehaviour.Create(heroSelectBehaviour);
+ lineupRecommendBtn.AddListener(() =>
+ {
+ UIManager.Instance.OpenWindow<LineupRecommendBaseWin>();
+ });
}
@@ -106,7 +112,7 @@
continue;
if (hero.heroId == heroID)
{
- return index/4 - 1;
+ return index / 4 - 1;
}
}
return -1;
@@ -120,7 +126,7 @@
RefreshPackCount();
-
+
}
@@ -263,7 +269,7 @@
}
void GridRefreshEvent(PackType type)
- {
+ {
if (type != PackType.Hero)
return;
diff --git a/Main/System/LineupRecommend.meta b/Main/System/LineupRecommend.meta
new file mode 100644
index 0000000..730601f
--- /dev/null
+++ b/Main/System/LineupRecommend.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 51bbd3838772ee843ac23ef8ff48b89c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/LineupRecommend/LineupRecommendBaseWin.cs b/Main/System/LineupRecommend/LineupRecommendBaseWin.cs
new file mode 100644
index 0000000..a921412
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendBaseWin.cs
@@ -0,0 +1,20 @@
+
+using UnityEngine;
+
+public class LineupRecommendBaseWin : OneLevelWin
+{
+ protected override void OpenSubUIByTabIndex()
+ {
+ switch (functionOrder)
+ {
+ case 0:
+ currentSubUI = UIManager.Instance.OpenWindow<LineupRecommendWin>();
+ break;
+
+ default:
+ Debug.LogWarning("鏈煡鐨勬爣绛剧储寮�: " + functionOrder);
+ break;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Main/System/LineupRecommend/LineupRecommendBaseWin.cs.meta b/Main/System/LineupRecommend/LineupRecommendBaseWin.cs.meta
new file mode 100644
index 0000000..93d5fb5
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendBaseWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9441087b3e26ee84aa8e21ea77bd78e1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/LineupRecommend/LineupRecommendCell.cs b/Main/System/LineupRecommend/LineupRecommendCell.cs
new file mode 100644
index 0000000..7d5bf70
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendCell.cs
@@ -0,0 +1,100 @@
+using System.Collections.Generic;
+using System.Text;
+using UnityEngine;
+
+public class LineupRecommendCell : MonoBehaviour
+{
+ [SerializeField] List<LineupRecommendItem> lineupRecommendItems = new List<LineupRecommendItem>();
+ [SerializeField] TextEx txtLineupName;
+ [SerializeField] TextEx txtHeroCount;
+ [SerializeField] ButtonEx btnUse;
+ [SerializeField] Transform transOn;
+ [SerializeField] ButtonEx btnOff;
+ [SerializeField] RichText txtLineupDesc;
+ [SerializeField] Transform transOff;
+ [SerializeField] ButtonEx btnOn;
+
+ LineupRecommendManager manager { get { return LineupRecommendManager.Instance; } }
+ public void Display(int index)
+ {
+ var list = manager.GetSortShowList();
+ if (index < 0 || index >= list.Count)
+ return;
+ var recommendID = list[index];
+
+ if (!LineupRecommendConfig.HasKey(recommendID))
+ return;
+ var config = LineupRecommendConfig.Get(recommendID);
+
+ if (!manager.TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty())
+ return;
+ if (!TryGetHasLineupHeroCount(recommendID, out int hasCout, out int totalCount))
+ return;
+
+ bool isOn = manager.IsOn(recommendID);
+ transOn.SetActive(isOn);
+ transOff.SetActive(!isOn);
+
+
+ for (int i = 0; i < lineupRecommendItems.Count; i++)
+ {
+ if (i < heroIDArr.Length)
+ {
+ lineupRecommendItems[i].SetActive(true);
+ lineupRecommendItems[i].Display(recommendID, i);
+ }
+ else
+ {
+ lineupRecommendItems[i].SetActive(false);
+ }
+ }
+ txtLineupName.text = config.Name;
+ txtHeroCount.text = Language.Get("LineupRecommend02", hasCout, totalCount);
+ txtLineupDesc.text = GetDesc(recommendID);
+ btnUse.SetListener(() =>
+ {
+ manager.UseTeam(recommendID);
+ });
+ btnOff.SetListener(() =>
+ {
+ manager.SetOn(recommendID, false);
+ });
+ btnOn.SetListener(() =>
+ {
+ manager.SetOn(recommendID, true);
+ });
+ }
+
+ public bool TryGetHasLineupHeroCount(int recommendID, out int hasCout, out int totalCount)
+ {
+ hasCout = 0;
+ totalCount = 0;
+ if (!manager.TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty())
+ return false;
+ totalCount = heroIDArr.Length;
+ foreach (var heroID in heroIDArr)
+ {
+ bool isHasHero = HeroManager.Instance.HasHero(heroID);
+ if (isHasHero)
+ {
+ hasCout += 1;
+ }
+ }
+ return true;
+ }
+
+ public string GetDesc(int recommendID)
+ {
+ if (!LineupRecommendConfig.HasKey(recommendID))
+ return string.Empty;
+ var config = LineupRecommendConfig.Get(recommendID);
+
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.Append(Language.Get("LineupRecommend04"));
+ stringBuilder.Append(config.Feature);
+ stringBuilder.AppendLine();
+ stringBuilder.Append(Language.Get("LineupRecommend05"));
+ stringBuilder.Append(config.Desc);
+ return stringBuilder.ToString();
+ }
+}
\ No newline at end of file
diff --git a/Main/System/LineupRecommend/LineupRecommendCell.cs.meta b/Main/System/LineupRecommend/LineupRecommendCell.cs.meta
new file mode 100644
index 0000000..62e48ae
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2057b29ec4ef80b41a56fca1d621c514
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/LineupRecommend/LineupRecommendItem.cs b/Main/System/LineupRecommend/LineupRecommendItem.cs
new file mode 100644
index 0000000..8bd4c3d
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendItem.cs
@@ -0,0 +1,74 @@
+using UnityEngine;
+
+public class LineupRecommendItem : MonoBehaviour
+{
+ [SerializeField] ButtonEx btnClick;
+ [SerializeField] ImageEx imgSquareIcon;
+ [SerializeField] ImageEx imgHeroHead;
+ [SerializeField] ImageEx imgCountry;
+ [SerializeField] TextEx txtName;
+ [SerializeField] ImageEx imgMask;
+ [SerializeField] TextEx txtNoHave;
+ [SerializeField] ImageEx imgMoney;
+ [SerializeField] TextEx txtMoney;
+ [SerializeField] Color32 colMoneyNoActivate;
+ [SerializeField] Color32 colMoneyCanActivate;
+ [SerializeField] TextEx txtDesc;
+ [SerializeField] ImageEx imgRed;
+ LineupRecommendManager manager { get { return LineupRecommendManager.Instance; } }
+ public void Display(int recommendID, int index)
+ {
+ if (!manager.TryGetHeroConfigByIndex(recommendID, index, out HeroConfig heroConfig))
+ return;
+
+ if (!manager.TryGetMoneyInfo(recommendID, index, out int moneyType, out int moneyNeedCnt))
+ return;
+
+ int heroID = heroConfig.HeroID;
+ if (!manager.TryGetHeroSkinConfig(heroID, out HeroSkinConfig heroSkinConfig))
+ return;
+
+ var sprite = UILoader.LoadSprite("HeroHead", heroSkinConfig.SquareIcon);
+ if (sprite == null)
+ {
+ imgHeroHead.SetSprite("herohead_default");
+ }
+ else
+ {
+ imgHeroHead.overrideSprite = sprite;
+ }
+
+ imgSquareIcon.SetSprite("heroheadBG" + heroConfig.Quality);
+ imgCountry.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
+ txtName.text = heroConfig.Name;
+ txtDesc.text = heroConfig.Desc;
+
+ LineupRecommendHeroState heroState = manager.GetHeroState(recommendID, index);
+ imgMask.SetActive(heroState != LineupRecommendHeroState.ActivateAndHave);
+ txtNoHave.SetActive(heroState == LineupRecommendHeroState.ActivateButNoHave);
+ imgMoney.SetActive(heroState == LineupRecommendHeroState.NoActivate || heroState == LineupRecommendHeroState.CanActivate);
+ txtMoney.SetActive(heroState == LineupRecommendHeroState.NoActivate || heroState == LineupRecommendHeroState.CanActivate);
+ imgRed.SetActive(heroState == LineupRecommendHeroState.CanActivate);
+
+ imgMoney.SetIconWithMoneyType(moneyType);
+ imgMoney.gray = heroState == LineupRecommendHeroState.NoActivate;
+ txtMoney.text = moneyNeedCnt.ToString();
+ txtMoney.color = heroState == LineupRecommendHeroState.NoActivate ? colMoneyNoActivate : colMoneyCanActivate;
+
+ btnClick.SetListener(() =>
+ {
+ if (heroState == LineupRecommendHeroState.CanActivate)
+ {
+ manager.SendGetReward(recommendID, index);
+ }
+ else
+ {
+ HeroUIManager.Instance.selectForPreviewHeroID = heroConfig.HeroID;
+ UIManager.Instance.OpenWindow<HeroBestWin>();
+ }
+ });
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/Main/System/LineupRecommend/LineupRecommendItem.cs.meta b/Main/System/LineupRecommend/LineupRecommendItem.cs.meta
new file mode 100644
index 0000000..5a637e7
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e23320880bdf6fd40a654bf05ee2a9c6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/LineupRecommend/LineupRecommendManager.cs b/Main/System/LineupRecommend/LineupRecommendManager.cs
new file mode 100644
index 0000000..aeff54d
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendManager.cs
@@ -0,0 +1,328 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using UnityEngine;
+
+
+public enum LineupRecommendHeroState
+{
+ NoActivate = 0, //0 - 鏈縺娲�
+ CanActivate = 1, // 1 - 鍙縺娲�
+ ActivateAndHave = 2, // 2 - 宸茶幏寰�
+ ActivateButNoHave = 3, // 3 - 鏈幏寰�
+}
+public class LineupRecommendManager : GameSystemManager<LineupRecommendManager>
+{
+ Dictionary<int, uint> haveDict = new Dictionary<int, uint>();
+
+ public event Action OnUpdateLineupRecommendInfoEvent;
+
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+ HeroManager.Instance.onHeroChangeEvent += OnHeroChangeEvent;
+ HeroManager.Instance.onHeroDeleteEvent += OnHeroDeleteEvent;
+ HeroUIManager.Instance.OnHeroCollectEvent += OnHeroCollectEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+ HeroManager.Instance.onHeroChangeEvent -= OnHeroChangeEvent;
+ HeroManager.Instance.onHeroDeleteEvent -= OnHeroDeleteEvent;
+ HeroUIManager.Instance.OnHeroCollectEvent -= OnHeroCollectEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+ }
+
+ private void OnFuncStateChangeEvent(int obj)
+ {
+ if (obj != funcId)
+ return;
+ UpdateRedPoint();
+ }
+
+ private void OnPlayerLoginOk()
+ {
+ UpdateRedPoint();
+ }
+ private void OnHeroCollectEvent()
+ {
+ UpdateRedPoint();
+ }
+
+ private void OnHeroDeleteEvent(int obj)
+ {
+ UpdateRedPoint();
+ }
+
+ private void OnHeroChangeEvent(HeroInfo heroInfo)
+ {
+ UpdateRedPoint();
+ }
+
+ private void OnBeforePlayerDataInitializeEvent()
+ {
+ haveDict.Clear();
+ }
+
+ // 鍝簺id鏄睍寮�鐨�
+ List<int> onList = new List<int>();
+ public event Action OnUpdateSwitchOnOrOffEvent;
+
+ public void ClearOnList()
+ {
+ onList.Clear();
+ }
+
+ public bool IsOn(int id)
+ {
+ return onList.Contains(id);
+ }
+
+ public void SetOn(int id, bool isOn)
+ {
+ if (isOn)
+ {
+ if (!onList.Contains(id))
+ {
+ onList.Add(id);
+ OnUpdateSwitchOnOrOffEvent?.Invoke();
+ }
+ }
+ else
+ {
+ onList.Remove(id);
+ OnUpdateSwitchOnOrOffEvent?.Invoke();
+ }
+ }
+
+ List<int> sortShowList = null;
+ public List<int> GetSortShowList()
+ {
+ if (sortShowList.IsNullOrEmpty())
+ {
+ sortShowList = LineupRecommendConfig.GetKeys();
+ sortShowList.Sort();
+ }
+ return sortShowList;
+ }
+
+ public bool TryGetMoneyInfo(int RecommendID, int index, out int moneyType, out int moneyNeedCnt)
+ {
+ moneyType = 0;
+ moneyNeedCnt = 0;
+ if (!TryGetHeroConfigByIndex(RecommendID, index, out HeroConfig config))
+ return false;
+ int quality = config.Quality;
+ if (!HeroQualityConfig.HasKey(quality))
+ return false;
+ HeroQualityConfig heroQualityConfig = HeroQualityConfig.Get(quality);
+ int[] recommendAwardMoney = heroQualityConfig.RecommendAwardMoney;
+ if (recommendAwardMoney.IsNullOrEmpty() || recommendAwardMoney.Length < 2)
+ return false;
+ moneyType = recommendAwardMoney[0];
+ moneyNeedCnt = recommendAwardMoney[1];
+ return true;
+ }
+
+ public bool TryGetHeroSkinConfig(int heroID, out HeroSkinConfig skinConfig)
+ {
+ skinConfig = null;
+ if (!HeroConfig.HasKey(heroID))
+ return false;
+ HeroConfig heroConfig = HeroConfig.Get(heroID);
+ int[] skinIDList = heroConfig.SkinIDList;
+ if (skinIDList.IsNullOrEmpty())
+ return false;
+ int skinID = skinIDList[0];
+ if (!HeroSkinConfig.HasKey(skinID))
+ return false;
+ skinConfig = HeroSkinConfig.Get(skinID);
+ return true;
+ }
+
+ public bool TryGetHaveDictValue(int recommendID, out uint awardState)
+ {
+ return haveDict.TryGetValue(recommendID, out awardState);
+ }
+
+ public bool TryGetHeroIDListByRecommendID(int recommendID, out int[] heroIDArr)
+ {
+ heroIDArr = null;
+ if (!LineupRecommendConfig.HasKey(recommendID))
+ return false;
+ LineupRecommendConfig config = LineupRecommendConfig.Get(recommendID);
+ heroIDArr = config.HeroIDList;
+ return true;
+ }
+
+ // 鎺ㄨ崘姝﹀皢鏄惁涓�涓篃娌℃湁
+ public bool HasHeroMin(int recommendID)
+ {
+
+ if (!TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty())
+ return false;
+ foreach (var heroID in heroIDArr)
+ {
+ if (HeroManager.Instance.HasHero(heroID))
+ return true;
+ }
+ return false;
+ }
+
+ public void UseTeam(int recommendID)
+ {
+ if (!LineupRecommendConfig.HasKey(recommendID))
+ return;
+ LineupRecommendConfig config = LineupRecommendConfig.Get(recommendID);
+ int[] heroIDList = config.HeroIDList;
+ int[] posIndexList = config.PosIndexList;
+ if (heroIDList.IsNullOrEmpty() || posIndexList.IsNullOrEmpty() || heroIDList.Length != posIndexList.Length)
+ return;
+
+ bool hasHeroMin = HasHeroMin(recommendID);
+ if (!hasHeroMin)
+ {
+ SysNotifyMgr.Instance.ShowTip("LineupRecommendErr01");
+ return;
+ }
+
+ TeamBase storyTeam = TeamManager.Instance.GetTeam(TeamType.Story);
+ storyTeam.RemoveAllHeroes();
+
+ int currentMaxLineupCount = TeamConst.MaxTeamHeroCount - HeroUIManager.Instance.lockIndexList.Count;
+ for (int i = 0; i < heroIDList.Length; i++)
+ {
+ if (currentMaxLineupCount - storyTeam.GetTeamHeroCount() > 0)
+ {
+ int heroID = heroIDList[i];
+ var hero = HeroManager.Instance.GetHeroByID(heroID);
+ if (hero == null)
+ continue;
+ storyTeam.AddHero(hero, Mathf.Max(0, posIndexList[i] - 1), true);
+ }
+ }
+
+ storyTeam.SaveTeam();
+ }
+
+ public bool TryGetHeroConfigByIndex(int recommendID, int index, out HeroConfig config)
+ {
+ config = null;
+ if (!TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty())
+ return false;
+ if (index < 0 || index >= heroIDArr.Length)
+ return false;
+ int heroID = heroIDArr[index];
+ if (!HeroConfig.HasKey(heroID))
+ return false;
+ config = HeroConfig.Get(heroID);
+ return true;
+ }
+
+ public LineupRecommendHeroState GetHeroState(int recommendID, int index)
+ {
+ if (!TryGetHeroConfigByIndex(recommendID, index, out HeroConfig config))
+ return LineupRecommendHeroState.NoActivate;
+
+ // heroBookState: 0鏈幏寰椼��1鍙縺娲汇��2甯歌銆�3绐佺牬鍗囩骇銆�4鏄熷崌绾с��5宸叉弧绾�
+ int heroID = config.HeroID;
+ int heroBookState = HeroUIManager.Instance.GetHeroBookState(heroID, config.Quality);
+ bool isHaveAward = IsHaveAward(recommendID, index);
+ bool isHasHero = HeroManager.Instance.HasHero(heroID);
+
+ // 宸茶幏寰楋細鎺ㄨ崘姝﹀皢宸查濂� && 浠嶆嫢鏈夎姝﹀皢
+ // 鏈幏寰楋細鎺ㄨ崘姝﹀皢宸查濂� && 褰撳墠娌℃湁璇ユ灏� (宸茶娑堣��)
+ if (isHaveAward)
+ return isHasHero ? LineupRecommendHeroState.ActivateAndHave : LineupRecommendHeroState.ActivateButNoHave;
+ // 鍙縺娲伙細娌¢鍙� && 鍥鹃壌鐘舵�佸彲婵�娲�/宸叉縺娲�
+ // 鏈縺娲伙細娌¢鍙� && 鍥鹃壌鐘舵�佹湭婵�娲�/鏈幏寰�
+ return heroBookState > 0 ? LineupRecommendHeroState.CanActivate : LineupRecommendHeroState.NoActivate;
+ }
+
+ public bool IsHaveAward(int recommendID, int index)
+ {
+ if (TryGetHaveDictValue(recommendID, out uint awardState))
+ {
+ if (index >= 0 && index < 6)
+ {
+ uint mask = (uint)(1 << index);
+ return (awardState & mask) != 0;
+ }
+ }
+ return false;
+ }
+ readonly int funcId = 1;//姝﹀皢
+ Redpoint redpoint = new Redpoint(MainRedDot.HeroCardRedpoint, MainRedDot.LineupRecommendRepoint);
+ public void UpdateRedPoint()
+ {
+ redpoint.state = RedPointState.None;
+ //姝﹀皢娌″紑涓嶅埛绾㈢偣
+ if (!FuncOpen.Instance.IsFuncOpen(funcId))
+ return;
+
+ if (TryGetJumpIndex(out int index))
+ {
+ redpoint.state = RedPointState.Simple;
+ }
+ }
+
+ //绗竴涓彲棰嗗彇鐨勬灏嗘墍鍦ㄨ绱㈠紩
+ public bool TryGetJumpIndex(out int index)
+ {
+ index = 0;
+ List<int> sortShowList = GetSortShowList();
+ if (sortShowList.IsNullOrEmpty())
+ return false;
+
+ for (int i = 0; i < sortShowList.Count; i++)
+ {
+ int recommendID = sortShowList[i];
+ if (!TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty())
+ continue;
+
+ for (int j = 0; j < heroIDArr.Length; j++)
+ {
+ LineupRecommendHeroState heroState = GetHeroState(recommendID, j);
+ if (heroState == LineupRecommendHeroState.CanActivate)
+ {
+ index = i;
+ return true;
+ }
+
+ }
+ }
+ return false;
+ }
+
+
+
+ public void SendGetReward(int recommendID, int index)
+ {
+ var pack = new CA504_tagCMPlayerGetReward();
+ pack.RewardType = 4;
+ pack.DataEx = (uint)recommendID;
+ string indexStr = index.ToString();
+ pack.DataExStr = indexStr;
+ pack.DataExStrLen = (byte)indexStr.Length;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
+
+ public void UpdateLineupRecommendInfo(HB129_tagSCLineupRecommendInfo vNetData)
+ {
+ if (vNetData == null || vNetData.RecommendList.IsNullOrEmpty())
+ return;
+
+ foreach (var v in vNetData.RecommendList)
+ {
+ haveDict[v.RecommendID] = v.AwardState;
+ }
+ UpdateRedPoint();
+ OnUpdateLineupRecommendInfoEvent?.Invoke();
+ }
+}
+
diff --git a/Main/System/LineupRecommend/LineupRecommendManager.cs.meta b/Main/System/LineupRecommend/LineupRecommendManager.cs.meta
new file mode 100644
index 0000000..26d5b35
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 662b0c20ef6428948bb5984735291ebb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/LineupRecommend/LineupRecommendWin.cs b/Main/System/LineupRecommend/LineupRecommendWin.cs
new file mode 100644
index 0000000..ce762ac
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendWin.cs
@@ -0,0 +1,136 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class LineupRecommendWin : UIBase
+{
+ [SerializeField] AvatarCell avatarCell;
+ [SerializeField] Text txtPlayerName;
+ [SerializeField] Text txtFightPoint;
+ [SerializeField] OfficialTitleCell officialRankText;
+
+ [SerializeField] ScrollerController scroller;
+ LineupRecommendManager manager { get { return LineupRecommendManager.Instance; } }
+ protected override void InitComponent()
+ {
+ base.InitComponent();
+ avatarCell.redpoint.redpointId = MainRedDot.PhantasmPavilionRepoint;
+ avatarCell.button.SetListener(() =>
+ {
+ UIManager.Instance.OpenWindow<PlayerProfileWin>();
+ });
+ }
+
+ protected override void OnPreOpen()
+ {
+ PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
+ scroller.OnRefreshCell += OnRefreshCell;
+ scroller.OnGetDynamicSize += OnGetDynamicSize;
+ manager.OnUpdateLineupRecommendInfoEvent += OnUpdateLineupRecommendInfoEvent;
+ manager.OnUpdateSwitchOnOrOffEvent += OnUpdateSwitchOnOrOffEvent;
+
+ manager.ClearOnList();
+ UpdatePlayerInfo();
+ scroller.lockType = EnhanceLockType.KeepVertical;
+ CreateScoller();
+ int index = 0;
+ manager.TryGetJumpIndex(out index);
+ scroller.JumpIndex(index);
+ }
+
+
+ protected override void OnPreClose()
+ {
+ PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
+ scroller.OnRefreshCell -= OnRefreshCell;
+ scroller.OnGetDynamicSize -= OnGetDynamicSize;
+ manager.OnUpdateLineupRecommendInfoEvent -= OnUpdateLineupRecommendInfoEvent;
+ manager.OnUpdateSwitchOnOrOffEvent -= OnUpdateSwitchOnOrOffEvent;
+
+ }
+
+ private void OnUpdateSwitchOnOrOffEvent()
+ {
+ CreateScoller();
+ }
+
+ private void OnUpdateLineupRecommendInfoEvent()
+ {
+ RefreshScoller();
+ }
+
+ private void OnRefreshCell(ScrollerDataType type, CellView cell)
+ {
+ var _cell = cell.GetComponent<LineupRecommendCell>();
+ _cell?.Display(cell.index);
+ }
+
+ private bool OnGetDynamicSize(ScrollerDataType type, int index, out float height)
+ {
+ height = 0;
+ List<int> sortShowList = manager.GetSortShowList();
+ if (index < 0 || index >= sortShowList.Count)
+ return false;
+ var id = sortShowList[index];
+ bool isOn = manager.IsOn(id);
+ height = isOn ? 432 : 252;
+ return true;
+ }
+
+ void PlayerDataRefresh(PlayerDataType type)
+ {
+ switch (type)
+ {
+ case PlayerDataType.FightPower:
+ txtFightPoint.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower);
+ break;
+ case PlayerDataType.RealmLevel:
+ officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
+ break;
+ case PlayerDataType.Face:
+ case PlayerDataType.FacePic:
+ avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
+ PlayerDatas.Instance.baseData.face,
+ PlayerDatas.Instance.baseData.facePic));
+ break;
+ case PlayerDataType.ExAttr3:
+ officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
+ break;
+ }
+
+ }
+
+ void RefreshScoller()
+ {
+ scroller.m_Scorller.RefreshActiveCellViews();
+ }
+
+ void CreateScoller()
+ {
+ scroller.Refresh();
+ var list = manager.GetSortShowList();
+ if (!list.IsNullOrEmpty())
+ {
+ for (int i = 0; i < list.Count; i++)
+ {
+ scroller.AddCell(ScrollerDataType.Header, i);
+ }
+ }
+ scroller.Restart();
+ }
+
+ private void UpdatePlayerInfo()
+ {
+ // 浠庣帺瀹舵暟鎹腑鑾峰彇淇℃伅骞舵洿鏂癠I
+ avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
+ PlayerDatas.Instance.baseData.face,
+ PlayerDatas.Instance.baseData.facePic));
+
+ txtPlayerName.text = PlayerDatas.Instance.baseData.PlayerName;
+ txtFightPoint.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPower);
+
+ officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
+ }
+
+
+}
\ No newline at end of file
diff --git a/Main/System/LineupRecommend/LineupRecommendWin.cs.meta b/Main/System/LineupRecommend/LineupRecommendWin.cs.meta
new file mode 100644
index 0000000..e10dd19
--- /dev/null
+++ b/Main/System/LineupRecommend/LineupRecommendWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: def9cd8112cd17a48b0d023c0eb20781
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index ec63ea3..13ef6ee 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -130,6 +130,7 @@
public const int ArenaRepoint = 470; //婕旀鍦�
public const int TianziBillboradRepoint = 471; //澶╁瓙鐨勮�冮獙
public const int PhantasmPavilionRepoint = 472; //骞诲闃�
+ public const int LineupRecommendRepoint = 473; //闃靛鎺ㄨ崘
public void Register()
{
--
Gitblit v1.8.0