123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- /****************************************************************************
- * 2024.7 LXD
- ****************************************************************************/
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using QFramework;
- namespace QFramework
- {
- public partial class ToolLibrarySelectElement : UIElement
- {
- List<ToolItemPrefab> toolItemPrefabs = new List<ToolItemPrefab>();
- List<ToolConfigInfo> m_ToolConfigInfos;
- List<ToolConfigInfo> m_NeedHightToolConfigInfos;
- /// <summary>
- /// 当前的页数
- /// </summary>
- int m_CurrentPage = 1;
- /// <summary>
- /// 最后一页数量
- /// </summary>
- 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<ToolLibraryForm>();
- ToolConfigProxy tmpProxy = DAL.Instance.Get<ToolConfigProxy>();
- m_NeedHightToolConfigInfos = new List<ToolConfigInfo>();
- 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);
- }
- }
- /// <summary>
- /// 初始化数据
- /// </summary>
- public void InitData()
- {
- ToolConfigProxy tmpToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
- for (int i = 0; i < 18; i++)
- {
- GameObject tmpObj = Instantiate(ToolItemPrefab.gameObject, Content);
- toolItemPrefabs.Add(tmpObj.GetComponent<ToolItemPrefab>());
- }
- SetData(tmpToolConfigProxy.GetAllToolConfigInfos());
- }
- public void SetData(List<ToolConfigInfo> toolConfigInfos)
- {
- m_ToolConfigInfos = toolConfigInfos;
- ShowTargetPage(1);
- }
- /// <summary>
- /// 展示上一页
- /// </summary>
- public void ShowPreviousPage()
- {
- if (m_CurrentPage - 1 <= 0) return;
- ShowTargetPage(m_CurrentPage - 1);
- }
- /// <summary>
- /// 展示下一页
- /// </summary>
- public void ShowNextPage()
- {
- if (m_CurrentPage + 1 > GetPageCount()) return;
- ShowTargetPage(m_CurrentPage + 1);
- }
- /// <summary>
- /// 展示指定页
- /// </summary>
- /// <param name="page"></param>
- 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<ToolLibraryForm>();
- if (i == 0) toolItemPrefabs[i].SetShowToolInfo();
- }
- PageNumber.text = "页面" + page + "/" + GetPageCount();
- }
- /// <summary>
- /// 搜索框搜索
- /// </summary>
- /// <param name="inputStr"></param>
- private void OnSearchInputField(string inputStr)
- {
- ToolConfigProxy toolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
- m_ToolConfigInfos = toolConfigProxy.GetToolConfigInfosByToolTypeAndName(UIKit.GetPanel<ToolLibraryForm>().ToolTypeElement.curentType, inputStr);
- SetData(m_ToolConfigInfos);
- }
- /// <summary>
- /// 查找当前页有几个工具
- /// </summary>
- /// <returns></returns>
- private int GetToolCountOfCureentPage(int page)
- {
- if (page < GetPageCount())
- {
- return 18;
- }
- else if (page == GetPageCount())
- {
- return LastPageCount;
- }
- return 0;
- }
- /// <summary>
- /// 获取页数
- /// </summary>
- /// <returns></returns>
- 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<ToolLibraryForm>().m_CurrentSelectToolIDs.Clear();
- ShowTargetPage(m_CurrentPage);
- }
- private void OnConfirmBtnClick()
- {
- UIKit.GetPanel<ToolLibraryForm>().OnConfirmBtnClick();
- }
- }
- }
|