internal void OnSceneLogicSendStoryMessage(SceneLogicInfo info, string msgId, object[] args)
 {
     if (WorldSystem.Instance.IsPveScene() || WorldSystem.Instance.IsPureClientScene())
     {
         ClientScriptSystem.Instance.SendMessage(msgId, args);
     }
 }
        public override void Execute(SceneLogicInfo info, long deltaTime)
        {
            if (null == info || info.IsLogicFinished || info.IsLogicPaused)
            {
                return;
            }
            info.Time += deltaTime;
            if (info.Time > 1000)
            {
                TimeoutLogicInfo data = info.LogicDatas.GetData <TimeoutLogicInfo>();
                if (null == data)
                {
                    data = new TimeoutLogicInfo();
                    info.LogicDatas.AddData <TimeoutLogicInfo>(data);

                    SceneLogicConfig sc = info.SceneLogicConfig;
                    if (null != sc)
                    {
                        data.m_Timeout = long.Parse(sc.m_Params[0]);
                    }
                }
                data.m_CurTime += info.Time;
                info.Time       = 0;
                //执行逻辑
                if (null != data && !data.m_IsTriggered && data.m_CurTime >= data.m_Timeout)
                {
                    data.m_IsTriggered = true;
                    SceneLogicSendStoryMessage(info, "timeout:" + info.ConfigId, data.m_Timeout);
                }
            }
        }
示例#3
0
        protected override bool ExecCommand(StoryInstance instance, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                int            cfgId = m_SceneLogicConfigId.Value;
                SceneLogicInfo info  = scene.SceneLogicInfoMgr.GetSceneLogicInfoByConfigId(cfgId);
                if (null != info)
                {
                    AreaDetectLogicInfo data = info.LogicDatas.GetData <AreaDetectLogicInfo>();
                    if (null != data)
                    {
                        data.m_IsTriggered = false;
                        data.m_CurTime     = 0;
                        if (m_ParamNum > 1)
                        {
                            data.m_Timeout = m_Timeout.Value;
                        }
                    }
                    else
                    {
                        LogSystem.Warn("restartareadetect scenelogic {0} dosen't start, add wait command !", cfgId);
                    }
                }
                else
                {
                    LogSystem.Error("restartareadetect can't find scenelogic {0}", cfgId);
                }
            }
            return(false);
        }
示例#4
0
        protected override bool ExecCommand(StoryInstance instance, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                int            cfgId = m_SceneLogicConfigId.Value;
                SceneLogicInfo info  = scene.SceneLogicInfoMgr.GetSceneLogicInfoByConfigId(cfgId);
                if (null != info)
                {
                    UserEnterAreaLogicInfo data = info.LogicDatas.GetData <UserEnterAreaLogicInfo>();
                    if (null != data)
                    {
                        data.m_IsTriggered = false;
                    }
                    else
                    {
                        LogSystem.Warn("restartareamonitor scenelogic {0} dosen't start, add wait command !", cfgId);
                    }
                }
                else
                {
                    LogSystem.Error("restartareamonitor can't find scenelogic {0}", cfgId);
                }
            }
            return(false);
        }
示例#5
0
 protected void SceneLogicSendStoryMessage(SceneLogicInfo info, string msgId, params object[] args)
 {
     if (null != OnSceneLogicSendStoryMessage)
     {
         OnSceneLogicSendStoryMessage(info, msgId, args);
     }
 }
示例#6
0
        protected override bool ExecCommand(StoryInstance instance, long delta)
        {
            Scene scene = instance.Context as Scene;

            if (null != scene)
            {
                int            cfgId   = m_SceneLogicConfigId.Value;
                string         enabled = m_Enabled.Value;
                SceneLogicInfo info    = scene.SceneLogicInfoMgr.GetSceneLogicInfoByConfigId(cfgId);
                if (null != info)
                {
                    info.IsLogicPaused = (0 == string.Compare(enabled, "true"));
                }
                else
                {
                    LogSystem.Error("pausescenelogic can't find scenelogic {0}", cfgId);
                }
            }
            return(false);
        }
示例#7
0
 public abstract void Execute(SceneLogicInfo info, long deltaTime);