public void Exit <T>() where T : BaseCtrl
    {
        var findCtrl = FindCtrl <T>();

        if (findCtrl == currMainCtrl)
        {
            //先打开上一组 ctrl 之后也改成异步回调之后再关闭
            currMainCtrl = null;
            var nextIndex = ctrlCacheList.Count - 2;
            findCtrl.Inactive();
            findCtrl.Exit();
            ctrlCacheList.Remove(findCtrl);

            if (nextIndex >= 0)
            {
                BaseCtrl currCtrl = ctrlCacheList[nextIndex];
                currCtrl.Active();
                currMainCtrl = currCtrl;
            }
        }
        else
        {
            Logx.LogError("findCtrl == ctrl : " + typeof(T) + " != " + currMainCtrl?.GetType());
            return;
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// 添加控制器
    /// </summary>
    /// <param name="o"></param>
    static void AddCtrl(BaseCtrl o)
    {
        var type = o.GetType();

        if (!Ctrls.ContainsKey(type.Name))
        {
            Ctrls.Add(type.Name, o);
        }
    }
Exemplo n.º 3
0
 public static void InitializeThumbCustomShape(this BaseCtrl baseCtrl)
 {
     foreach (var ctrl in baseCtrl.Controls)
     {
         MaterialSlider ms = ctrl as MaterialSlider;
         if (ms != null)
         {
             GraphicsPath gp2 = new GraphicsPath();
             gp2.AddEllipse(new RectangleF((0 + ms.Height) / 2f, (0 + ms.Height) / 2f, 10, 10));
             ms.ThumbCustomShape = gp2;
         }
     }
 }
Exemplo n.º 4
0
    /// <summary>
    /// 打开 ctrl
    /// </summary>
    /// <param name="ctrlName"></param>
    /// <param name="args"></param>
    public void OpenCtrl(string ctrlName, params object[] args)
    {
        if (!ctrlDic.ContainsKey(ctrlName))
        {
            string   file     = Assembly.GetExecutingAssembly().GetName().Name;
            Assembly assembly = Assembly.Load(file);
            BaseCtrl ctrl     = (BaseCtrl)assembly.CreateInstance(ctrlName);
            ctrl.ctrlName = ctrlName;
            ctrl.Start(args);

            ctrlDic.Add(ctrlName, ctrl);
        }
    }
Exemplo n.º 5
0
    /// <summary>
    /// 关闭 ctrl
    /// </summary>
    /// <param name="ctrlName"></param>
    public void CloseCtrl(string ctrlName)
    {
        if (ctrlDic.ContainsKey(ctrlName))
        {
            BaseCtrl ctrl = ctrlDic[ctrlName];
            if (ctrl.view != null)
            {
                ViewManager.Instance.RemoveView(ctrl.view.viewName);
            }
            ctrl.OnDestroy();

            ctrlDic.Remove(ctrlName);
        }
    }
Exemplo n.º 6
0
        public float speed        = 0;          //当前速度

        /// <summary>
        /// 在派生类中调用以进行初始化
        /// </summary>
        protected void Awake()
        {
            m_State     = GetComponent <BaseState>();
            m_rigidbody = GetComponent <Rigidbody>();
            BaseSkill[] m_Skills = GetComponents <BaseSkill>();
            foreach (var item in m_Skills)
            {
                item.m_Actor = this;
                skillBook.Add(item.skillType, item);
            }

            m_Ctrl     = GetComponent <BaseCtrl>();
            m_Animator = GetComponent <Animator>();

            //m_rigidbody.velocity = maxSpeed * transform.forward;
        }
    public void Enter <T>(CtrlArgs args = null) where T : BaseCtrl, new()
    {
        var findCtrl = FindCtrl <T>();

        if (findCtrl != null)
        {
            //已经存在 目前的方案是 :直接把 ctrl 提到最前面
            ctrlCacheList.Remove(findCtrl);
            ctrlCacheList.Add(findCtrl);

            findCtrl.Enter(args);
            findCtrl.Active();

            currMainCtrl = findCtrl;
            //todo : gameObject 的层级提到最高
        }
        else
        {
            //没找到 开始一个新的 ctrl
            BaseCtrl newCtrl = new T();
            newCtrl.Init();

            ctrlCacheList.Add(newCtrl);

            currMainCtrl = newCtrl;

            //这里的回调需要 ctrl 自行在加载完之后调用 ctrl 中的 LoadFinish(之后流程会优化)
            newCtrl.StartLoad(() =>
            {
                newCtrl.Enter(args);
                newCtrl.Active();

                var nextIndex = ctrlCacheList.Count - 2;
                if (nextIndex >= 0)
                {
                    BaseCtrl currCtrl = ctrlCacheList[nextIndex];
                    currCtrl.Inactive();
                }
            });
        }
    }
Exemplo n.º 8
0
    /// <summary>
    /// 创建页面
    /// </summary>
    /// <param name="ctrl"></param>
    /// <param name="viewName"></param>
    /// <param name="args"></param>
    /// <returns></returns>
    public BaseView CreateView(BaseCtrl ctrl, string viewName, params object[] args)
    {
        BaseView view;

        if (!m_ViewDic.ContainsKey(viewName))
        {
            string   file     = Assembly.GetExecutingAssembly().GetName().Name;
            Assembly assembly = Assembly.Load(file);
            view          = (BaseView)assembly.CreateInstance(viewName);
            view.viewName = viewName;
            view.iCtrl    = ctrl;

            GameObject viewObj = ResourceManager.Instance.LoadPrefabAndInstance(view.PrefabPath());
            viewObj.Attach(m_CanvasObj);
            view.transform = viewObj.transform;

            m_ViewDic.Add(viewName, view);
        }
        else
        {
            view = m_ViewDic[viewName];
            if (view.isDead)
            {
                GameObject viewObj = ResourceManager.Instance.LoadPrefabAndInstance(view.PrefabPath());
                viewObj.Attach(m_CanvasObj);
                view.transform = viewObj.transform;

                view.viewName = viewName;
                view.iCtrl    = ctrl;
                view.isDead   = false;
            }
        }

        view.StartView(args);

        return(view);
    }
Exemplo n.º 9
0
 public void DeleteMe()
 {
     instance = null;
 }