using UnityEngine; using UnityEngine.UI; using QFramework; using System.Collections.Generic; using I2.Loc; using System; namespace QFramework { public enum ToolLibraryType { /// /// 工具间 /// ToolRoom, /// /// 工具包 /// ToolKit } public class ToolLibraryFormData : UIPanelData { /// /// 开启的工具库类型 /// public ToolLibraryType toolLibraryType = ToolLibraryType.ToolRoom; /// /// 正常情况下不用使用该回调,这是为ToolLibrarySelectElement单加的模式 /// public Action selectAction; } public partial class ToolLibraryForm : UIPanel { public List m_Sprites = new List(); public ToolConfigProxy m_ToolConfigProxy; protected override void OnInit(IUIData uiData = null) { mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData(); m_ToolConfigProxy = DAL.Instance.Get(); CloseBtn.onClick.AddListener(OnCloseBtnClick); ToolLibrarySelectElement.InitData(); ToolLibrarySelectElement.TitleText.text = ScriptLocalization.tooltype.all; m_ToolConfigProxy.m_CurrentToolLibraryType = mData.toolLibraryType; CloseBtn.gameObject.SetActive(mData.selectAction == null); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData(); switch (m_ToolConfigProxy.m_CurrentToolLibraryType) { case ToolLibraryType.ToolRoom: m_ToolConfigProxy.m_TmpToolRoomConfigInfos = m_ToolConfigProxy.GetAllToolConfigInfoFromCTRSTCIs(); ToolLibrarySelectElement.OpenToolRoomUI(); break; case ToolLibraryType.ToolKit: ToolLibrarySelectElement.OpenToolKitUI(); break; default: break; } ToolTypeElement.RefrushTypeBtn(); transform.transform.SetAsLastSibling(); } protected override void OnShow() { //工具包 if (mData.toolLibraryType == ToolLibraryType.ToolKit) { } else if (mData.toolLibraryType == ToolLibraryType.ToolRoom) { ToolLibrarySelectElement.ShowUI(); //刷新工具列表为全部 ToolTypeElement.RefrushTypeBtn(); transform.transform.SetAsLastSibling(); } } protected override void OnHide() { } protected override void OnClose() { } void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { OnCloseBtnClick(); } if (Input.GetKeyDown(KeyCode.Return)) { Debug.Log("ClickEnter"); OnConfirmBtnClick(); } if (Input.GetKeyDown(KeyCode.Delete)) { ToolLibrarySelectElement.OnClearBtnClick(); } } /// /// 关闭工具库 /// public void OnCloseBtnClick() { switch (m_ToolConfigProxy.m_CurrentToolLibraryType) { case ToolLibraryType.ToolRoom: break; case ToolLibraryType.ToolKit: m_ToolConfigProxy.ClearToolConfigInfoToCTKSTCIs(); foreach (var item in m_ToolConfigProxy.GetAllToolConfigInfos()) { foreach (var selectTool in OperateSetting.Instance.m_ToolKitToolConfigs) { if (selectTool.toolName == item.toolName) { ToolConfigInfo tmpToolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoByToolName(item.toolName); m_ToolConfigProxy.AddToolConfigInfoToCTKSTCIs(tmpToolConfigInfo); } } } break; default: break; } UIKit.ClosePanel(); } /// /// 确认提交所选工具 /// public void OnConfirmBtnClick() { switch (m_ToolConfigProxy.m_CurrentToolLibraryType) { case ToolLibraryType.ToolRoom: m_ToolConfigProxy.SetCurrrentToolRoomToolConfigInfos(m_ToolConfigProxy.m_TmpToolRoomConfigInfos); break; case ToolLibraryType.ToolKit: break; default: break; } List tmpToolConfigs = new List(); foreach (var item in m_ToolConfigProxy.GetAllToolConfigInfoFromCTKSTCIs()) { if (m_ToolConfigProxy.GetToolConfigInfoFromCTRSTCIsById(int.Parse(item.id)) != null) { ToolConfig tmpToolConfig = new ToolConfig(); ToolConfigInfo toolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoById(int.Parse(item.id)); tmpToolConfig.toolName = toolConfigInfo.toolName; tmpToolConfig.toolImg = m_ToolConfigProxy.GetSpriteByToolName(tmpToolConfig.toolName); tmpToolConfig.en_toolName = toolConfigInfo.en_toolName; tmpToolConfig.en_toolType = toolConfigInfo.en_toolType; tmpToolConfig.en_toolDescription = toolConfigInfo.en_toolDescription; tmpToolConfigs.Add(tmpToolConfig); } } OperateSetting.Instance.m_ToolKitToolConfigs = tmpToolConfigs; UIKit.OpenPanel(new ToolDisplayFormData() { m_ToolConfigs = tmpToolConfigs }); if (mData.selectAction != null) { mData.selectAction?.Invoke(); }else { UIKit.ClosePanel(); } } public void RefrushAllChoseTool() { m_ToolConfigProxy.ClearToolConfigInfoToCTKSTCIs(); OperateSetting.Instance.m_ToolKitToolConfigs.Clear(); UIKit.OpenPanel(new ToolDisplayFormData() { m_ToolConfigs = null }); } } }