Esempio n. 1
0
    /// <summary>
    /// 创建窗口操作
    /// </summary>
    private Controller CreateView(EViewID viewID)
    {
        Controller controller = null;

        try
        {
            EViewInstType viewInstType = ViewConfig.Instance.GetViewInstType(viewID);
            foreach (KeyValuePair <int, Controller> keyval in listAllViews)
            {
                if (keyval.Value.GetViewID() == viewID)                  //已经打开的窗口 并且不允许多开的窗口  直接用这个实例返回
                {
                    if (viewInstType == EViewInstType.Single)
                    {
                        Debug.LogWarning(string.Format("The View viewID:[{0}] only allowed to be created one and it already exists ", viewID));
                        return(controller);
                    }
                    else
                    {
                        //TODO
                        break;
                    }
                }
            }

            GameObject viewPrefab = ViewConfig.Instance.GetViewPrefab(viewID);            //待修改
            if (viewPrefab != null)
            {
                GameObject viewObj    = GameObject.Instantiate <GameObject>(viewPrefab);
                int        viewInstID = seqView.nextval;
                controller = ViewConfig.Instance.CreateViewInstance(viewID, viewInstID, viewObj);                 //创建窗口控制层

                if (null != controller)
                {
                    listAllViews.Add(new KeyValuePair <int, Controller>(viewInstID, controller));
                }
                controller.OpenView();
                controller.createViewFinishListener();
            }
        }
        catch (Exception ex)
        {
            Debug.LogError(string.Format("Create the View viewID:[{0}] fail,Msg:{1} exception:{2}", viewID, ex.Message, ex.StackTrace));
        }
        return(controller);
    }
Esempio n. 2
0
    /// <summary>
    /// 获取窗口操作,所有窗口都通过这里打开
    /// </summary>
    public Controller GetView(EViewID viewID)
    {
        Controller    controller   = null;
        EViewInstType viewInstType = ViewConfig.Instance.GetViewInstType(viewID);

        foreach (KeyValuePair <int, Controller> keyval in listAllViews)
        {
            if (keyval.Value.GetViewID() == viewID)              //已经打开的窗口 并且不允许多开的窗口  直接用这个实例返回
            {
                if (viewInstType == EViewInstType.Single)
                {
                    controller = keyval.Value;
                    return(controller);
                }
                else
                {
                    //TODO
                    break;
                }
            }
        }
        controller = this.CreateView(viewID);
        return(controller);
    }