From eecfe1ac89223394753b44e0447da2c6c23b0210 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 23 八月 2025 02:09:20 +0800
Subject: [PATCH] 153 【武将】招募系统
---
Main/Config/PartialConfigs/TreasureItemLibConfig.cs.meta | 11 ++
Main/System/HappyXB/HeroCallScoreWin.cs | 4
Main/System/HappyXB/HeroSmallHeadCell.cs.meta | 11 ++
Main/System/HappyXB/HeroCallWin.cs | 7 +
Main/System/HappyXB/HeroCallScoreRuleWin.cs.meta | 11 ++
Main/System/HappyXB/HappyXBModel.cs | 12 ++
Main/System/HappyXB/HeroSmallHeadLineCell.cs.meta | 11 ++
Main/System/HappyXB/HeroCallScoreRuleWin.cs | 63 ++++++++++++
Main/System/HappyXB/HeroSmallHeadLineCell.cs | 23 ++++
Main/Config/PartialConfigs/TreasureItemLibConfig.cs | 25 +++++
Main/System/HappyXB/HeroCallRuleWin.cs.meta | 11 ++
Main/System/HappyXB/HeroCallRuleWin.cs | 12 ++
Main/System/HappyXB/HeroSmallHeadCell.cs | 21 ++++
Main/System/HeroUI/HeroSelectBehaviour.cs | 7 +
Main/System/HeroUI/HeroUIManager.cs | 57 +++++++++++
15 files changed, 284 insertions(+), 2 deletions(-)
diff --git a/Main/Config/PartialConfigs/TreasureItemLibConfig.cs b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs
new file mode 100644
index 0000000..8ed45e7
--- /dev/null
+++ b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs
@@ -0,0 +1,25 @@
+
+
+using System.Collections.Generic;
+
+public partial class TreasureItemLibConfig : ConfigBase<int, TreasureItemLibConfig>
+{
+ private static Dictionary<int, List<int>> resultDict = new Dictionary<int, List<int>>();
+ protected override void OnConfigParseCompleted()
+ {
+ if (!resultDict.ContainsKey(LibID))
+ {
+ resultDict[LibID] = new List<int>() { ItemID };
+ }
+ else
+ {
+ resultDict[LibID].Add(ItemID);
+ }
+ }
+
+
+ public static List<int> GetItemIDList(int libID)
+ {
+ return resultDict[libID];
+ }
+}
diff --git a/Main/Config/PartialConfigs/TreasureItemLibConfig.cs.meta b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs.meta
new file mode 100644
index 0000000..3cb9e60
--- /dev/null
+++ b/Main/Config/PartialConfigs/TreasureItemLibConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: db3f92a327a7d7f48800c8eb069ae7a7
+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 1b5af30..297dbbe 100644
--- a/Main/System/HappyXB/HappyXBModel.cs
+++ b/Main/System/HappyXB/HappyXBModel.cs
@@ -543,10 +543,20 @@
}
+ //鎸夋牸瀛愬簱閰嶇疆鐨勫姹� 鑾峰緱鑾峰彇鐗╁搧
+ public List<int> GetAllGridLibItemIDByType(int type)
+ {
+ List<int> itemIDListTemp = new List<int>();
+ foreach (var kv in GetXBItemConfigByType(type).GridLibInfo)
+ {
+ itemIDListTemp.AddRange(TreasureItemLibConfig.GetItemIDList(kv.Value));
+ }
+ return itemIDListTemp.Distinct().ToList();
+ }
#endregion
-}
+ }
public class XBTypeInfo
{
diff --git a/Main/System/HappyXB/HeroCallRuleWin.cs b/Main/System/HappyXB/HeroCallRuleWin.cs
new file mode 100644
index 0000000..6b6792b
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallRuleWin.cs
@@ -0,0 +1,12 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 鎷涘嫙瑙勫垯
+/// </summary>
+public class HeroCallRuleWin : UIBase
+{
+
+}
\ No newline at end of file
diff --git a/Main/System/HappyXB/HeroCallRuleWin.cs.meta b/Main/System/HappyXB/HeroCallRuleWin.cs.meta
new file mode 100644
index 0000000..97333aa
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallRuleWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c9610763bde1ce744b918ba059286aff
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallScoreRuleWin.cs b/Main/System/HappyXB/HeroCallScoreRuleWin.cs
new file mode 100644
index 0000000..c89a8b5
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallScoreRuleWin.cs
@@ -0,0 +1,63 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 绉垎鎷涘嫙瑙勫垯
+/// </summary>
+public class HeroCallScoreRuleWin : UIBase
+{
+
+ [SerializeField] ScrollerController scrollerController;
+ [SerializeField] HeroSelectBehaviour heroSelectBehaviour;
+
+
+ protected override void OnPreOpen()
+ {
+ HeroUIManager.Instance.selectHeroCallListJob = 0;
+ HeroUIManager.Instance.selectHeroCallListCountry = 0;
+
+ HeroUIManager.Instance.SortHeroCallList();
+ scrollerController.OnRefreshCell += OnRefreshCell;
+ Refresh();
+ CreateScroller();
+ }
+
+ protected override void OnPreClose()
+ {
+ scrollerController.OnRefreshCell -= OnRefreshCell;
+ }
+
+ public override void Refresh()
+ {
+ heroSelectBehaviour.Display(0, HeroUIManager.Instance.selectHeroListJob, HeroUIManager.Instance.selectHeroListCountry, SelectJobCountry);
+ }
+
+ void SelectJobCountry(int job, int country)
+ {
+ HeroUIManager.Instance.selectHeroCallListJob = job;
+ HeroUIManager.Instance.selectHeroCallListCountry = country;
+ HeroUIManager.Instance.SortHeroCallList();
+ scrollerController.m_Scorller.RefreshActiveCellViews();
+ }
+
+ void OnRefreshCell(ScrollerDataType type, CellView cellView)
+ {
+ var _cell = cellView as HeroSmallHeadLineCell;
+ _cell.Display(cellView.index);
+ }
+
+ void CreateScroller()
+ {
+ scrollerController.Refresh();
+ for (int i = 0; i < HeroUIManager.Instance.heroCallSortList.Count; i++)
+ {
+ if (i % 4 == 0)
+ {
+ scrollerController.AddCell(ScrollerDataType.Header, i);
+ }
+ }
+ scrollerController.Restart();
+ }
+}
\ No newline at end of file
diff --git a/Main/System/HappyXB/HeroCallScoreRuleWin.cs.meta b/Main/System/HappyXB/HeroCallScoreRuleWin.cs.meta
new file mode 100644
index 0000000..49726b1
--- /dev/null
+++ b/Main/System/HappyXB/HeroCallScoreRuleWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ebaa9682c49d10d41850e4940cd68934
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroCallScoreWin.cs b/Main/System/HappyXB/HeroCallScoreWin.cs
index 5bce5c3..25c32b0 100644
--- a/Main/System/HappyXB/HeroCallScoreWin.cs
+++ b/Main/System/HappyXB/HeroCallScoreWin.cs
@@ -19,6 +19,10 @@
protected override void InitComponent()
{
call1Btn.AddListener(SendHeroCall);
+ ruleBtn.AddListener(() =>
+ {
+ UIManager.Instance.OpenWindow<HeroCallScoreRuleWin>();
+ });
}
diff --git a/Main/System/HappyXB/HeroCallWin.cs b/Main/System/HappyXB/HeroCallWin.cs
index 229a972..9e74658 100644
--- a/Main/System/HappyXB/HeroCallWin.cs
+++ b/Main/System/HappyXB/HeroCallWin.cs
@@ -40,9 +40,14 @@
HappyXBModel.Instance.SendXBManyQuest((int)HappXBTitle.HeroCallAdvanced);
});
scoreBtn.AddListener(() =>
- {
+ {
UIManager.Instance.OpenWindow<HeroCallScoreWin>();
});
+
+ ruleBtn.AddListener(() =>
+ {
+ UIManager.Instance.OpenWindow<HeroCallRuleWin>();
+ });
}
diff --git a/Main/System/HappyXB/HeroSmallHeadCell.cs b/Main/System/HappyXB/HeroSmallHeadCell.cs
new file mode 100644
index 0000000..594cbd1
--- /dev/null
+++ b/Main/System/HappyXB/HeroSmallHeadCell.cs
@@ -0,0 +1,21 @@
+锘縰sing System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class HeroSmallHeadCell : MonoBehaviour
+{
+ [SerializeField] HeroHeadBaseCell heroHeadBaseCell;
+ [SerializeField] Image jobImg;
+ [SerializeField] Text nameText;
+
+ public void Display(int heroID)
+ {
+ var hero = HeroConfig.Get(heroID);
+ heroHeadBaseCell.Init(hero.HeroID, hero.SkinIDList[0]);
+ nameText.text = hero.Name;
+ jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(hero.Class));
+ }
+
+
+}
+
diff --git a/Main/System/HappyXB/HeroSmallHeadCell.cs.meta b/Main/System/HappyXB/HeroSmallHeadCell.cs.meta
new file mode 100644
index 0000000..6057d32
--- /dev/null
+++ b/Main/System/HappyXB/HeroSmallHeadCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15fea9a71f009e844acaccbf4f37c8c1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HappyXB/HeroSmallHeadLineCell.cs b/Main/System/HappyXB/HeroSmallHeadLineCell.cs
new file mode 100644
index 0000000..a0cde55
--- /dev/null
+++ b/Main/System/HappyXB/HeroSmallHeadLineCell.cs
@@ -0,0 +1,23 @@
+锘縰sing UnityEngine;
+
+public class HeroSmallHeadLineCell : CellView
+{
+ [SerializeField] HeroSmallHeadCell[] cardList;
+
+ public void Display(int index)
+ {
+ for (int i = 0; i < cardList.Length; i++)
+ {
+ if (i + index < HeroUIManager.Instance.heroCallSortList.Count)
+ {
+ cardList[i].SetActive(true);
+ cardList[i].Display(HeroUIManager.Instance.heroCallSortList[index + i]);
+ }
+ else
+ {
+ cardList[i].SetActive(false);
+ }
+ }
+ }
+}
+
diff --git a/Main/System/HappyXB/HeroSmallHeadLineCell.cs.meta b/Main/System/HappyXB/HeroSmallHeadLineCell.cs.meta
new file mode 100644
index 0000000..7ead809
--- /dev/null
+++ b/Main/System/HappyXB/HeroSmallHeadLineCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67434124635c2b447a4aae1fc5f1f21c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HeroUI/HeroSelectBehaviour.cs b/Main/System/HeroUI/HeroSelectBehaviour.cs
index 0385c40..da85036 100644
--- a/Main/System/HeroUI/HeroSelectBehaviour.cs
+++ b/Main/System/HeroUI/HeroSelectBehaviour.cs
@@ -62,6 +62,13 @@
}
+ /// <summary>
+ /// 鍥藉鑱屼笟绛涢��
+ /// </summary>
+ /// <param name="state"> 0鏀惰捣锛�1灞曞紑</param>
+ /// <param name="job"></param>
+ /// <param name="country"></param>
+ /// <param name="onRefresh"> 鐐瑰嚮鎸夐挳闇�閫氱煡鍝嶅簲澶栭儴浜嬩欢</param>
public void Display(int state, int job, int country, Action<int, int> onRefresh)
{
foldState = state;
diff --git a/Main/System/HeroUI/HeroUIManager.cs b/Main/System/HeroUI/HeroUIManager.cs
index 6f16674..8a73894 100644
--- a/Main/System/HeroUI/HeroUIManager.cs
+++ b/Main/System/HeroUI/HeroUIManager.cs
@@ -213,6 +213,10 @@
public int selectCallIndex;//0锛�1鎶� 1锛�10鎶� 瀵瑰簲閰嶇疆椤哄簭
public const string skipKey = "SkipHeroCall";
+ //绉垎鎷涘嫙棰勮
+ public List<int> heroCallSortList { get; private set; } = new List<int>(); //绉垎鎷涘嫙鍒楄〃
+ public int selectHeroCallListJob = 0; //绛涢�夎亴涓�
+ public int selectHeroCallListCountry = 0; //绛涢�夊浗瀹�
public bool IsNewHero(int heroID)
{
@@ -239,6 +243,59 @@
return true;
}
+
+ List<int> allHeroCallScoreList = new List<int>(); //绉垎鎷涘嫙鍒楄〃
+ public void SortHeroCallList()
+ {
+ if (allHeroCallScoreList.IsNullOrEmpty())
+ {
+ allHeroCallScoreList = HappyXBModel.Instance.GetAllGridLibItemIDByType((int)HappXBTitle.HeroCallScore);
+ }
+ heroCallSortList = new List<int>();
+ if (selectHeroCallListJob == 0 && selectHeroCallListCountry == 0)
+ {
+ heroCallSortList = allHeroCallScoreList;
+ }
+ else
+ {
+ foreach (var item in allHeroCallScoreList)
+ {
+ HeroConfig heroConfig = HeroConfig.Get(item);
+ if (heroConfig == null)
+ {
+ continue;
+ }
+ if (selectHeroCallListJob != 0 && selectHeroCallListJob != heroConfig.Class)
+ {
+ continue;
+ }
+ if (selectHeroCallListCountry != 0 && selectHeroCallListCountry != heroConfig.Country)
+ {
+ continue;
+ }
+ heroCallSortList.Add(item);
+ }
+ }
+
+ heroCallSortList.Sort(CmpHeroID);
+ }
+
+ int CmpHeroID(int idA, int idB)
+ {
+ HeroConfig heroA = HeroConfig.Get(idA);
+ HeroConfig heroB = HeroConfig.Get(idB);
+
+
+ // 鎺掑簭瑙勫垯锛氭灏嗗搧璐紴姝﹀皢ID
+ if (heroA.Quality != heroB.Quality)
+ {
+ return heroA.Quality > heroB.Quality ? -1 : 1;
+ }
+
+
+ return heroA.HeroID.CompareTo(heroB.HeroID);
+ }
+
#endregion
--
Gitblit v1.8.0