コード例 #1
0
    /// <summary>
    /// 解析配置
    /// </summary>
    /// <param name="_guideConfig">引导配置</param>
    /// <param name="_referObjectConfig">参考对象配置</param>
    /// <param name="_styleConfig">样式配置</param>
    /// <param name="_conditionIndex">条件索引</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">引导状态</param>
    /// <returns>条件命令组</returns>
    protected override List <AbsGuideSubCommand_Condition> OnResolveConfig(XLS_Config_Table_UserGuideConfig _guideConfig,
                                                                           XLS_Config_Table_UserGuideReferObject _referObjectConfig,
                                                                           XLS_Config_Table_UserGuideStyle _styleConfig,
                                                                           int _conditionIndex, enGuideStatus _resolveStatus, enGuideStatus _status)
    {
        status = _status;
        List <AbsGuideSubCommand_Condition>   conditions    = new List <AbsGuideSubCommand_Condition>();
        AbsGuideSubCommand_Condition          tempCondition = null;
        XLS_Config_Table_UserGuideReferObject tempRefer     = null;
        XLS_Config_Table_UserGuideStyle       tempStyle     = null;

        switch (_resolveStatus)
        {
        case enGuideStatus.WaitTrigger:
            #region 收集触发命令
            //触发条件命令
            for (int i = 0; i < _guideConfig.triggerConditionTypes.Length; i++)
            {
                tempRefer = null;
                tempStyle = null;
                if (_guideConfig.triggerConditionTypes[i] == (int)enUserGuideConfig_TriggerConditionType.ReferObject)
                {
                    tempRefer = mFuncReferObject(_guideConfig.triggerReferObjectIds[i]);
                }
                tempStyle = mFuncStyle(_guideConfig.styleIds[i]);

                tempCondition = StrayFogGuideManager.Cmd_UserGuideConfig_TriggerConditionTypeMaping[_guideConfig.triggerConditionTypes[i]]();
                tempCondition.ResolveConfig(_guideConfig, tempRefer, tempStyle, i, _resolveStatus, _status);
                conditions.Add(tempCondition);
            }
            #endregion
            break;

        case enGuideStatus.WaitValidate:
            #region 收集验证命令
            //验证条件命令
            for (int i = 0; i < _guideConfig.validateConditionTypes.Length; i++)
            {
                tempRefer = null;
                tempStyle = null;
                if (_guideConfig.validateConditionTypes[i] == (int)enUserGuideConfig_TriggerConditionType.ReferObject)
                {
                    tempRefer = mFuncReferObject(_guideConfig.validateReferObjectIds[i]);
                }
                tempStyle     = mFuncStyle(_guideConfig.styleIds[i]);
                tempCondition = StrayFogGuideManager.Cmd_UserGuideConfig_ValidateConditionTypeMaping[_guideConfig.validateConditionTypes[i]]();
                tempCondition.ResolveConfig(_guideConfig, tempRefer, tempStyle, i, _resolveStatus, _status);
                conditions.Add(tempCondition);
            }
            #endregion
            break;
        }
        return(conditions);
    }
