Пример #1
0
    /// <summary>
    /// 附加窗口
    /// </summary>
    /// <param name="_window">窗口</param>
    public void AttachWindow(AbsUIWindowView _window)
    {
        int layer = _window.config.layer;

        if (!mLayerMaping.ContainsKey(layer))
        {
            int siblingIndex = 0;
            foreach (KeyValuePair <int, RectTransform> key in mLayerMaping)
            {
                if (key.Key < layer)
                {
                    siblingIndex = Mathf.Max(siblingIndex, key.Value.GetSiblingIndex() + 1);
                }
            }
            GameObject go = new GameObject(mLayerNameMaping[_window.config.layer]);
            go.layer = gameObject.layer;
            RectTransform rt = go.AddComponent <RectTransform>();
            rt.SetParent(canvas.transform, false);
            rt.SetSiblingIndex(siblingIndex);
            rt.anchorMin        = Vector2.zero;
            rt.anchorMax        = Vector2.one;
            rt.anchoredPosition = Vector2.zero;
            rt.sizeDelta        = Vector2.zero;
            mLayerMaping.Add(layer, rt);
        }
        _window.rectTransform.SetParent(mLayerMaping[layer], false);
    }
    /// <summary>
    /// 是否满足条件
    /// </summary>
    /// <param name="_conditions">匹配组</param>
    /// <param name="_sender">引导命令</param>
    /// <param name="_sponsor">条件匹配发起者</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">当前状态</param>
    /// <param name="_parameters">参数</param>
    /// <returns>true:满足条件,false:不满足条件</returns>
    protected override bool OnIsMatchCondition(IGuideCommand _sender, List <AbsGuideResolveMatchCommand> _conditions,
                                               IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status,
                                               params object[] _parameters)
    {
        bool result = base.OnIsMatchCondition(_sender, _conditions, _sponsor, _resolveStatus, _status, _parameters);

        if (_parameters != null && mGraphicMask == null)
        {
            foreach (object p in _parameters)
            {
                if (p is AbsUIWindowView)
                {
                    AbsUIWindowView w = (AbsUIWindowView)p;
                    if (w.config.name.Equals(windowName))
                    {
                        mGuideCommandSender = _sender;
                        mControl            = w.FindCtrlByNameIsSelfOrParent <UIBehaviour>(controlName);
                        mGraphicMask        = new UIGuideGraphic((int)_sender.status, w.FindCtrlByNameIsSelfOrParent <Graphic>(graphicMask), referObjectIndex);
                        if (mControl != null)
                        {
                            break;
                        }
                    }
                }
            }
        }

        result &= mControl != null && mGraphicMask != null && mGraphicMask.graphic != null &&
                  mGraphicMask.graphic.gameObject.activeInHierarchy == mGraphicMaskActiveSelf;
        if (result)
        {
            UIGuideValidate validate = _sender.CreateValidateMono <UIGuideValidate>(mControl, (int)_sender.status, referObjectIndex);
            validate.OnEventValidate += Validate_OnEventValidate;
        }
        return(result);
    }
 /// <summary>
 /// 关闭窗口
 /// </summary>
 /// <param name="_window">窗口</param>
 void Window_OnCloseWindow(AbsUIWindowView _window)
 {
     CloseWindow(_window.config.id);
 }