Main/Config/PartialConfigs/TreasureItemLibConfig.cs
New file @@ -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]; } } Main/Config/PartialConfigs/TreasureItemLibConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: db3f92a327a7d7f48800c8eb069ae7a7 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: 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 { Main/System/HappyXB/HeroCallRuleWin.cs
New file @@ -0,0 +1,12 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 招募规则 /// </summary> public class HeroCallRuleWin : UIBase { } Main/System/HappyXB/HeroCallRuleWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: c9610763bde1ce744b918ba059286aff MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/HappyXB/HeroCallScoreRuleWin.cs
New file @@ -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(); } } Main/System/HappyXB/HeroCallScoreRuleWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: ebaa9682c49d10d41850e4940cd68934 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/HappyXB/HeroCallScoreWin.cs
@@ -19,6 +19,10 @@ protected override void InitComponent() { call1Btn.AddListener(SendHeroCall); ruleBtn.AddListener(() => { UIManager.Instance.OpenWindow<HeroCallScoreRuleWin>(); }); } 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>(); }); } Main/System/HappyXB/HeroSmallHeadCell.cs
New file @@ -0,0 +1,21 @@ using 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)); } } Main/System/HappyXB/HeroSmallHeadCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 15fea9a71f009e844acaccbf4f37c8c1 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/HappyXB/HeroSmallHeadLineCell.cs
New file @@ -0,0 +1,23 @@ using 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); } } } } Main/System/HappyXB/HeroSmallHeadLineCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 67434124635c2b447a4aae1fc5f1f21c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: 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; 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