public QTESequenceInfo LookUp(int id) { QTESequenceInfo info = null; m_list.TryGetValue(id, out info); return(info); }
public void Load(byte[] bytes) { m_list = new Dictionary <int, QTESequenceInfo>(); BinaryHelper helper = new BinaryHelper(bytes); int length = helper.ReadInt(); for (int index = 0; index < length; ++index) { QTESequenceInfo info = new QTESequenceInfo(); info.Load(helper); m_list.Add(info.ID, info); } }
public void Tick() { //战斗开始的时间 if (ActorManager.Singleton.MainActor.IsState_Fight) { if (StateFightStartTime == float.MaxValue) { StateFightStartTime = Time.time; } } else { StateFightStartTime = float.MaxValue; } //level EnLevel level = GetCurrentLevel(); if (level != m_level) { m_level = level; switch (m_level) { case EnLevel.enBasic: { m_cdDuration = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTECDTime_Basic).FloatTypeValue; m_qteIDList = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTETableIDList_Basic).StringTypeValue; m_qteSkillCount = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTESkillCount_Basic).IntTypeValue; m_stateFightDuration = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTEDuration_NoSkill).FloatTypeValue; } break; case EnLevel.enMiddle: { m_cdDuration = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTECDTime_Middle).FloatTypeValue; m_qteIDList = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTETableIDList_Middle).StringTypeValue; m_qteSkillCount = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTESkillCount_Middle).IntTypeValue; m_stateFightDuration = 0; } break; case EnLevel.enHigh: { m_cdDuration = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTECDTime_High).FloatTypeValue; m_qteIDList = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTETableIDList_High).StringTypeValue; m_qteSkillCount = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQTESkillCount_High).IntTypeValue; m_stateFightDuration = 0; } break; default: return; } } float now = Time.time; switch (m_qteState) { case EnQteState.enStateStop: { if (now - m_cdStartTime > m_cdDuration) { AIPlayer ai = ActorManager.Singleton.MainActor.SelfAI as AIPlayer; bool isSateFight = ActorManager.Singleton.MainActor.IsState_Fight; if (isSateFight && now - StateFightStartTime > m_stateFightDuration) { //战斗状态 if (ai.FireSkillIDListWithoutNormal.Count >= m_qteSkillCount) { //可释放技能 if (!string.IsNullOrEmpty(m_qteIDList)) { string[] array = m_qteIDList.Split(new char[1] { ',' }); int r = UnityEngine.Random.Range(0, array.Length); int id = int.Parse(array[r]); QTESequenceInfo info = GameTable.QTESequenceTableAsset.LookUp(id); foreach (var item in info.SequenceList) { QTEInfo qteInfo = new QTEInfo(); qteInfo.m_type = (ENSkillConnectionType)item; qteInfo.m_cd = QteSingleCD; qteInfo.m_state = QTEInfo.EnQteInfoState.enQteInit; m_qteList.Add(qteInfo); } if (m_qteList.Count != 0) { CurrentIndex = 0; m_qteList[CurrentIndex].m_state = QTEInfo.EnQteInfoState.enQteIng; //通知qte序列 BattleArena.Singleton.NotifyChanged((int)BattleArena.ENPropertyChanged.enQteSequence, UIQTESequence.EnEventType.enShow); //通知技能显示qte ActorManager.Singleton.MainActor.NotifyChanged((int)Actor.ENPropertyChanged.enBattleBtn_D, MainPlayer.ENBattleBtnNotifyType.enQteShow); m_cdStartTime = now; m_qteState = EnQteState.enStateIng; m_qteSingleStartTime = now; } } } } } } break; case EnQteState.enStateIng: { if (now - m_qteSingleStartTime > QteSingleCD) { //fail Fail(); } } break; case EnQteState.enStateNext: { if (now - m_nextQteStartTime > NextQteModifyTime) { //通知技能显示qte ActorManager.Singleton.MainActor.NotifyChanged((int)Actor.ENPropertyChanged.enBattleBtn_D, MainPlayer.ENBattleBtnNotifyType.enQteShow); m_qteState = EnQteState.enStateIng; m_qteSingleStartTime = now; } } break; default: return; } }