Core/GameEngine/Model/ConfigManager.cs
@@ -245,6 +245,7 @@ StartSyncTask<IconConfig>(AssetPath.ResourceOut); StartSyncTask<SysInfoConfig>(AssetPath.ResourceOut); StartSyncTask<LanguageConfig>(AssetPath.ResourceOut); StartSyncTask<RealmConfig>(AssetPath.ResourceOut); } public bool AllCompleted() Core/ResModule/AnimatorControllerLoader.cs
@@ -11,6 +11,7 @@ public static readonly string controllerSuffix = "AnimatorController_"; public static readonly string controllerUISuffix = "AnimatorController_UI_"; public static readonly string controllerShowSuffix = "AnimatorController_Show_"; public static readonly string controllerRealmSuffix = "AnimatorController_Realm_"; public static AnimationClip LoadAnimationClip(string name, string clipName) { System/Compose/New/ComposeWinModel.cs
@@ -130,6 +130,24 @@ return modellist; } public int GetTicketId(int firstType, int secondType, int thirdType) { var itemId = 0; var dict = ItemCompoundConfig.GetFirstComposeTypeDict(firstType); Dictionary<int, List<ItemCompoundConfig>> _secondTypeDict = null; dict.TryGetValue(secondType, out _secondTypeDict); if (_secondTypeDict != null) { List<ItemCompoundConfig> modellist = null; _secondTypeDict.TryGetValue(thirdType, out modellist); if (modellist != null && modellist.Count > 0) { int.TryParse(modellist[0].makeID, out itemId); } } return itemId; } public int[] makeIDs { get; private set; } public int[] unfixedItemIDs { get; private set; } public int[] costfixedItemIDs { get; private set; } @@ -746,28 +764,36 @@ { bool isEnough = true; Dictionary<int, Dictionary<int, List<ItemCompoundConfig>>> getFirstModel = ItemCompoundConfig.GetFirstComposeTypeDict((int)ComposeFuncType.Ticket); if(getFirstModel.ContainsKey(secondType)) if (getFirstModel.ContainsKey(secondType)) { if(getFirstModel[secondType].ContainsKey(0)) if (getFirstModel[secondType].ContainsKey(0)) { ItemCompoundConfig compoundConfig = getFirstModel[secondType][0][0]; int[] fixedIDs = ConfigParse.GetMultipleStr<int>(compoundConfig.itemID); int[] fixedCnt = ConfigParse.GetMultipleStr<int>(compoundConfig.itemCount); for(int i= 0; i< fixedIDs.Length; i++) for (int i = 0; i < fixedIDs.Length; i++) { int haveCnt = playerPack.GetItemCountByID(PackType.rptItem,fixedIDs[i]); if(fixedCnt[i] > haveCnt) int haveCnt = playerPack.GetItemCountByID(PackType.rptItem, fixedIDs[i]); if (fixedCnt[i] > haveCnt) { isEnough = false; break; } } } else { isEnough = false; } } else { isEnough = false; } return isEnough; } #region 处理跳转界面数据 #region 处理跳转界面数据 public bool CheckComposeItemById(int itemId) { System/Dogz/DogzCell.cs
@@ -28,10 +28,21 @@ m_DogzIcon.SetSprite(_dogzCfg.HeadIcon); m_DogzIcon.SetNativeSize(); var _dogzEquips = model.GetDogzEquips(_dogzCfg.ID); m_DogzIcon.material = (_dogzEquips == null || _dogzEquips.Count < 5) ? MaterialUtility.GetDefaultSpriteGrayMaterial() : MaterialUtility.GetUIDefaultGraphicMaterial(); bool isActive = (_dogzEquips == null || _dogzEquips.Count < 5) ? false : true; m_DogzName.text = _dogzCfg.Name; //m_DogzGrade.text = StringUtility.Contact("评分:", 100); m_DogzGrade.text = StringUtility.Contact("评分:", 100); if (isActive) { m_DogzIcon.material = MaterialUtility.GetUIDefaultGraphicMaterial(); m_DogzName.material = MaterialUtility.GetUIDefaultGraphicMaterial(); m_DogzGrade.material = MaterialUtility.GetUIDefaultGraphicMaterial(); } else { m_DogzIcon.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); m_DogzName.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); m_DogzGrade.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); } m_DogzBtn.image.color = model.presentSelectDogz == _dogzCfg.ID ? Color.blue : Color.white; m_DogzAssist.gameObject.SetActive(model.TryGetAssistDogzState(_dogzCfg.ID)); m_DogzBtn.onClick.RemoveAllListeners(); System/Dogz/DogzEquip.cs
@@ -32,9 +32,9 @@ itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(model.itemId,false,(ulong)model.itemInfo.ItemCount,model.itemInfo.ItemPlace, model.itemInfo.IsBind,false,PackType.rptDogzEquip,model.itemInfo.ItemGUID); tipsModel.SetItemTipsModel(attrData); tipsModel.SetItemTipsModel(model.packType,model.itemInfo.ItemGUID,false,false); tipsModel.SetDogzEquipBtn(tipsModel.curAttrData); tipsModel.ShowUICtrl(); }); } } System/Dogz/DogzItemCell.cs
@@ -46,9 +46,9 @@ itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(model.itemId, false, (ulong)model.itemInfo.ItemCount, model.itemInfo.ItemPlace, model.itemInfo.IsBind, false, PackType.rptDogzItem, model.itemInfo.ItemGUID); tipsModel.SetItemTipsModel(attrData); tipsModel.SetItemTipsModel(model.packType, model.itemInfo.ItemGUID, false, false); tipsModel.SetDogzItemBtn(tipsModel.curAttrData); tipsModel.ShowUICtrl(); }); } } System/Dogz/DogzModel.cs
@@ -69,7 +69,7 @@ AddAssistItem = int.Parse(_funcCfg.Numerical2); AddAssistItemCnt = ConfigParse.GetMultipleStr<int>(_funcCfg.Numerical3); m_DogzEquipStrenLimit = ConfigParse.GetDic<int, int>(_funcCfg.Numerical4); _funcCfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("DogzPack"); _funcCfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("DogzPack"); DogzPackGridCnt = int.Parse(_funcCfg.Numerical1); } /// <summary> @@ -236,28 +236,48 @@ ItemModel itemModel = playerPack.GetItemModelByIndex(type, index); int dogzId = GetDogzIDByIndex(index); if (itemModel != null) List<ItemModel> modellist = GetDogzEquips(dogzId); if(modellist != null) { for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++) if (itemModel != null) { if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index) bool isAdd = true; for (int i = 0; i < modellist.Count; i++) { m_DogzEquipDict[dogzId][i] = itemModel; return; if (modellist[i].itemInfo.ItemPlace == index) { isAdd = false; modellist[i] = itemModel; break; } } if(isAdd) { modellist.Add(itemModel); } } else { for (int i = 0; i < modellist.Count; i++) { if (modellist[i].itemInfo.ItemPlace == index) { modellist.RemoveAt(i); break; } } } } else { for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++) if(itemModel != null) { if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index) { m_DogzEquipDict[dogzId].RemoveAt(i); return; } List<ItemModel> equipDatas = new List<ItemModel>(); equipDatas.Add(itemModel); m_DogzEquipDict.Add(dogzId,equipDatas); } } if(RefreshDogzEquipAct != null) { System/KnapSack/Logic/EquipTip.cs
@@ -179,7 +179,8 @@ yield return null; if(itemAttrData.isCompare) { if (itemAttrData.packType != PackType.rptEquip) if (itemAttrData.packType != PackType.rptEquip && itemAttrData.packType != PackType.rptDogzEquip) { itemTipsModel.SetCurTips(this.GetComponent<RectTransform>()); } @@ -205,7 +206,8 @@ ItemCellModel cellModel = new ItemCellModel(itemAttrData.itemId,itemAttrData.isPreview, (ulong)itemAttrData.count, itemAttrData.isBind, itemAttrData.guid,itemAttrData.packType,itemAttrData.isCompare, itemAttrData.useDataDict); itemCell.Init(cellModel); if(itemAttrData.packType == PackType.rptEquip) if(itemAttrData.packType == PackType.rptEquip || itemAttrData.packType == PackType.rptDogzEquip) { putOnIcon.SetActive(true); } @@ -262,7 +264,8 @@ if (itemAttrData.isCompare) { if(itemAttrData.packType != PackType.rptEquip) if(itemAttrData.packType != PackType.rptEquip && itemAttrData.packType != PackType.rptDogzEquip) { CreateFuncBtn(); } System/KnapSack/Logic/ItemTipsModel.cs
@@ -71,6 +71,8 @@ get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); } } DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } } public override void Init() { m_storeModel.RefreshTCBPlayerDataEvent += RefreshOfflinePluginTime; @@ -637,11 +639,7 @@ switch (attrData.winType) { case ItemWinType.equipWin: attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); }); break; case ItemWinType.wingsWin: attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); }); break; case ItemWinType.guardWin: attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); }); break; @@ -688,6 +686,36 @@ } public void SetDogzItemBtn(ItemAttrData attrData) { if (attrData == null) return; if (attrData.itemConfig.CanSell == 1) { attrData.SetTipsFuncBtn(ItemWinBtnType.sell, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendSellQuest(ItemWinBtnType.sell, attrData); }); } switch (attrData.winType) { case ItemWinType.equipWin: attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { dogzModel.SendPutOnEquip(dogzModel.presentSelectDogz, attrData.index); }); break; } } public void SetDogzEquipBtn(ItemAttrData attrData) { if (attrData == null) return; attrData.SetTipsFuncBtn(ItemWinBtnType.putOff, (ItemWinBtnType, ItemAttrData) => { dogzModel.SendPutOffEquip(dogzModel.presentSelectDogz,dogzModel.GetDogzEquipPlaceByIndex(attrData.index)); }); attrData.SetTipsFuncBtn(ItemWinBtnType.strength, (ItemWinBtnType, ItemAttrData) => { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc1); }); } /// <summary> /// 设置仓库弹框按钮 /// </summary> System/KnapSack/Logic/PackModelInterface.cs
@@ -588,7 +588,7 @@ SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem); if (singlePack == null) return false; int startLockIndex = singlePack.openGridCount - GetInitGridCount(PackType.rptItem); int startLockIndex = singlePack.openGridCount - playerPack.InitBagGridCnt; FuncConfigConfig _tagFuncModel = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("OpenBagItem"); int haveCount = playerPack.GetItemCountByID(PackType.rptItem,itemId); Equation.Instance.Clear(); @@ -779,22 +779,20 @@ #region 解锁格子 public int GetInitGridCount(PackType type) { FuncConfigConfig initGridCount = null; if (type == PackType.rptItem) initGridCount = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitBagCellCount"); else if (type == PackType.rptWarehouse) initGridCount = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitDepotCellCount"); return int.Parse(initGridCount.Numerical1); } public void OpenGrid(int chooseGridCount, PackType type) { SinglePackModel singlePack = playerPack.GetSinglePackModel(type); int openCount = chooseGridCount - singlePack.openGridCount; int index = chooseGridCount - GetInitGridCount(type); int index = 0; switch(type) { case PackType.rptItem: index = chooseGridCount - playerPack.InitBagGridCnt; break; case PackType.rptWarehouse: index = chooseGridCount - playerPack.InitDepotGridCnt; break; } itemTipsModel.SetExtendGirdModel(openCount,index, type); WindowCenter.Instance.Open<ExtendWin>(); } System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -680,7 +680,7 @@ if (useItemModel.itemId == 951) { int startLockIndex = singlePack.openGridCount - modelInterface.GetInitGridCount(PackType.rptItem); int startLockIndex = singlePack.openGridCount - playerPack.InitBagGridCnt; int chooseGridCnt = singlePack.openGridCount + GetExtendGridCnt(startLockIndex); modelInterface.OpenGrid(chooseGridCnt, PackType.rptItem); return; @@ -776,6 +776,11 @@ { extendCnt = 1; } int remianLock = playerPack.MaxBagGridCnt - playerPack.GetSinglePackModel(PackType.rptItem).openGridCount; if(extendCnt > remianLock) { extendCnt = remianLock; } return extendCnt; } } System/KnapSack/Logic/PlayerPackModels.cs
@@ -17,6 +17,11 @@ public Dictionary<int, Dictionary<int, int>> decomposeAttrDict = new Dictionary<int, Dictionary<int, int>>(); public static string StrengthAttrShift_RecordKey = "StrengthAttrShift"; public const string RecordKnapsackTitle = "RecordKnapsackTitle"; public int MaxBagGridCnt { get; private set; } public int InitBagGridCnt { get; private set; } public int MaxDepotGridCnt { get; private set; } public int InitDepotGridCnt { get; private set; } public override void Init() { List<DungeonOpenTimeConfig> dungeonlist = ConfigManager.Instance.GetAllValues<DungeonOpenTimeConfig>(); @@ -71,6 +76,11 @@ minDecomposeNum = int.Parse(equipDecompose.Numerical1); defaultUnSelectlist = ConfigParse.GetMultipleStr<int>(equipDecompose.Numerical2); InitDepotGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitDepotCellCount").Numerical1); InitBagGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("InitBagCellCount").Numerical1); MaxBagGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("MaxBagCellCount").Numerical1); MaxDepotGridCnt = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("MaxDepotCellCount").Numerical1); } public void OnBeforePlayerDataInitialize() System/NewBieGuidance/NewBieCenter.cs
@@ -54,6 +54,7 @@ PlayerDeadModel playerDeadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } } TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } } DailyQuestModel dailyModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } public event Action guideStepChangeEvent; public event Action guideBeginEvent; @@ -340,7 +341,10 @@ case GuideTriggerType.RealmSitDown: return false; case GuideTriggerType.ItemCompound: return composeModel.IsComposeTicketByType(config.Condition); var itemId = composeModel.GetTicketId((int)ComposeFuncType.Ticket, config.Condition, 0); var singlepack = packModel.GetSinglePackModel(PackType.rptItem); var count = singlepack != null ? singlepack.GetItemCountByID(itemId) : 0; return composeModel.IsComposeTicketByType(config.Condition) && itemId != 0 && count == 0; case GuideTriggerType.HangUpResult: return true; case GuideTriggerType.BranchQuestCando: System/Realm/RealmUpWin.cs
@@ -40,7 +40,6 @@ [SerializeField] RealmProgressBehaviour m_RealmProgress; [SerializeField] UIEffect m_RealmDungeonSfx; [SerializeField] UIEffect m_GetRealmPointSfx; [SerializeField] Button m_FuncButton; [SerializeField] Text m_FuncButtonTxt; @@ -55,8 +54,14 @@ [SerializeField, Header("模型位置")] Vector3[] m_ModelPositions; [SerializeField, Header("当前境界位置")] Vector3[] m_RealmNowPositions; [SerializeField, Header("下一境界位置")] Vector3[] m_RealmNextwPositions; [SerializeField, Header("Boss位置")] Vector3[] m_BossPositions; [SerializeField, Header("Boss出现延长")] float m_DelayEnterTime = 1f; int cacheRealmPoint = 0; Coroutine cacheCoroutine = null; RuntimeAnimatorController cacheController = null; const string State_EnterHash = "Show"; const string State_IdleHash = "Idle"; RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } } @@ -75,7 +80,21 @@ PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent; cacheRealmPoint = PlayerDatas.Instance.extersion.realmPoint; m_RawBoss.gameObject.SetActive(false); m_RawPlayer.gameObject.SetActive(false); Display(); } protected override void OnActived() { base.OnActived(); if (realmModel.realmDungeonState) { StopBoss(); m_RawBoss.gameObject.SetActive(false); m_RawPlayer.gameObject.SetActive(true); UI3DModelExhibition.Instance.BeginShowSitDownPlayer(m_RawPlayer, PlayerDatas.Instance.baseData.Job); } } protected override void OnAfterOpen() @@ -91,6 +110,7 @@ if (realmModel.realmDungeonState) { m_RealmDungeonSfx.Play(); StartCoroutine(Co_DisplayBossShow()); } realmModel.realmDungeonState = false; } @@ -99,9 +119,18 @@ { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent; UI3DModelExhibition.Instance.StopShowNPC(); StopBoss(); UI3DModelExhibition.Instance.StopShowPlayer(); realmModel.realmDungeonState = false; if (cacheCoroutine != null) { StopCoroutine(cacheCoroutine); cacheCoroutine = null; } if (cacheController != null) { cacheController = null; } } protected override void OnAfterClose() @@ -116,6 +145,17 @@ } } #endregion IEnumerator Co_DisplayBossShow() { yield return WaitingForSecondConst.WaitMS800; ResetRunTimeController(); var config = ConfigManager.Instance.GetTemplate<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel); m_RawPlayer.gameObject.SetActive(false); UI3DModelExhibition.Instance.StopShowPlayer(); yield return WaitingForSecondConst.GetWaitForSeconds(m_DelayEnterTime > 0 ? m_DelayEnterTime : 1f); StartBoss(config, true); } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType) { @@ -135,10 +175,6 @@ DisplayModel(); DisplayButton(); if (PlayerDatas.Instance.extersion.realmPoint >= cacheRealmPoint) { DisplayGetRealmPointSfx(); } cacheRealmPoint = PlayerDatas.Instance.extersion.realmPoint; } } @@ -236,16 +272,58 @@ if (realmModel.IsRealmHighest || _realmPoint < config.NeedPoint) { m_RawPlayer.gameObject.SetActive(true); StopBoss(); m_RawBoss.gameObject.SetActive(false); UI3DModelExhibition.Instance.StopShowNPC(); UI3DModelExhibition.Instance.BeginShowSitDownPlayer(m_RawPlayer, PlayerDatas.Instance.baseData.Job); } else if (_realmPoint >= config.NeedGood) { m_RawBoss.gameObject.SetActive(true); m_RawPlayer.gameObject.SetActive(false); ResetRunTimeController(); UI3DModelExhibition.Instance.StopShowPlayer(); UI3DModelExhibition.Instance.BeginShowNPC(config.BossID, config.IsBigRealm == 1 ? Vector3.zero : direction, m_RawBoss, false); StartBoss(config); } } private void StopBoss() { ResetRunTimeController(); UI3DModelExhibition.Instance.StopShowNPC(); } private void ResetRunTimeController() { var npcModel = UI3DModelExhibition.Instance.NpcModelPet; if (npcModel != null) { var animator = npcModel.GetComponentInChildren<Animator>(); if (animator != null && cacheController != null) { animator.runtimeAnimatorController = cacheController; } } } private void StartBoss(RealmConfig config, bool act = false) { StopBoss(); m_RawBoss.gameObject.SetActive(true); UI3DModelExhibition.Instance.StopShowPlayer(); UI3DModelExhibition.Instance.BeginShowNPC(config.BossID, config.IsBigRealm == 1 ? Vector3.zero : direction, m_RawBoss, false); var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(config.BossID); var npcModel = UI3DModelExhibition.Instance.NpcModelPet; m_RawBoss.transform.localPosition = config.IsBigRealm == 1 ? m_BossPositions[1] : m_BossPositions[0]; if (npcModel != null) { var animator = npcModel.GetComponentInChildren<Animator>(); if (animator != null) { cacheController = animator.runtimeAnimatorController; var runtimeController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerRealmSuffix, npcConfig.MODE); animator.runtimeAnimatorController = runtimeController; animator.Play(act ? State_EnterHash : State_IdleHash, 0); } } } @@ -271,14 +349,6 @@ else { m_FuncButtonTxt.text = Language.Get("RealmWin_Bewrite_1"); } } void DisplayGetRealmPointSfx() { if (m_GetRealmPointSfx != null) { m_GetRealmPointSfx.Play(); } } UI/Common/SortTable.cs
@@ -1,67 +1,67 @@ using EnhancedUI.EnhancedScroller; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class SortTable : MonoBehaviour { [SerializeField] SortType m_SortType; public SortType sortType { get { return m_SortType; } set { m_SortType = value; } } [SerializeField] List<SortElement> m_SortElements; [SerializeField] ScrollerController m_Controller; [SerializeField] ClickScreenOtherSpace m_ClickOtherSpace; [SerializeField] Text m_TargetDisplay; public event Action<int> onSelectSortEvent; public event Action onSortCloseEvent; DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } } private void Awake() { m_Controller.OnRefreshCell += OnRefreshCell; } private void OnEnable() { m_Controller.Refresh(); if (m_SortElements != null) { for (int i = 0; i < m_SortElements.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, i, OnSortSelect); } } m_Controller.Restart(); if (m_ClickOtherSpace != null) { m_ClickOtherSpace.RemoveAllListeners(); m_ClickOtherSpace.AddListener(() => { if (onSortCloseEvent != null) { onSortCloseEvent(); } }); } } private void OnSortSelect(CellView _cell) { var _index = _cell.index; var type = m_SortElements[_index].type; using EnhancedUI.EnhancedScroller; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class SortTable : MonoBehaviour { [SerializeField] SortType m_SortType; public SortType sortType { get { return m_SortType; } set { m_SortType = value; } } [SerializeField] List<SortElement> m_SortElements; [SerializeField] ScrollerController m_Controller; [SerializeField] ClickScreenOtherSpace m_ClickOtherSpace; [SerializeField] Text m_TargetDisplay; public event Action<int> onSelectSortEvent; public event Action onSortCloseEvent; DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } } private void Awake() { m_Controller.OnRefreshCell += OnRefreshCell; } private void OnEnable() { m_Controller.Refresh(); if (m_SortElements != null) { for (int i = 0; i < m_SortElements.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, i, OnSortSelect); } } m_Controller.Restart(); if (m_ClickOtherSpace != null) { m_ClickOtherSpace.RemoveAllListeners(); m_ClickOtherSpace.AddListener(() => { if (onSortCloseEvent != null) { onSortCloseEvent(); } }); } } private void OnSortSelect(CellView _cell) { var _index = _cell.index; var type = m_SortElements[_index].type; switch (sortType) { case SortType.EquipQuality: @@ -70,48 +70,48 @@ case SortType.EquipStar: dogzModel.SelectDogzItemStart = type; break; } if (onSelectSortEvent != null) { onSelectSortEvent(type); } if (onSortCloseEvent != null) { onSortCloseEvent(); } if (m_TargetDisplay != null) { m_TargetDisplay.text = Language.Get(m_SortElements[_index].textKey); } this.gameObject.SetActive(false); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _sortCell = cell as SortCell; _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey); } public void SetDefault() { if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0) { m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey); } } } public enum SortType { EquipQuality, EquipStar, } [Serializable] public struct SortElement { [Header("语言表key")] public string textKey; public int type; } } } if (onSelectSortEvent != null) { onSelectSortEvent(type); } if (onSortCloseEvent != null) { onSortCloseEvent(); } if (m_TargetDisplay != null) { m_TargetDisplay.text = Language.Get(m_SortElements[_index].textKey); } this.gameObject.SetActive(false); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _sortCell = cell as SortCell; _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey); } public void SetDefault() { if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0) { m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey); } } } public enum SortType { EquipQuality, EquipStar, } [Serializable] public struct SortElement { [Header("语言表key")] public string textKey; public int type; } }