Example #1
0
        /// <summary>
        /// 检查引导状态
        /// </summary>
        IEnumerator CheckGuideState()
        {
            Log.Write(GetType() + "/CheckGuideState");
            yield return(new WaitForSeconds(0.2f));

            while (true)
            {
                yield return(new WaitForSeconds(0.5f));

                for (int i = 0; i < _LiGuideTrigger.Count; i++)
                {
                    IGuideTrigger iTrigger = _LiGuideTrigger[i];
                    //检查每个业务脚本是否可以运行
                    if (iTrigger.CheckCondition())
                    {
                        //每个业务脚本,执行业务逻辑
                        if (iTrigger.RunOperation())
                        {
                            Log.Write(GetType() + "/CheckGuideState()/编号为:" + i + "业务逻辑执行完毕,即将在集合中移除");
                            _LiGuideTrigger.Remove(iTrigger);
                        }
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Check boot status
        /// </summary>
        /// <returns></returns>
        IEnumerator CheckGuidState()
        {
            Log.Write(GetType() + "/CheckGuidState");
            yield return(new WaitForSeconds(GlobalParameter.INTERVAL_TIME_0DOT2));

            while (true)
            {
                yield return(new WaitForSeconds(GlobalParameter.INTERVAL_TIME_0DOT5));

                for (int i = 0; i < _LiGuideTrigger.Count; i++)
                {
                    IGuideTrigger iTrigger = _LiGuideTrigger[i];
                    //check every trigger is able to run

                    if (iTrigger.CheckCondition())
                    {
                        //Each trigger script, carried out trigger logic
                        if (iTrigger.RunOperation())
                        {
                            Log.Write(GetType() + "/CheckGuidState()/Number of trigger" + i + "logic run complete");
                            _LiGuideTrigger.Remove(iTrigger);
                        }
                    } //if_end
                }     //for_end
            }         //while_end
        }             //CheckGuidState_End
Example #3
0
        // Start is called before the first frame update
        IEnumerator Start()
        {
            yield return(new WaitForSeconds(GlobalParameter.INTERVAL_TIME_0DOT2));

            //add IGuideTrigger to list
            IGuideTrigger iTri_1 = TriggerDialogs.Instance;
            IGuideTrigger iTri_2 = TriggerOperET.Instance;
            IGuideTrigger iTri_3 = TriggerOperVisualKey.Instance;

            _LiGuideTrigger.Add(iTri_1);
            _LiGuideTrigger.Add(iTri_2);
            _LiGuideTrigger.Add(iTri_3);

            //active trigger logic check
            StartCoroutine("CheckGuidState");
        }
Example #4
0
        IEnumerator Start()
        {
            yield return(new WaitForSeconds(GlobalParameter.WAIT_FOR_SECONDS_ON_START));

            //加入所有的“业务逻辑”脚本
            //面向接口编程,用接口来实现动态多态性
            //接口的使用都是统一的,可以使用List而不必要使用ArrayList
            IGuideTrigger iTri_1 = TriggerDialogs.Instance;
            IGuideTrigger iTri_2 = TriggerOperET.Instance;
            IGuideTrigger iTri_3 = TriggerOperVitualKey.Instance;

            _LiGuideTrigger.Add(iTri_1);
            _LiGuideTrigger.Add(iTri_2);
            _LiGuideTrigger.Add(iTri_3);

            //启动业务逻辑脚本的检查
            StartCoroutine(CheckGuideState());
        }
Example #5
0
        //[name:p1,p2;name:p1,p2]
        protected List <IGuideTrigger> LoadTrigger(string context, string common)
        {
            if (string.IsNullOrEmpty(context))
            {
                return(null);
            }

            string[] msg = context.Split(';');
            if (msg == null || msg.Length == 0)
            {
                return(null);
            }

            object[] commonParams = null;

            if (common != null)
            {
                string[] comParamString = common.Split(';');
                if (comParamString.Length > 0)
                {
                    commonParams = new object[comParamString.Length];
                    for (int i = 0; i < comParamString.Length; ++i)
                    {
                        if (comParamString[i].Contains(":"))
                        {
                            string[]      dynaParams   = comParamString[i].Split(':');
                            IRuntimeParam runtimeParam = RuntimeParamFactory.S.Create(dynaParams[0]);
                            if (runtimeParam == null)
                            {
                                Log.E("Create Runtime Param Failed:" + dynaParams[0]);
                            }
                            else
                            {
                                if (dynaParams.Length > 1)
                                {
                                    //string[] findParams = dynaParams[1].Split(',');
                                    object[] resultArray = GuideConfigParamProcess.ProcessParam(dynaParams[1], commonParams);
                                    runtimeParam.SetParam(resultArray);
                                }
                            }

                            commonParams[i] = runtimeParam;
                        }
                        else
                        {
                            commonParams[i] = comParamString[i];
                        }
                    }
                }
            }

            List <IGuideTrigger> result = new List <IGuideTrigger>();

            for (int i = 0; i < msg.Length; ++i)
            {
                if (string.IsNullOrEmpty(msg[i]))
                {
                    continue;
                }
                string[] com = msg[i].Split(':');
                if (com == null || com.Length == 0)
                {
                    continue;
                }

                IGuideTrigger trigger = GuideTriggerFactory.S.Create(com[0]);
                if (trigger == null)
                {
                    Log.E("Create Trigger Failed:" + com[0]);
                }

                if (com.Length > 1)
                {
                    object[] resultArray = GuideConfigParamProcess.ProcessParam(com[1], commonParams);

                    //处理参数
                    trigger.SetParam(resultArray);
                }

                if (trigger != null)
                {
                    result.Add(trigger);
                }
            }
            return(result);
        }