yyl
2025-06-09 b9751b2f076ee050fe5b685e91ae4fc4469b1015
Main/System/GMCommand/GMCmdPanel.cs
@@ -5,92 +5,80 @@
using UnityEngine.Events;
namespace vnxbqy.UI
public class GMCmdPanel : UIBase
{
    public class GMCmdPanel : UIBase
    [SerializeField]
    private ScrollerController _cmdCtrl;
    [SerializeField]
    private Button _closeBtn;
    GMCmdManager _cmdModel;
    GMCmdManager cmdModel{ get { return GMCmdManager.Instance; } }
    protected override void OnPreOpen()
    {
        base.OnPreOpen();
        _cmdCtrl.OnRefreshCell += RefreshCmdCell;
        _closeBtn.onClick.AddListener(OnClickCloseBtn);
        CreateCmdCell();
    }
    protected override void OnOpen()
    {
        base.OnOpen();
        this.transform.SetAsLastSibling();
    }
    private void CreateCmdCell()
    {
        _cmdCtrl.Refresh();
        var allKeys = GmCmdConfig.dic.Keys;
        foreach (var key in allKeys)
        {
            _cmdCtrl.AddCell(ScrollerDataType.Header, key);
        }
        _cmdCtrl.Restart();
    }
    private void RefreshCmdCell(ScrollerDataType type, CellView cell)
    {
        Button cellBtn = cell.GetComponent<Button>();
        Text cmdText = cell.transform.Find("Text").GetComponent<Text>();
        GmCmdConfig gmCmdModel = GmCmdConfig.Get(cell.index);
        if (gmCmdModel == null)
            return;
        cmdText.text = gmCmdModel.Cmd + "=" + gmCmdModel.ParamSet;
        cellBtn.onClick.RemoveAllListeners();
        cellBtn.onClick.AddListener(() => { OnClickCmdCell(gmCmdModel.ParamSet); });
    }
    private void OnClickCmdCell(string paramSet)
    {
        SplitLongGMCmd(paramSet);
    }
    public void SplitLongGMCmd(string value)
    {
        [SerializeField]
        private ScrollerController _cmdCtrl;
        [SerializeField]
        private Button _closeBtn;
        GMCmdManager _cmdModel;
        GMCmdManager cmdModel{ get { return GMCmdManager.Instance; } }
        protected override void OnPreOpen()
        string[] longCmdArray = value.Split('|');
        for (int i = 0; i < longCmdArray.Length; i++)
        {
            base.OnPreOpen();
            _cmdCtrl.OnRefreshCell += RefreshCmdCell;
            _closeBtn.onClick.AddListener(OnClickCloseBtn);
          CreateCmdCell();
            cmdModel.OnSendGMQuest(longCmdArray[i].Trim());
        }
        protected override void OnOpen()
        {
            base.OnOpen();
            this.transform.SetAsLastSibling();
        }
        private void CreateCmdCell()
        {
            _cmdCtrl.Refresh();
            var allKeys = GmCmdConfig.dic.Keys;
            foreach (var key in allKeys)
            {
                _cmdCtrl.AddCell(ScrollerDataType.Header, key);
            }
            _cmdCtrl.Restart();
        }
        private void RefreshCmdCell(ScrollerDataType type, CellView cell)
        {
            Button cellBtn = cell.GetComponent<Button>();
            Text cmdText = cell.transform.Find("Text").GetComponent<Text>();
            GmCmdConfig gmCmdModel = GmCmdConfig.Get(cell.index);
            if (gmCmdModel == null)
                return;
            cmdText.text = gmCmdModel.Cmd + "=" + gmCmdModel.ParamSet;
            cellBtn.onClick.RemoveAllListeners();
            cellBtn.onClick.AddListener(() => { OnClickCmdCell(gmCmdModel.ParamSet); });
        }
        private void OnClickCmdCell(string paramSet)
        {
            SplitLongGMCmd(paramSet);
        }
        public void SplitLongGMCmd(string value)
        {
            if (value == "RoleDead" && CrossServerUtility.IsCrossServer())
            {
                string[] longCmdArray = value.Split('|');
                for (int i = 0; i < longCmdArray.Length; i++)
                {
                    cmdModel.SendCrossServerGMQuest(longCmdArray[i].Trim());
                }
            }
            else
            {
                string[] longCmdArray = value.Split('|');
                for (int i = 0; i < longCmdArray.Length; i++)
                {
                    cmdModel.OnSendGMQuest(longCmdArray[i].Trim());
                }
            }
        }
        public void OnClickCloseBtn()
        {
            CloseWindow();
        }
    }
    public void OnClickCloseBtn()
    {
        CloseWindow();
    }
}