コード例 #2
0
    /// <summary>
    /// 执行处理
    /// </summary>
    /// <param name="_sender">引导命令</param>
    /// <param name="_sponsor">执行发起者</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">当前状态</param>
    /// <param name="_parameters">参数</param>
    public void Excute(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
    {
        int  key    = (int)(_sender == _sponsor ? _sender.status : resolveStatus);
        bool result = mGuideResolveMatchCommandMaping.ContainsKey(key) ? mGuideResolveMatchCommandMaping[key].Count > 0 : false;

        if (result)
        {
            foreach (AbsGuideResolveMatchCommand m in mGuideResolveMatchCommandMaping[key])
            {
                m.Excute(_sender, this, _resolveStatus, _status, _parameters);
            }
        }
        OnExcute(_sender, _sponsor, _resolveStatus, _status, _parameters);
        resolveStatus = OnAfterExcuteResolveStatus(_sender, _sponsor, _resolveStatus, _status, _parameters);
    }
コード例 #3
0
    /// <summary>
    /// 解析配置
    /// </summary>
    /// <param name="_guideConfig">引导配置</param>
    /// <param name="_referObjectConfig">参考对象配置</param>
    /// <param name="_styleConfig">样式配置</param>
    /// <param name="_conditionIndex">条件索引</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">引导状态</param>
    public void ResolveConfig(XLS_Config_Table_UserGuideConfig _guideConfig,
                              XLS_Config_Table_UserGuideReferObject _referObjectConfig,
                              XLS_Config_Table_UserGuideStyle _styleConfig,
                              int _conditionIndex, enGuideStatus _resolveStatus, enGuideStatus _status)
    {
        guideConfig       = _guideConfig;
        referObjectConfig = _referObjectConfig;
        styleConfig       = _styleConfig;
        conditionIndex    = referObjectIndex = styleIndex = _conditionIndex;
        if (_conditionIndex >= 0)
        {
            resolveStatus = _resolveStatus;
        }
        else
        {
            resolveStatus = _status;
        }
        OnResolveOperator(_guideConfig, _conditionIndex, _resolveStatus);
        int statusKey = (int)_resolveStatus;

        if (!mGuideResolveMatchCommandMaping.ContainsKey(statusKey))
        {
            mGuideResolveMatchCommandMaping.Add(statusKey, new List <AbsGuideSubCommand_Condition>());
        }
        List <AbsGuideSubCommand_Condition> conditions = OnResolveConfig(_guideConfig, _referObjectConfig, _styleConfig, _conditionIndex, _resolveStatus, _status);

        if (conditions != null)
        {
            foreach (AbsGuideSubCommand_Condition c in conditions)
            {
                if (_conditionIndex >= 0)
                {
                    c.ResolveConfig(_guideConfig, _referObjectConfig, _styleConfig, _conditionIndex, _resolveStatus, _status);
                }
                mGuideResolveMatchCommandMaping[statusKey].Add(c);
            }
        }
    }
    /// <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)
    {
        //AbsUIGuideGraphic mask = _sender.guideWindow.GetUIGuideGraphic((int)enGuideStatus.WaitTrigger, conditionIndex);
        bool result = _sender.guideWindow != null && base.OnIsMatchCondition(_sender, _conditions, _sponsor, _resolveStatus, _status, _parameters);

        if (result)
        {
            result = false;
            if (_parameters != null)
            {
                UIGuideValidate validate = null;
                foreach (object v in _parameters)
                {
                    if (v is UIGuideValidate)
                    {
                        validate = (UIGuideValidate)v;
                        result   = validate.guideId == guideConfig.id && validate.type == (int)enGuideStatus.WaitTrigger && validate.index == conditionIndex;
                    }
                }
            }
        }
        return(result);
    }
    /// <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="_guideConfig">引导配置</param>
    /// <param name="_referObjectConfig">参考对象配置</param>
    /// <param name="_styleConfig">样式配置</param>
    /// <param name="_conditionIndex">条件索引</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">引导状态</param>
    /// <returns>条件命令组</returns>
    protected override List <AbsGuideSubCommand_Condition> OnResolveConfig(XLS_Config_Table_UserGuideConfig _guideConfig,
                                                                           XLS_Config_Table_UserGuideReferObject _referObjectConfig,
                                                                           XLS_Config_Table_UserGuideStyle _styleConfig,
                                                                           int _conditionIndex, enGuideStatus _resolveStatus, enGuideStatus _status)
    {
        List <AbsGuideSubCommand_Condition> result = new List <AbsGuideSubCommand_Condition>();

        result.Add(StrayFogGuideManager.Cmd_UserGuideReferObject_Refer2DTypeMaping[_referObjectConfig.refer2DType]());
        result.Add(StrayFogGuideManager.Cmd_UserGuideReferObject_Refer2DTypeMaping[_referObjectConfig.refer3DType]());
        return(result);
    }
 /// <summary>
 /// 解析配置
 /// </summary>
 /// <param name="_guideConfig">引导配置</param>
 /// <param name="_referObjectConfig">参考对象配置</param>
 /// <param name="_styleConfig">样式配置</param>
 /// <param name="_conditionIndex">条件索引</param>
 /// <param name="_resolveStatus">解析状态</param>
 /// <param name="_status">引导状态</param>
 /// <returns>条件命令组</returns>
 protected override List <AbsGuideSubCommand_Condition> OnResolveConfig(XLS_Config_Table_UserGuideConfig _guideConfig,
                                                                        XLS_Config_Table_UserGuideReferObject _referObjectConfig,
                                                                        XLS_Config_Table_UserGuideStyle _styleConfig,
                                                                        int _conditionIndex, enGuideStatus _resolveStatus, enGuideStatus _status)
 {
     base.OnResolveConfig(_guideConfig, _referObjectConfig, _styleConfig, _conditionIndex, _resolveStatus, _status);
     string[] values = _referObjectConfig.refer2DValue.Split(enSplitSymbol.VerticalBar);
     windowName  = values[0];
     controlName = graphicMask = values[1];
     if (values.Length >= 3)
     {
         graphicMask = values[2];
     }
     switch (_status)
     {
     case enGuideStatus.WaitTrigger:
         mGraphicMaskActiveSelf = Convert.ToBoolean(byte.Parse(guideConfig.triggerConditionValues[conditionIndex]));
         break;
     }
     return(null);
 }
 /// <summary>
 /// 执行处理
 /// </summary>
 /// <param name="_sender">引导命令</param>
 /// <param name="_sponsor">执行发起者</param>
 /// <param name="_resolveStatus">解析状态</param>
 /// <param name="_status">当前状态</param>
 /// <param name="_parameters">参数</param>
 protected override void OnExcute(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
 {
     if (isMatch)
     {
         mGraphicMask.SetStyleData(styleConfig);
         StrayFogGamePools.uiWindowManager.OpenWindow <AbsUIGuideWindowView>(StrayFogGamePools.guideManager.guideWindowId, (wins, pars) =>
         {
             _sender.guideWindow = wins[0];
             _sender.guideWindow.AddGraphicMask(mGraphicMask);
         });
     }
     base.OnExcute(_sender, _sponsor, _resolveStatus, _status, _parameters);
 }
コード例 #9
0
 /// <summary>
 /// 执行后解析状态
 /// </summary>
 /// <returns>解析状态</returns>
 protected override enGuideStatus OnAfterExcuteResolveStatus(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
 {
     return(status);
 }
コード例 #10
0
    /// <summary>
    /// 执行处理
    /// </summary>
    /// <param name="_sender">引导命令</param>
    /// <param name="_sponsor">执行发起者</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">当前状态</param>
    /// <param name="_parameters">参数</param>
    protected override void OnExcute(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
    {
        base.OnExcute(_sender, _sponsor, _resolveStatus, _status, _parameters);
        switch (_resolveStatus)
        {
        case enGuideStatus.WaitTrigger:
            status = enGuideStatus.WaitValidate;
            break;

        case enGuideStatus.WaitValidate:
            status = enGuideStatus.Finish;
            break;
        }
        if (status == enGuideStatus.Finish)
        {
            OnFinishGuide?.Invoke(this);
        }
    }
コード例 #11
0
 /// <summary>
 /// 执行处理
 /// </summary>
 /// <param name="_sender">引导命令</param>
 /// <param name="_sponsor">执行发起者</param>
 /// <param name="_resolveStatus">解析状态</param>
 /// <param name="_status">当前状态</param>
 /// <param name="_parameters">参数</param>
 protected virtual void OnExcute(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
 {
 }
コード例 #12
0
 /// <summary>
 /// 是否满足条件
 /// </summary>
 /// <param name="_sender">引导命令</param>
 /// <param name="_conditions">条件组</param>
 /// <param name="_sponsor">条件匹配发起者</param>
 /// <param name="_resolveStatus">解析状态</param>
 /// <param name="_status">当前状态</param>
 /// <param name="_parameters">参数</param>
 /// <returns>true:满足条件,false:不满足条件</returns>
 protected virtual bool OnIsMatchCondition(IGuideCommand _sender, List <AbsGuideResolveMatchCommand> _conditions, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
 {
     return(true);
 }
コード例 #13
0
    /// <summary>
    /// 是否满足条件
    /// </summary>
    /// <param name="_sender">引导命令</param>
    /// <param name="_sponsor">条件匹配发起者</param>
    /// <param name="_resolveStatus">解析状态</param>
    /// <param name="_status">当前状态</param>
    /// <param name="_parameters">参数</param>
    /// <returns>true:满足条件,false:不满足条件</returns>
    public bool isMatchCondition(IGuideCommand _sender, IGuideMatchConditionCommand _sponsor, enGuideStatus _resolveStatus, enGuideStatus _status, params object[] _parameters)
    {
        int key = (int)_resolveStatus;

        isMatch = true;
        List <AbsGuideResolveMatchCommand> matchs = new List <AbsGuideResolveMatchCommand>();

        if (mGuideResolveMatchCommandMaping != null && mGuideResolveMatchCommandMaping.ContainsKey(key))
        {
            foreach (AbsGuideResolveMatchCommand m in mGuideResolveMatchCommandMaping[key])
            {
                isMatch &= _sender.LogicalOperator(isMatch, m.isMatchCondition(_sender, this, _resolveStatus, _status, _parameters), m.conditionOperator);
                matchs.Add(m);
            }
        }
        isMatch &= OnIsMatchCondition(_sender, matchs, _sponsor, _resolveStatus, _status, _parameters);
        isMatch &= resolveStatus == _resolveStatus;
        isMatch &= _sender.status == _status;
        return(isMatch);
    }
コード例 #14
0
 /// <summary>
 /// 解析配置
 /// </summary>
 /// <param name="_guideConfig">引导配置</param>
 /// <param name="_referObjectConfig">参考对象配置</param>
 /// <param name="_styleConfig">样式配置</param>
 /// <param name="_conditionIndex">条件索引</param>
 /// <param name="_resolveStatus">解析状态</param>
 /// <param name="_status">引导状态</param>
 /// <returns>条件命令组</returns>
 protected virtual List <AbsGuideSubCommand_Condition> OnResolveConfig(XLS_Config_Table_UserGuideConfig _guideConfig,
                                                                       XLS_Config_Table_UserGuideReferObject _referObjectConfig,
                                                                       XLS_Config_Table_UserGuideStyle _styleConfig,
                                                                       int _conditionIndex, enGuideStatus _resolveStatus, enGuideStatus _status)
 {
     return(null);
 }
コード例 #15
0
    /// <summary>
    /// 解析操作符
    /// </summary>
    /// <param name="_config">配置</param>
    /// <param name="_configIndex">条件索引</param>
    /// <param name="_resolveStatus">解析状态</param>
    void OnResolveOperator(XLS_Config_Table_UserGuideConfig _config, int _conditionTndex, enGuideStatus _resolveStatus)
    {
        conditionOperator = enUserGuideConfig_ConditionOperator.And;
        if (_conditionTndex > 0)
        {
            switch (_resolveStatus)
            {
            case enGuideStatus.WaitTrigger:
                conditionOperator = (enUserGuideConfig_ConditionOperator)_config.triggerConditionOperators[_conditionTndex];
                break;

            case enGuideStatus.WaitValidate:
                conditionOperator = (enUserGuideConfig_ConditionOperator)_config.validateConditionOperators[_conditionTndex];
                break;
            }
        }
    }