예제 #1
0
    public QTESequenceInfo LookUp(int id)
    {
        QTESequenceInfo info = null;

        m_list.TryGetValue(id, out info);
        return(info);
    }
예제 #2
0
    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);
        }
    }
예제 #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;
        }
    }