/**************************************************************************** * 2024.7 LXD ****************************************************************************/ using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using QFramework; namespace QFramework { public partial class ToolLibrarySelectElement : UIElement { List toolItemPrefabs = new List(); List m_ToolConfigInfos; List m_NeedHightToolConfigInfos; /// /// 当前的页数 /// int m_CurrentPage = 1; /// /// 最后一页数量 /// int LastPageCount { get { if ((float)m_ToolConfigInfos.Count % 18 == 0) return 18; else return m_ToolConfigInfos.Count % 18; } } private void Start() { PreviousPageBtn.onClick.AddListener(ShowPreviousPage); NextPageBtn.onClick.AddListener(ShowNextPage); SearchInputField.onValueChanged.AddListener(OnSearchInputField); ClearBtn.onClick.AddListener(OnClearBtnClick); ConfirmBtn.onClick.AddListener(OnConfirmBtnClick); } public void OpenUI() { if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return; ShowHighter(); ShowTargetPage(1); } public void ShowUI() { if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return; ShowHighter(); ShowTargetPage(1); } public void ShowHighter() { ToolLibraryForm tmpLibraryForm = UIKit.GetPanel(); ToolConfigProxy tmpProxy = DAL.Instance.Get(); m_NeedHightToolConfigInfos = new List(); foreach (var item in OperateSetting.Instance.m_CurrentStepRightToolNames) { ToolConfigInfo tmpInfo = tmpProxy.GetTooConfigInfoByToolName(item); ToolConfigInfo tmpToolConfigInfo = m_ToolConfigInfos.Find(t => t.id == tmpInfo.id); m_ToolConfigInfos.Remove(tmpToolConfigInfo); m_ToolConfigInfos.Insert(0, tmpToolConfigInfo); m_NeedHightToolConfigInfos.Add(tmpInfo); } } /// /// 初始化数据 /// public void InitData() { ToolConfigProxy tmpToolConfigProxy = DAL.Instance.Get(); for (int i = 0; i < 18; i++) { GameObject tmpObj = Instantiate(ToolItemPrefab.gameObject, Content); toolItemPrefabs.Add(tmpObj.GetComponent()); } SetData(tmpToolConfigProxy.GetAllToolConfigInfos()); } public void SetData(List toolConfigInfos) { m_ToolConfigInfos = toolConfigInfos; ShowTargetPage(1); } /// /// 展示上一页 /// public void ShowPreviousPage() { if (m_CurrentPage - 1 <= 0) return; ShowTargetPage(m_CurrentPage - 1); } /// /// 展示下一页 /// public void ShowNextPage() { if (m_CurrentPage + 1 > GetPageCount()) return; ShowTargetPage(m_CurrentPage + 1); } /// /// 展示指定页 /// /// public void ShowTargetPage(int page) { m_CurrentPage = page; SetPagePoint(page); HideAllToolElement(); for (int i = 0; i < GetToolCountOfCureentPage(page); i++) { ToolConfigInfo tmpToolConfigInfo = m_ToolConfigInfos[(page - 1) * 18 + i]; toolItemPrefabs[i].gameObject.SetActive(true); toolItemPrefabs[i].SetData(tmpToolConfigInfo); ToolLibraryForm toolLibraryForm = UIKit.GetPanel(); if (i == 0) toolItemPrefabs[i].SetShowToolInfo(); } PageNumber.text = "页面" + page + "/" + GetPageCount(); } /// /// 搜索框搜索 /// /// private void OnSearchInputField(string inputStr) { ToolConfigProxy toolConfigProxy = DAL.Instance.Get(); m_ToolConfigInfos = toolConfigProxy.GetToolConfigInfosByToolTypeAndName(UIKit.GetPanel().ToolTypeElement.curentType, inputStr); SetData(m_ToolConfigInfos); } /// /// 查找当前页有几个工具 /// /// private int GetToolCountOfCureentPage(int page) { if (page < GetPageCount()) { return 18; } else if (page == GetPageCount()) { return LastPageCount; } return 0; } /// /// 获取页数 /// /// private int GetPageCount() { int pageCount = m_ToolConfigInfos.Count / 18; if (LastPageCount > 0 && m_ToolConfigInfos.Count % 18 != 0) pageCount++; return pageCount; } private void HideAllToolElement() { foreach (var item in toolItemPrefabs) { item.gameObject.SetActive(false); item.ToolIcon.sprite = null; item.SelectState.gameObject.SetActive(false); item.HighterState.gameObject.SetActive(false); item.ShowHighter(false); } } private void SetPagePoint(int page) { if (page > 6 || page < 1) return; for (int i = 0; i < 6; i++) { PagePoint.transform.GetChild(i).gameObject.SetActive(false); PagePoint.transform.GetChild(i).Find("Hight").gameObject.SetActive(false); } for (int i = 0; i < GetPageCount(); i++) { PagePoint.transform.GetChild(i).gameObject.SetActive(true); } PagePoint.transform.GetChild(page - 1).Find("Hight").gameObject.SetActive(true); } public bool ToolItemIsNeedShowHighter(string _id) { if (m_NeedHightToolConfigInfos == null) return false; return m_NeedHightToolConfigInfos.Find(t => t.id == _id) != null; } public void OnClearBtnClick() { UIKit.GetPanel().m_CurrentSelectToolIDs.Clear(); ShowTargetPage(m_CurrentPage); } private void OnConfirmBtnClick() { UIKit.GetPanel().OnConfirmBtnClick(); } } }