public void Succ(int skillID, ENSkillConnectionType type) { if (m_qteState == EnQteState.enStateStop) { return; } if (CurrentIndex >= m_qteList.Count) { Stop(); return; } if (type == m_qteList[CurrentIndex].m_type) {//succ m_qteList[CurrentIndex].m_state = QTEInfo.EnQteInfoState.enQteSucc; //通知qte序列 BattleArena.Singleton.NotifyChanged((int)BattleArena.ENPropertyChanged.enQteSequence, UIQTESequence.EnEventType.enChange); //通知技能隐藏qte ActorManager.Singleton.MainActor.NotifyChanged((int)Actor.ENPropertyChanged.enBattleBtn_D, MainPlayer.ENBattleBtnNotifyType.enQteHide); m_qteList[CurrentIndex].m_state = QTEInfo.EnQteInfoState.enQteEnd; ++CurrentIndex; if (CurrentIndex == m_qteList.Count) {//所有成功 //通知qte序列all succ BattleArena.Singleton.NotifyChanged((int)BattleArena.ENPropertyChanged.enQteSequence, UIQTESequence.EnEventType.enAllSucc); if (m_qteExtraReward == 0) { m_qteExtraReward = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enQteExtraReward).IntTypeValue; } //add soulcharge if (BattleArena.Singleton.SkillCombo.SkillComboNumber != 0) { //BattleArena.Singleton.SoulCharge.AddSoul(EnSoulType.enSkillCombo, BattleArena.Singleton.SkillCombo.SkillComboNumber); //clear BattleArena.Singleton.SkillCombo.ClearSkillCombo(); //connecteffect if (BattleArena.Singleton.Combo.ConnectEffectNumber != 0) { //BattleArena.Singleton.SoulCharge.AddSoul(EnSoulType.enConnectEffect, BattleArena.Singleton.Combo.ConnectEffectNumber); //clear connecteffectnumber BattleArena.Singleton.Combo.ClearConnectEffect(); } } //BattleArena.Singleton.SoulCharge.AddSoul(EnSoulType.enQte, CurrentIndex); //BattleArena.Singleton.SoulCharge.AddSoul(EnSoulType.enExtra, m_qteExtraReward); //BattleArena.Singleton.SoulCharge.StopResult(); Stop(); } else {//通知下一个 m_qteState = EnQteState.enStateNext; m_nextQteStartTime = Time.time; m_qteList[CurrentIndex].m_state = QTEInfo.EnQteInfoState.enQteIng; //通知qte序列 BattleArena.Singleton.NotifyChanged((int)BattleArena.ENPropertyChanged.enQteSequence, UIQTESequence.EnEventType.enChange); } } }
public void Stop() { if (m_qteState == EnQteState.enStateStop) { return; } m_qteList.Clear(); //通知qte序列hide BattleArena.Singleton.NotifyChanged((int)BattleArena.ENPropertyChanged.enQteSequence, UIQTESequence.EnEventType.enHide); m_qteState = EnQteState.enStateStop; }
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; } }
public void Init() { m_qteState = EnQteState.enStateStop; m_cdStartTime = float.MinValue; }