Esempio n. 1
0
    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);
            }
        }
    }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
    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;
        }
    }
Esempio n. 4
0
 public void Init()
 {
     m_qteState    = EnQteState.enStateStop;
     m_cdStartTime = float.MinValue;
 }