From cd093eb7b0e9dbcc0fba9a5e08b8b7e49d6e9072 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 17 十二月 2025 11:45:48 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/HappyXB/HeroCallHopeWin.cs | 217 ++++++++++++
Main/System/HappyXB/HeroCallHopeLineCell.cs | 34 ++
Main/Config/ConfigManager.cs | 60 +++
Main/System/HappyXB/HeroCallWin.cs | 31 +
Main/Config/Configs/TreasureItemLibConfig.cs | 5
Main/System/HappyXB/HappyXBModel.Hero.cs | 118 ++++++
Main/System/HappyXB/HeroCallHopeSelectCell.cs.meta | 11
Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs | 155 +++++++++
Main/System/Equip/BlessLVManager.cs | 10
Main/System/HappyXB/HappyXBModel.cs | 25 +
Main/System/HappyXB/HappyXBModel.Hero.cs.meta | 11
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs | 22 +
Main/System/HappyXB/HeroCallHopeAddCell.cs.meta | 11
Main/System/HappyXB/HeroCallHopeAddCell.cs | 108 ++++++
Main/System/HappyXB/HeroCallHopeWin.cs.meta | 11
Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs.meta | 11
Main/Config/PartialConfigs/TreasureItemLibConfig.cs | 15
Main/System/HappyXB/HeroCallHopeLineCell.cs.meta | 11
Main/Config/Configs/HeroConfig.cs | 21
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs.meta | 11
Main/Config/Configs/TreasureSetConfig.cs | 10
Main/System/HappyXB/HeroCallHopeSelectCell.cs | 78 ++++
22 files changed, 969 insertions(+), 17 deletions(-)
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index c073e9a..97d68ae 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -40,10 +40,14 @@
HashSet<Type> configTypes = new HashSet<Type>() {
typeof(ADAwardConfig),
typeof(BattleMapConfig),
+ typeof(ChestsAwardConfig),
+ typeof(CTGConfig),
typeof(DailyTaskConfig),
+ typeof(DamageNumConfig),
typeof(DirtyWordConfig),
typeof(DungeonConfig),
typeof(DungeonOpenTimeConfig),
+ typeof(FaceConfig),
typeof(FamilyDonateConfig),
typeof(FightPowerRatioConfig),
typeof(FirstChargeConfig),
@@ -58,14 +62,28 @@
typeof(ItemConfig),
typeof(LineupRecommendConfig),
typeof(LLMJConfig),
+ typeof(MainChapterConfig),
typeof(MainLevelConfig),
typeof(ModelConfig),
- typeof(PlayerLVConfig),
+ typeof(NPCConfig),
+ typeof(NPCExConfig),
+ typeof(NPCLineupConfig),
+ typeof(OrderInfoConfig),
+ typeof(PlayerAttrConfig),
+ typeof(PlayerFaceConfig),
+ typeof(PriorBundleConfig),
typeof(RandomNameConfig),
typeof(SignInConfig),
+ typeof(StoreConfig),
+ typeof(SuccessConfig),
+ typeof(SysInfoConfig),
typeof(TianziConfig),
typeof(TitleConfig),
typeof(TitleStarUpConfig),
+ typeof(TreasureSetConfig),
+ typeof(TreeLVConfig),
+ typeof(WindowSearchConfig),
+ typeof(XBGetItemConfig),
typeof(ZhanlingConfig)
};
@@ -220,14 +238,22 @@
ClearConfigDictionary<ADAwardConfig>();
// 娓呯┖ BattleMapConfig 瀛楀吀
ClearConfigDictionary<BattleMapConfig>();
+ // 娓呯┖ ChestsAwardConfig 瀛楀吀
+ ClearConfigDictionary<ChestsAwardConfig>();
+ // 娓呯┖ CTGConfig 瀛楀吀
+ ClearConfigDictionary<CTGConfig>();
// 娓呯┖ DailyTaskConfig 瀛楀吀
ClearConfigDictionary<DailyTaskConfig>();
+ // 娓呯┖ DamageNumConfig 瀛楀吀
+ ClearConfigDictionary<DamageNumConfig>();
// 娓呯┖ DirtyWordConfig 瀛楀吀
ClearConfigDictionary<DirtyWordConfig>();
// 娓呯┖ DungeonConfig 瀛楀吀
ClearConfigDictionary<DungeonConfig>();
// 娓呯┖ DungeonOpenTimeConfig 瀛楀吀
ClearConfigDictionary<DungeonOpenTimeConfig>();
+ // 娓呯┖ FaceConfig 瀛楀吀
+ ClearConfigDictionary<FaceConfig>();
// 娓呯┖ FamilyDonateConfig 瀛楀吀
ClearConfigDictionary<FamilyDonateConfig>();
// 娓呯┖ FightPowerRatioConfig 瀛楀吀
@@ -256,22 +282,50 @@
ClearConfigDictionary<LineupRecommendConfig>();
// 娓呯┖ LLMJConfig 瀛楀吀
ClearConfigDictionary<LLMJConfig>();
+ // 娓呯┖ MainChapterConfig 瀛楀吀
+ ClearConfigDictionary<MainChapterConfig>();
// 娓呯┖ MainLevelConfig 瀛楀吀
ClearConfigDictionary<MainLevelConfig>();
// 娓呯┖ ModelConfig 瀛楀吀
ClearConfigDictionary<ModelConfig>();
- // 娓呯┖ PlayerLVConfig 瀛楀吀
- ClearConfigDictionary<PlayerLVConfig>();
+ // 娓呯┖ NPCConfig 瀛楀吀
+ ClearConfigDictionary<NPCConfig>();
+ // 娓呯┖ NPCExConfig 瀛楀吀
+ ClearConfigDictionary<NPCExConfig>();
+ // 娓呯┖ NPCLineupConfig 瀛楀吀
+ ClearConfigDictionary<NPCLineupConfig>();
+ // 娓呯┖ OrderInfoConfig 瀛楀吀
+ ClearConfigDictionary<OrderInfoConfig>();
+ // 娓呯┖ PlayerAttrConfig 瀛楀吀
+ ClearConfigDictionary<PlayerAttrConfig>();
+ // 娓呯┖ PlayerFaceConfig 瀛楀吀
+ ClearConfigDictionary<PlayerFaceConfig>();
+ // 娓呯┖ PriorBundleConfig 瀛楀吀
+ ClearConfigDictionary<PriorBundleConfig>();
// 娓呯┖ RandomNameConfig 瀛楀吀
ClearConfigDictionary<RandomNameConfig>();
// 娓呯┖ SignInConfig 瀛楀吀
ClearConfigDictionary<SignInConfig>();
+ // 娓呯┖ StoreConfig 瀛楀吀
+ ClearConfigDictionary<StoreConfig>();
+ // 娓呯┖ SuccessConfig 瀛楀吀
+ ClearConfigDictionary<SuccessConfig>();
+ // 娓呯┖ SysInfoConfig 瀛楀吀
+ ClearConfigDictionary<SysInfoConfig>();
// 娓呯┖ TianziConfig 瀛楀吀
ClearConfigDictionary<TianziConfig>();
// 娓呯┖ TitleConfig 瀛楀吀
ClearConfigDictionary<TitleConfig>();
// 娓呯┖ TitleStarUpConfig 瀛楀吀
ClearConfigDictionary<TitleStarUpConfig>();
+ // 娓呯┖ TreasureSetConfig 瀛楀吀
+ ClearConfigDictionary<TreasureSetConfig>();
+ // 娓呯┖ TreeLVConfig 瀛楀吀
+ ClearConfigDictionary<TreeLVConfig>();
+ // 娓呯┖ WindowSearchConfig 瀛楀吀
+ ClearConfigDictionary<WindowSearchConfig>();
+ // 娓呯┖ XBGetItemConfig 瀛楀吀
+ ClearConfigDictionary<XBGetItemConfig>();
// 娓呯┖ ZhanlingConfig 瀛楀吀
ClearConfigDictionary<ZhanlingConfig>();
}
diff --git a/Main/Config/Configs/HeroConfig.cs b/Main/Config/Configs/HeroConfig.cs
index d06d937..e827a51 100644
--- a/Main/Config/Configs/HeroConfig.cs
+++ b/Main/Config/Configs/HeroConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: Friday, December 5, 2025
+// [ Date ]: Tuesday, December 16, 2025
//--------------------------------------------------------
using System.Collections.Generic;
@@ -35,6 +35,7 @@
public int[] FetterIDList;
public float UIScale;
public string Desc;
+ public int RecruitBySelf;
public int Specialty;
public int HurtType;
public int[] Specialty2;
@@ -112,17 +113,19 @@
Desc = tables[18];
- int.TryParse(tables[19],out Specialty);
+ int.TryParse(tables[19],out RecruitBySelf);
- int.TryParse(tables[20],out HurtType);
+ int.TryParse(tables[20],out Specialty);
- if (tables[21].Contains("["))
+ int.TryParse(tables[21],out HurtType);
+
+ if (tables[22].Contains("["))
{
- Specialty2 = JsonMapper.ToObject<int[]>(tables[21]);
+ Specialty2 = JsonMapper.ToObject<int[]>(tables[22]);
}
else
{
- string[] Specialty2StringArray = tables[21].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ string[] Specialty2StringArray = tables[22].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
Specialty2 = new int[Specialty2StringArray.Length];
for (int i=0;i<Specialty2StringArray.Length;i++)
{
@@ -130,13 +133,13 @@
}
}
- if (tables[22].Contains("["))
+ if (tables[23].Contains("["))
{
- TalentList = JsonMapper.ToObject<int[]>(tables[22]);
+ TalentList = JsonMapper.ToObject<int[]>(tables[23]);
}
else
{
- string[] TalentListStringArray = tables[22].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ string[] TalentListStringArray = tables[23].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
TalentList = new int[TalentListStringArray.Length];
for (int i=0;i<TalentListStringArray.Length;i++)
{
diff --git a/Main/Config/Configs/TreasureItemLibConfig.cs b/Main/Config/Configs/TreasureItemLibConfig.cs
index ffda1c6..61758cf 100644
--- a/Main/Config/Configs/TreasureItemLibConfig.cs
+++ b/Main/Config/Configs/TreasureItemLibConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�8鏈�5鏃�
+// [ Date ]: 2025骞�12鏈�16鏃�
//--------------------------------------------------------
using System.Collections.Generic;
@@ -20,6 +20,7 @@
public int LibID;
public int ItemID;
public int ItemCount;
+ public int WishOutCnt;
public override int LoadKey(string _key)
{
@@ -38,6 +39,8 @@
int.TryParse(tables[2],out ItemID);
int.TryParse(tables[3],out ItemCount);
+
+ int.TryParse(tables[4],out WishOutCnt);
}
catch (Exception exception)
{
diff --git a/Main/Config/Configs/TreasureSetConfig.cs b/Main/Config/Configs/TreasureSetConfig.cs
index e305172..e839447 100644
--- a/Main/Config/Configs/TreasureSetConfig.cs
+++ b/Main/Config/Configs/TreasureSetConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�9鏈�4鏃�
+// [ Date ]: 2025骞�12鏈�16鏃�
//--------------------------------------------------------
using System.Collections.Generic;
@@ -31,6 +31,8 @@
public Dictionary<int, int> GridNumMaxLimitInfo;
public int AwardMoneyType;
public int AwardMoneyValue;
+ public int WishOpen;
+ public Dictionary<int, int> WishLibSelect;
public string ProbabilityDisplay;
public override int LoadKey(string _key)
@@ -109,7 +111,11 @@
int.TryParse(tables[14],out AwardMoneyValue);
- ProbabilityDisplay = tables[15];
+ int.TryParse(tables[15],out WishOpen);
+
+ WishLibSelect = ConfigParse.ParseIntDict(tables[16]);
+
+ ProbabilityDisplay = tables[17];
}
catch (Exception exception)
{
diff --git a/Main/Config/PartialConfigs/TreasureItemLibConfig.cs b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs
index 8ed45e7..bf60ef3 100644
--- a/Main/Config/PartialConfigs/TreasureItemLibConfig.cs
+++ b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs
@@ -5,6 +5,7 @@
public partial class TreasureItemLibConfig : ConfigBase<int, TreasureItemLibConfig>
{
private static Dictionary<int, List<int>> resultDict = new Dictionary<int, List<int>>();
+ private static Dictionary<int, List<int>> resultWishIDDict = new Dictionary<int, List<int>>();
protected override void OnConfigParseCompleted()
{
if (!resultDict.ContainsKey(LibID))
@@ -15,6 +16,15 @@
{
resultDict[LibID].Add(ItemID);
}
+
+ if (!resultWishIDDict.ContainsKey(LibID))
+ {
+ resultWishIDDict[LibID] = new List<int>();
+ }
+ if (WishOutCnt > 0)
+ {
+ resultWishIDDict[LibID].Add(ID);
+ }
}
@@ -22,4 +32,9 @@
{
return resultDict[libID];
}
+
+ public static List<int> GetWishIDList(int libID)
+ {
+ return resultWishIDDict[libID];
+ }
}
diff --git a/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs
new file mode 100644
index 0000000..5d774fb
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs
@@ -0,0 +1,22 @@
+using UnityEngine;
+using System.Collections;
+
+// A5 69 瀵诲疂蹇冩効鐗╁搧閫夋嫨 #tagCSTreasureWishSelect
+
+public class CA569_tagCSTreasureWishSelect : GameNetPackBasic {
+ public byte TreasureType; //瀵诲疂绫诲瀷
+ public byte WishCnt;
+ public uint[] WishIDList; // 閫夋嫨鐨勫瀹濈墿鍝佸簱涓殑鏁版嵁ID锛屾敞鎰忎笉鏄簱ID
+
+ public CA569_tagCSTreasureWishSelect () {
+ combineCmd = (ushort)0x03FE;
+ _cmd = (ushort)0xA569;
+ }
+
+ public override void WriteToBytes () {
+ WriteBytes (TreasureType, NetDataType.BYTE);
+ WriteBytes (WishCnt, NetDataType.BYTE);
+ WriteBytes (WishIDList, NetDataType.DWORD, WishCnt);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs.meta b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs.meta
new file mode 100644
index 0000000..e437a5c
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA5_Function/CA569_tagCSTreasureWishSelect.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6e1a5a03a70ad654a962dc171c579f0b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Equip/BlessLVManager.cs b/Main/System/Equip/BlessLVManager.cs
index 5861a29..4ea6914 100644
--- a/Main/System/Equip/BlessLVManager.cs
+++ b/Main/System/Equip/BlessLVManager.cs
@@ -38,6 +38,7 @@
m_LVPackTime = 0;
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOK;
GlobalTimeEvent.Instance.fiveSecondEvent += OnTimeEvent;
+ PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
ParseConfig();
}
@@ -46,6 +47,7 @@
{
DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOK;
GlobalTimeEvent.Instance.fiveSecondEvent -= OnTimeEvent;
+ PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
}
void OnPlayerLoginOK()
@@ -148,6 +150,14 @@
}
}
+ public void OnPlayerDataRefresh(PlayerDataType type)
+ {
+ if (type == PlayerDataType.default33)
+ {
+ UpdateTreeRedpoint();
+ }
+ }
+
public void AutoUpgrade()
{
//鏃堕棿缁撴潫鑷姩閫氱煡鏈嶅姟绔崌绾э紝鎴栬�呮墦寮�鐣岄潰鏃讹紝鎴栬�呬笂绾� 閮藉仛妫�鏌�
diff --git a/Main/System/HappyXB/HappyXBModel.Hero.cs b/Main/System/HappyXB/HappyXBModel.Hero.cs
new file mode 100644
index 0000000..de0b77c
--- /dev/null
+++ b/Main/System/HappyXB/HappyXBModel.Hero.cs
@@ -0,0 +1,118 @@
+锘縰sing LitJson;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+//姝﹀皢鐩稿叧鎷涘嫙
+public partial class HappyXBModel : GameSystemManager<HappyXBModel>
+{
+ public const int XBHeroCallSH_RedKey = 20303; //姝﹀皢蹇冩効绁炶瘽 鏄惁閫夋嫨
+ public const int XBHeroCallCS_RedKey = 20304; //姝﹀皢蹇冩効浼犺 鏄惁閫夋嫨
+ public Redpoint shWishRedpoint = new Redpoint(HappyXB_RedKey, XBHeroCallSH_RedKey);
+ public Redpoint csWishRedpoint = new Redpoint(HappyXB_RedKey, XBHeroCallCS_RedKey);
+
+ public const int wishMaxOutCnt = 1; //蹇冩効鏈�澶у嚭璐ф暟閲忥紝绁炶瘽/浼犺鍚勫嚭涓�娆�
+ public int selectWishQuality = 5; //蹇冩効閫変腑鐨勫搧璐�
+
+
+ public int selectSHHeroWishID = 0; //蹇冩効閫変腑鐨勭璇濇灏嗗績鎰縄D 瀹㈡埛绔� -1浠h〃鍙栨秷
+ public int selectCSHeroWishID = 0; //蹇冩効閫変腑鐨勪紶璇存灏嗗績鎰縄D 瀹㈡埛绔� -1浠h〃鍙栨秷
+
+ public Action OnSelectWishHeroEvent;
+
+ public int selectWishListTab = 0; //0:绁炶瘽 1:浼犺 鐣岄潰鏍囩閫夋嫨
+
+
+ //蹇冩効閫変腑鐨勬灏咺D
+ public bool TryGetHeroWishIDByQuality(int type, int quality, out int wishID, out int wishCnt)
+ {
+ wishID = 0;
+ wishCnt = 0;
+ var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced);
+ if (data == null || data.wishCntDict.IsNullOrEmpty())
+ {
+ return false;
+ }
+ foreach (var id in data.wishCntDict.Keys)
+ {
+ if (id == 0)
+ {
+ continue;
+ }
+ if (HeroConfig.Get(TreasureItemLibConfig.Get(id).ItemID).Quality == quality)
+ {
+ wishID = id;
+ wishCnt = data.wishCntDict[id];
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public bool IsTodayWishFinish()
+ {
+ var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced);
+ if (data == null || data.wishCntDict.IsNullOrEmpty())
+ {
+ return false;
+ }
+ int wishCnt = 0;
+ foreach (var id in data.wishCntDict.Keys)
+ {
+ if (id == 0)
+ {
+ continue;
+ }
+ wishCnt += data.wishCntDict[id];
+ }
+ if (wishCnt >= wishMaxOutCnt*2)
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+
+ //蹇冩効绾㈢偣锛屾湭鍒嗛厤鐨勯渶瑕佺孩鐐�
+ void UpdateWishRedpoint()
+ {
+ shWishRedpoint.state = RedPointState.None;
+ csWishRedpoint.state = RedPointState.None;
+
+
+ var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced);
+ if (data == null)
+ {
+ return;
+ }
+ var config = TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced);
+ var needOpenCnt = config.WishOpen - data.treasureCount;
+ if (needOpenCnt > 0)
+ {
+ return;
+ }
+
+ if (data.wishCntDict.IsNullOrEmpty())
+ {
+ shWishRedpoint.state = RedPointState.Simple;
+ csWishRedpoint.state = RedPointState.Simple;
+ return;
+ }
+
+ int wishID = 0;
+ int wishCnt = 0;
+ if (!TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out wishID, out wishCnt))
+ {
+ shWishRedpoint.state = RedPointState.Simple;
+ }
+
+ if (!TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out wishID, out wishCnt))
+ {
+ csWishRedpoint.state = RedPointState.Simple;
+ }
+
+ }
+}
diff --git a/Main/System/HappyXB/HappyXBModel.Hero.cs.meta b/Main/System/HappyXB/HappyXBModel.Hero.cs.meta
new file mode 100644
index 0000000..2fc9c1b
--- /dev/null
+++ b/Main/System/HappyXB/HappyXBModel.Hero.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b44ecdb2a98211746a0b190bf0c08ae7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HappyXBModel.cs b/Main/System/HappyXB/HappyXBModel.cs
index 7d072a4..509a342 100644
--- a/Main/System/HappyXB/HappyXBModel.cs
+++ b/Main/System/HappyXB/HappyXBModel.cs
@@ -6,7 +6,7 @@
using UnityEngine;
-public class HappyXBModel : GameSystemManager<HappyXBModel>
+public partial class HappyXBModel : GameSystemManager<HappyXBModel>
{
//瀵诲疂浜у嚭搴�
private Dictionary<int, Dictionary<int, XBGetItemConfig>> xbGetItemDict = new Dictionary<int, Dictionary<int, XBGetItemConfig>>(); //濂栨睜鐨勬墍鏈夌墿鍝侊紙鎸夌被鍨�+绛夌骇锛�
@@ -214,6 +214,18 @@
int cnt = info.TreasuerInfoList[i].GridLimitCntList[j].GridCnt;
typeInfo.gridLimitCntDict[num] = cnt;
}
+ if (typeInfo.wishCntDict == null)
+ {
+ typeInfo.wishCntDict = new Dictionary<int, int>();
+ }
+ typeInfo.wishCntDict.Clear();
+ for (int j = 0; j < info.TreasuerInfoList[i].WishCnt; j++)
+ {
+ int num = info.TreasuerInfoList[i].WishList[j].WishID;
+ int cnt = info.TreasuerInfoList[i].WishList[j].OutCnt;
+ typeInfo.wishCntDict[num] = cnt;
+ }
+
xbTypeInfoDict.Add(info.TreasuerInfoList[i].TreasureType, typeInfo);
}
else
@@ -230,6 +242,14 @@
int num = info.TreasuerInfoList[i].GridLimitCntList[j].GridNum;
int cnt = info.TreasuerInfoList[i].GridLimitCntList[j].GridCnt;
xbTypeInfoDict[info.TreasuerInfoList[i].TreasureType].gridLimitCntDict[num] = cnt;
+ }
+
+ xbTypeInfoDict[info.TreasuerInfoList[i].TreasureType].wishCntDict.Clear();
+ for (int j = 0; j < info.TreasuerInfoList[i].WishCnt; j++)
+ {
+ int num = info.TreasuerInfoList[i].WishList[j].WishID;
+ int cnt = info.TreasuerInfoList[i].WishList[j].OutCnt;
+ xbTypeInfoDict[info.TreasuerInfoList[i].TreasureType].wishCntDict[num] = cnt;
}
}
}
@@ -597,6 +617,8 @@
if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Hero))
return;
+ UpdateWishRedpoint();
+
// 鍏嶈垂 10杩� 绉垎
bestXB10Red.state = RedPointState.None;
bestXBFreeRed.state = RedPointState.None;
@@ -648,6 +670,7 @@
public int treasureCountToday; //浠婃棩宸插瀹濇�绘鏁�
public int treasureCntAward; //绱瀵诲疂娆℃暟瀵瑰簲濂栧姳棰嗗鐘舵�侊紝鎸夊鍔辫褰曠储寮曚簩杩涘埗璁板綍鏄惁宸查鍙�
public Dictionary<int, int> gridLimitCntDict; //<鏈夐檺鍒舵娊鍙栨鏁扮殑鏍煎瓙缂栧彿,宸叉娊鍒版鏁�> 鏈夐檺鍒舵娊鍙栨鏁扮殑鏍煎瓙娆℃暟淇℃伅
+ public Dictionary<int, int> wishCntDict; //蹇冩効鎶藉彇鎯呭喌 <蹇冩効ID,宸叉娊鍒版鏁�>
}
diff --git a/Main/System/HappyXB/HeroCallHopeAddCell.cs b/Main/System/HappyXB/HeroCallHopeAddCell.cs
new file mode 100644
index 0000000..34ce3fa
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeAddCell.cs
@@ -0,0 +1,108 @@
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
+
+
+public class HeroCallHopeAddCell : MonoBehaviour
+{
+ [SerializeField] HeroHeadBaseNoTrainCell head;
+ [SerializeField] Image notOpenImg;
+ [SerializeField] Image addImg;
+ [SerializeField] Button addBtn;
+
+
+
+ public void Display(int quality, UnityAction<int> addAction = null, UnityAction<int> heroAction = null, int changeHeroID = 0)
+ {
+ var data = HappyXBModel.Instance.GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced);
+ var config = TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced);
+ var needOpenCnt = config.WishOpen - data.treasureCount;
+
+
+ int wishID = 0;
+ int wishCnt = 0;
+ int heroID = 0;
+ if (needOpenCnt <= 0)
+ {
+ notOpenImg.SetActive(false);
+
+
+ if (HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, quality, out wishID, out wishCnt))
+ {
+ if (heroAction == null)
+ {
+ heroAction = (quality) =>
+ {
+ if (HappyXBModel.Instance.IsTodayWishFinish())
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishFinish");
+ return;
+ }
+
+ UIManager.Instance.OpenWindow<HeroCallHopeWin>(quality == 4 ? 1 : 0);
+ };
+ }
+
+ heroID = TreasureItemLibConfig.Get(wishID).ItemID;
+
+ }
+ if (changeHeroID > 0)
+ {
+ //棰勮
+ heroID = changeHeroID;
+ }
+ else if (changeHeroID == -1)
+ {
+ //鍙栨秷棰勮
+ heroID = 0;
+ }
+ if (heroID > 0)
+ {
+ head.SetActive(true);
+ addImg.SetActive(false);
+ head.Init(heroID, wishCnt >= HappyXBModel.wishMaxOutCnt, ()=> { heroAction.Invoke(quality); });
+ }
+ else
+ {
+ head.SetActive(false);
+ addImg.SetActive(true);
+ }
+ }
+ else
+ {
+ notOpenImg.SetActive(true);
+ addImg.SetActive(false);
+ head.SetActive(false);
+ }
+
+
+
+
+ if (addAction == null)
+ {
+ addBtn.AddListener(() =>
+ {
+ if (needOpenCnt <= 0)
+ {
+ if (HappyXBModel.Instance.IsTodayWishFinish())
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishFinish");
+ return;
+ }
+ UIManager.Instance.OpenWindow<HeroCallHopeWin>(quality == 4 ? 1 : 0);
+ return;
+ }
+ else
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishCallOpen", needOpenCnt);
+ }
+ });
+ }
+ else
+ {
+ addBtn.AddListener(()=> { addAction.Invoke(quality); });
+ }
+ }
+
+}
+
diff --git a/Main/System/HappyXB/HeroCallHopeAddCell.cs.meta b/Main/System/HappyXB/HeroCallHopeAddCell.cs.meta
new file mode 100644
index 0000000..14676d5
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeAddCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 03f46fdaedeebd148921ae2997a40299
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallHopeLineCell.cs b/Main/System/HappyXB/HeroCallHopeLineCell.cs
new file mode 100644
index 0000000..c5d4e35
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeLineCell.cs
@@ -0,0 +1,34 @@
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
+
+
+public class HeroCallHopeLineCell : CellView
+{
+ [SerializeField] HeroCallHopeSelectCell[] heads;
+
+
+
+ public void Display(int libID, int index)
+ {
+ var list = TreasureItemLibConfig.GetWishIDList(libID);
+ if (list == null || list.Count == 0)
+ {
+ return;
+ }
+ for (int i = 0; i < heads.Length; i++)
+ {
+ if (index + i < list.Count)
+ {
+ heads[i].SetActive(true);
+ heads[i].Display(list[index + i]);
+ }
+ else
+ {
+ heads[i].SetActive(false);
+ }
+ }
+ }
+
+}
+
diff --git a/Main/System/HappyXB/HeroCallHopeLineCell.cs.meta b/Main/System/HappyXB/HeroCallHopeLineCell.cs.meta
new file mode 100644
index 0000000..25ded63
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeLineCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e75e54662e5a2ce41ab610f286b3638f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallHopeSelectCell.cs b/Main/System/HappyXB/HeroCallHopeSelectCell.cs
new file mode 100644
index 0000000..c348372
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeSelectCell.cs
@@ -0,0 +1,78 @@
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
+
+
+public class HeroCallHopeSelectCell : MonoBehaviour
+{
+ [SerializeField] HeroHeadBaseNoTrainCell head;
+ [SerializeField] Image selectImg;
+ [SerializeField] Transform lockImg;
+
+
+
+ public void Display(int wishID)
+ {
+ var config = TreasureItemLibConfig.Get(wishID);
+ if (config == null)
+ {
+ return;
+ }
+ head.SetActive(true);
+ bool isActive = true;
+ if (HeroConfig.Get(config.ItemID).RecruitBySelf == 1 && HeroUIManager.Instance.GetHeroBookState(config.ItemID, 0) == 0)
+ {
+ isActive = false;
+ }
+ lockImg.SetActive(!isActive);
+
+ var selectID = HappyXBModel.Instance.selectWishListTab == 0 ? HappyXBModel.Instance.selectSHHeroWishID : HappyXBModel.Instance.selectCSHeroWishID;
+ selectImg.SetActive(config.ID == selectID);
+
+ head.Init(config.ItemID, false, ()=>
+ {
+ if (!isActive)
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishUnLock");
+ return;
+ }
+ int quality = HappyXBModel.Instance.selectWishListTab == 0 ? 5 : 4;
+ if (HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, quality, out int _wishID, out int _wishCnt))
+ {
+ if (_wishCnt >= HappyXBModel.wishMaxOutCnt)
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishFinish");
+ return;
+ }
+ }
+
+ //-1浠h〃鍙栨秷
+
+ if (HappyXBModel.Instance.selectWishListTab == 0)
+ {
+ if (HappyXBModel.Instance.selectSHHeroWishID == wishID)
+ {
+ HappyXBModel.Instance.selectSHHeroWishID = -1;
+ }
+ else
+ {
+ HappyXBModel.Instance.selectSHHeroWishID = wishID;
+ }
+ }
+ else
+ {
+ if (HappyXBModel.Instance.selectCSHeroWishID == wishID)
+ {
+ HappyXBModel.Instance.selectCSHeroWishID = -1;
+ }
+ else
+ {
+ HappyXBModel.Instance.selectCSHeroWishID = wishID;
+ }
+ }
+ HappyXBModel.Instance.OnSelectWishHeroEvent?.Invoke();
+ });
+ }
+
+}
+
diff --git a/Main/System/HappyXB/HeroCallHopeSelectCell.cs.meta b/Main/System/HappyXB/HeroCallHopeSelectCell.cs.meta
new file mode 100644
index 0000000..9980711
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeSelectCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: de3fbdcb1649eef4389f255bdbf6a1c5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallHopeWin.cs b/Main/System/HappyXB/HeroCallHopeWin.cs
new file mode 100644
index 0000000..55a5035
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeWin.cs
@@ -0,0 +1,217 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 鎷涘嫙蹇冩効
+/// </summary>
+public class HeroCallHopeWin : UIBase
+{
+ [SerializeField] HeroCallHopeAddCell shHero;
+ [SerializeField] HeroCallHopeAddCell csHero;
+ [SerializeField] Text tip;
+ [SerializeField] ScrollerController scroller;
+ [SerializeField] GroupButtonEx shBtn;
+ [SerializeField] GroupButtonEx csBtn;
+ [SerializeField] Button cancleBtn;
+ [SerializeField] Button confirmBtn;
+
+
+
+ Dictionary<int, int> qualityLibIDDict = new Dictionary<int, int>()
+ {
+ { 0, 105 },
+ { 1, 104 }
+ };
+
+
+ protected override void InitComponent()
+ {
+ cancleBtn.AddListener(CloseWindow);
+ confirmBtn.AddListener(SendSelectHero);
+ shBtn.AddListener(()=>
+ {
+ HappyXBModel.Instance.selectWishListTab = 0;
+ Display();
+ });
+ csBtn.AddListener(()=>
+ {
+ HappyXBModel.Instance.selectWishListTab = 1;
+ Display();
+ });
+ }
+
+
+ protected override void OnPreOpen()
+ {
+ HappyXBModel.Instance.selectWishListTab = functionOrder;
+ HappyXBModel.Instance.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
+ HappyXBModel.Instance.OnSelectWishHeroEvent += OnSelectWishHeroEvent;
+ scroller.OnRefreshCell += OnRefreshCell;
+ HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out HappyXBModel.Instance.selectSHHeroWishID, out int shWishCnt);
+ HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out HappyXBModel.Instance.selectCSHeroWishID, out int csWishCnt);
+
+ tip.text = Language.Get("HeroCall7", HappyXBModel.wishMaxOutCnt);
+ Display();
+ }
+
+ protected override void OnPreClose()
+ {
+ HappyXBModel.Instance.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
+ scroller.OnRefreshCell -= OnRefreshCell;
+ HappyXBModel.Instance.OnSelectWishHeroEvent -= OnSelectWishHeroEvent;
+ }
+
+ void Display()
+ {
+ int shHeroID = 0;
+ if (HappyXBModel.Instance.selectSHHeroWishID == -1)
+ {
+ shHeroID = -1;
+ }
+ else if (HappyXBModel.Instance.selectSHHeroWishID == 0)
+ {
+ shHeroID = 0;
+ }
+ else
+ {
+ shHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID;
+ }
+
+ int csHeroID = 0;
+ if (HappyXBModel.Instance.selectCSHeroWishID == -1)
+ {
+ csHeroID = -1;
+ }
+ else if (HappyXBModel.Instance.selectCSHeroWishID == 0)
+ {
+ csHeroID = 0;
+ }
+ else
+ {
+ csHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID;
+ }
+
+ shHero.Display(5, AddHero, ShowHeroTip, shHeroID);
+ csHero.Display(4, AddHero, ShowHeroTip, csHeroID);
+
+ CreateScroller();
+
+ if (HappyXBModel.Instance.selectWishListTab == 0)
+ {
+ shBtn.SelectBtn();
+ }
+ else
+ {
+ csBtn.SelectBtn();
+ }
+ }
+
+
+ void CreateScroller()
+ {
+ int libID = qualityLibIDDict[HappyXBModel.Instance.selectWishListTab];
+ if (!TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced).WishLibSelect.ContainsKey(libID))
+ {
+ Debug.LogError("瀵诲疂搴揑D鍙樻洿锛岀▼搴忚鏍稿qualityLibIDDict");
+ return;
+ }
+ scroller.Refresh();
+ var list = TreasureItemLibConfig.GetWishIDList(libID);
+ for (int i = 0; i < list.Count; i++)
+ {
+ if (i % 5 == 0)
+ {
+ scroller.AddCell(ScrollerDataType.Header, i);
+ }
+ }
+ scroller.Restart();
+ }
+
+
+
+ void AddHero(int quality)
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishAdd");
+ HappyXBModel.Instance.selectWishListTab = quality == 4 ? 1 : 0;
+
+ Display();
+ }
+
+ void ShowHeroTip(int quality)
+ {
+ ItemTipUtility.Show(quality == 4 ? TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID :
+ TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID);
+ }
+
+ void RefreshXBTypeInfo()
+ {
+ HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out HappyXBModel.Instance.selectSHHeroWishID, out int shWishCnt);
+ HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out HappyXBModel.Instance.selectCSHeroWishID, out int csWishCnt);
+ Display();
+ }
+
+ void OnSelectWishHeroEvent()
+ {
+ int shHeroID = 0;
+ if (HappyXBModel.Instance.selectSHHeroWishID == -1)
+ {
+ shHeroID = -1;
+ }
+ else if (HappyXBModel.Instance.selectSHHeroWishID == 0)
+ {
+ shHeroID = 0;
+ }
+ else
+ {
+ shHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID;
+ }
+
+ int csHeroID = 0;
+ if (HappyXBModel.Instance.selectCSHeroWishID == -1)
+ {
+ csHeroID = -1;
+ }
+ else if (HappyXBModel.Instance.selectCSHeroWishID == 0)
+ {
+ csHeroID = 0;
+ }
+ else
+ {
+ csHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID;
+ }
+
+ shHero.Display(5, AddHero, ShowHeroTip, shHeroID);
+ csHero.Display(4, AddHero, ShowHeroTip, csHeroID);
+ scroller.m_Scorller.RefreshActiveCellViews();
+ }
+
+
+ void SendSelectHero()
+ {
+ if (HappyXBModel.Instance.selectSHHeroWishID == 0 && HappyXBModel.Instance.selectCSHeroWishID == 0)
+ {
+ SysNotifyMgr.Instance.ShowTip("HeroWishAdd");
+ return;
+ }
+ var pack = new CA569_tagCSTreasureWishSelect();
+ pack.TreasureType = (int)HappXBTitle.HeroCallAdvanced;
+
+
+ pack.WishIDList = new uint[] { (uint)Math.Max(0, HappyXBModel.Instance.selectSHHeroWishID), (uint)Math.Max(0, HappyXBModel.Instance.selectCSHeroWishID) };
+ pack.WishCnt = 2;
+ GameNetSystem.Instance.SendInfo(pack);
+ CloseWindow();
+ }
+
+ void OnRefreshCell(ScrollerDataType type, CellView cell)
+ {
+ var _cell = cell.GetComponent<HeroCallHopeLineCell>();
+ _cell.Display(qualityLibIDDict[HappyXBModel.Instance.selectWishListTab], cell.index);
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/Main/System/HappyXB/HeroCallHopeWin.cs.meta b/Main/System/HappyXB/HeroCallHopeWin.cs.meta
new file mode 100644
index 0000000..5773220
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallHopeWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 171ff86eed580f34fa0215bd6f14648d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallWin.cs b/Main/System/HappyXB/HeroCallWin.cs
index c056fb5..f93f84d 100644
--- a/Main/System/HappyXB/HeroCallWin.cs
+++ b/Main/System/HappyXB/HeroCallWin.cs
@@ -25,6 +25,14 @@
[SerializeField] Button closeBtn;
[SerializeField] Text callTip;
+ //蹇冩効
+ [SerializeField] Text openXYTip;
+ [SerializeField] HeroCallHopeAddCell shHero;
+ [SerializeField] HeroCallHopeAddCell csHero;
+
+ //鐗规潈淇濆簳
+ [SerializeField] Text openPrivilegeTip;
+
protected override void InitComponent()
{
@@ -56,15 +64,22 @@
protected override void OnPreOpen()
{
HappyXBModel.Instance.RefreshXBTypeInfoAct += Refresh;
+ InvestModel.Instance.onInvestUpdate += OnInvestUpdate;
skipToggle.isOn = LocalSave.GetBool(HeroUIManager.skipKey + PlayerDatas.Instance.baseData.PlayerID, false);
Refresh();
+ openPrivilegeTip.SetActive(!InvestModel.Instance.IsInvested(InvestModel.foreverCardType));
}
protected override void OnPreClose()
{
HappyXBModel.Instance.RefreshXBTypeInfoAct -= Refresh;
+ InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
}
+ void OnInvestUpdate(int type)
+ {
+ openPrivilegeTip.SetActive(!InvestModel.Instance.IsInvested(InvestModel.foreverCardType));
+ }
public override void Refresh()
{
@@ -74,7 +89,7 @@
call1ItemIcon.SetOrgSprite(IconKey);
call10ItemIcon.SetOrgSprite(IconKey);
var itemCount = PackManager.Instance.GetItemCountByID(PackType.Item, funcSet.CostItemID);
-
+
int todayFreeCount = HappyXBModel.Instance.GetFreeCountToday((int)HappXBTitle.HeroCallAdvanced);
int dayMaxCount = HappyXBModel.Instance.GetDailyFreeCount((int)HappXBTitle.HeroCallAdvanced);
if (todayFreeCount < dayMaxCount)
@@ -109,6 +124,7 @@
qualityStrList.Add(UIHelper.AppendColor(qualityList[i], Language.Get("L1039", Language.Get("CommonQuality" + qualityList[i]))));
}
callTip.text = Language.Get("HeroCall6", needCount, string.Join(Language.Get("L1130"), qualityStrList.ToArray()));
+ ShowWish();
}
//姣忕鍒锋柊鍏嶈垂CD鐨勫�掕鏃�
@@ -151,4 +167,17 @@
}
}
+
+ void ShowWish()
+ {
+ var data = HappyXBModel.Instance.GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced);
+ var config = TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced);
+ var needOpenCnt = config.WishOpen - data.treasureCount;
+
+ openXYTip.SetActive(needOpenCnt > 0);
+ openXYTip.text = Language.Get("HeroCall10", needOpenCnt);
+ shHero.Display(5);
+ csHero.Display(4);
+ }
+
}
\ No newline at end of file
diff --git a/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs b/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs
new file mode 100644
index 0000000..085120e
--- /dev/null
+++ b/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs
@@ -0,0 +1,155 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Events;
+using System.Collections.Generic;
+
+public class HeroHeadBaseNoTrainCell : MonoBehaviour
+{
+
+ Button m_ClickBtn;
+ Button clickBtn
+ {
+ get
+ {
+ if (m_ClickBtn == null)
+ {
+ m_ClickBtn = this.transform.GetComponent<Button>("Container_HeadCell");
+ }
+ return m_ClickBtn;
+ }
+ }
+
+ Image m_QualityBG;
+ Image qualityBG
+ {
+ get
+ {
+ if (m_QualityBG == null)
+ {
+ m_QualityBG = this.transform.GetComponent<Image>("Container_HeadCell/qualityIcon");
+ }
+ return m_QualityBG;
+ }
+ }
+
+ ImageEx m_HeroIcon;
+ ImageEx heroIcon
+ {
+ get
+ {
+ if (m_HeroIcon == null)
+ {
+ m_HeroIcon = this.transform.GetComponent<ImageEx>("Container_HeadCell/heroIcon");
+ }
+ return m_HeroIcon;
+ }
+ }
+
+
+
+ Image m_CountryImg;
+ Image countryImg
+ {
+ get
+ {
+ if (m_CountryImg == null)
+ {
+ m_CountryImg = this.transform.GetComponent<Image>("Container_HeadCell/country");
+ }
+ return m_CountryImg;
+ }
+ }
+
+ Image m_JobImg;
+ Image jobImg
+ {
+ get
+ {
+ if (m_JobImg == null)
+ {
+ m_JobImg = this.transform.GetComponent<Image>("Container_HeadCell/name/job");
+ }
+ return m_JobImg;
+ }
+ }
+
+ Text m_NameText;
+ Text nameText
+ {
+ get
+ {
+ if (m_NameText == null)
+ {
+ m_NameText = this.transform.GetComponent<Text>("Container_HeadCell/name");
+ }
+ return m_NameText;
+ }
+ }
+
+ void Awake()
+ {
+ LoadPrefab();
+ }
+
+ // 姝﹀皢灏忓ご鍍忥紝锛堣亴涓氬拰鍚嶇О涓嶅啀姝ょ鐞嗭紝鍚勪釜鐣岄潰鎺掔増涓嶅悓锛�
+ public void Init(int heroID, bool _gray = false, UnityAction onclick = null)
+ {
+ LoadPrefab(); //瀛樺湪琚嵏杞界殑鍙兘锛岄噸鏂板姞杞�
+ clickBtn.AddListener(onclick);
+ var heroConfig = HeroConfig.Get(heroID);
+ qualityBG.SetSprite("heroheadBG" + heroConfig.Quality);
+
+ var sprite = UILoader.LoadSprite("HeroHead", HeroSkinConfig.Get(heroConfig.SkinIDList[0]).SquareIcon);
+ heroIcon.overrideSprite = sprite;
+ heroIcon.gray = _gray;
+
+ countryImg.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
+ jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class));
+ nameText.text = heroConfig.Name;
+
+
+ }
+
+ GameObject cellContainer;
+ protected void LoadPrefab()
+ {
+ if (cellContainer != null)
+ return;
+
+ var tmp = transform.Find("Container_HeadCell");
+ if (tmp != null)
+ {
+ cellContainer = tmp.gameObject;
+ return;
+ }
+ if (cellContainer == null)
+ {
+ cellContainer = UIUtility.CreateWidget("HeroHeadBaseNoTrainCell", "Container_HeadCell");
+
+ if (cellContainer != null)
+ {
+ cellContainer.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
+ cellContainer.transform.SetAsFirstSibling();
+ }
+ }
+
+ //缂╂斁鍒板拰鐖秗ect涓�鏍峰ぇ
+ var scale = 1f;
+ var rect = cellContainer.GetComponent<RectTransform>();
+ var parentRect = transform.GetComponent<RectTransform>();
+ float width = parentRect.sizeDelta.x;
+ if (width <= 0f)
+ {
+ //澶栭儴鎺у埗浜嗗昂瀵歌幏鍙栦负0
+ GridLayoutGroup grid = GetComponentInParent<GridLayoutGroup>();
+ if (grid != null)
+ {
+ width = grid.cellSize.x;
+ }
+
+ }
+ scale = width / rect.sizeDelta.x;
+ cellContainer.transform.localScale = cellContainer.transform.localScale * scale;
+ }
+}
+
diff --git a/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs.meta b/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs.meta
new file mode 100644
index 0000000..f7eff80
--- /dev/null
+++ b/Main/System/HeroUI/HeroHeadBaseNoTrainCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d35032963a8cb6248ace536aff906122
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0