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); } } }
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) { TimeoutLogicInfo data = info.LogicDatas.GetData <TimeoutLogicInfo>(); if (null != data) { data.m_IsTriggered = false; data.m_CurTime = 0; if (m_ParamNum > 1) { data.m_Timeout = m_Timeout.Value; } } else { LogSystem.Warn("restarttimeout scenelogic {0} dosen't start, add wait command !", cfgId); } } else { LogSystem.Error("restarttimeout can't find scenelogic {0}", cfgId); } } return(false); }