Esempio n. 1
0
    void Brust()
    {
        // show cast effect
        EffectAssetsData    ead = EffectAssetsData.GetData(crt_data_._EffectID);
        EffectBehaviourData ebd = null;

        if (ead != null)
        {
            ebd = EffectBehaviourData.GetData(ead.behaviour_id_);
        }
        if (ebd != null && !isMelee_ && ebd.cast_type_ == EffectBehaviourData.CASTTYPE.OneByOne)
        {
            if (aimsQue_.Count > 0)
            {
                bool        final = aimsQue_.Count == 1;
                BattleActor actor = aimsQue_.Dequeue();
                actor.ControlEntity.DealLagState();
                OneByOneExcute(actor, final);

                //if (!final)
                //    GlobalInstanceFunction.Instance.Invoke(Brust, 0.2f);
                //if (!playCast)
                //{

                //caster_.ControlEntity.StartRecord();
                //    playCast = true;
                //}
                //else
                //{
                //    caster_.ControlEntity.PlayBack();
                //}
            }
        }
        else
        {
            //if (!isMelee_)
            //{
            //    if (!playCast)
            //    {
            //        caster_.ControlEntity.SetAnimationParam(caster_.castAnim_, AnimatorParamType.APT_Trigger);
            //        caster_.ControlEntity.StartRecord();
            //        playCast = true;
            //    }
            //    else
            //    {
            //        caster_.ControlEntity.PlayBack();
            //    }

            //}
            CastEffectAfter();
        }
    }
Esempio n. 2
0
 public void DeleteCache()
 {
     for (int i = 0; i < effectLst_.Count; ++i)
     {
         float destoryTime = EffectBehaviourData.GetData(EffectAssetsData.GetData((int)effectLst_[i].id_).behaviour_id_).destory_time_;
         if (destoryTime == -1)
         {
             continue;
         }
         effectLst_[i].DestoryAsset(false);
         //effectLst_.RemoveAt(i--);
     }
 }
Esempio n. 3
0
    public static void ParseData(string content, string fileName)
    {
        metaData = new Dictionary <int, EffectBehaviourData> ();

        CSVParser parser = new CSVParser();

        if (!parser.Parse(content))
        {
            ClientLog.Instance.LogError("EffectBehaviourData" + ConfigLoader.Instance.csvext + "解析错误");
            return;
        }

        int recordCounter        = parser.GetRecordCounter();
        EffectBehaviourData data = null;

        for (int i = 0; i < recordCounter; ++i)
        {
            data                     = new EffectBehaviourData();
            data.id_                 = parser.GetInt(i, "ID");
            data.desc_               = parser.GetString(i, "Desc");
            data.work_type_          = (WORKTYPE)Enum.Parse(typeof(WORKTYPE), parser.GetString(i, "WorkType"));
            data.move_type_          = (MOVETYPE)Enum.Parse(typeof(MOVETYPE), parser.GetString(i, "MoveType"));
            data.move_time_          = parser.GetFloat(i, "moveTime");
            data.dmage_hit1_         = parser.GetFloat(i, "Hit1Time");
            data.dmage_hit2_         = parser.GetFloat(i, "Hit2Time");
            data.beattack_effect_    = parser.GetFloat(i, "BeattackEffTime");
            data.pop_value_          = parser.GetFloat(i, "PopValueTime");
            data.shake_time_         = parser.GetFloat(i, "ShakeCameraTime");
            data.end_time_           = parser.GetFloat(i, "EndTime");
            data.destory_time_       = parser.GetFloat(i, "DestoryTime");
            data.cast_type_          = (CASTTYPE)Enum.Parse(typeof(CASTTYPE), parser.GetString(i, "CastType"));
            data.count_              = parser.GetInt(i, "Count");
            data.effect_positionType = (EffectPositionType)Enum.Parse(typeof(EffectPositionType), parser.GetString(i, "EffectPosition"));
            if (metaData.ContainsKey(data.id_))
            {
                ClientLog.Instance.LogError("EffectBehaviourData" + ConfigLoader.Instance.csvext + "ID重复");
                return;
            }
            metaData[data.id_] = data;
        }
        parser.Dispose();
        parser = null;
    }
Esempio n. 4
0
    void PlayBrustAnim()
    {
        //如果是乱射
        EffectAssetsData    ead = EffectAssetsData.GetData(crt_data_._EffectID);
        EffectBehaviourData ebd = null;

        if (ead != null)
        {
            ebd = EffectBehaviourData.GetData(ead.behaviour_id_);
        }
        bool needTimerCallback = false;

        if (ebd != null && !isMelee_ && ebd.cast_type_ == EffectBehaviourData.CASTTYPE.OneByOne)
        {
            //没有目标了
            if (aimsQue_.Count == 0)
            {
                return;
            }
        }
        else
        {
            needTimerCallback = true;
            //Brust();
        }
        if (!isMelee_)
        {
            caster_.ControlEntity.SetAnimationParam(caster_.castAnim_, AnimatorParamType.APT_Trigger);
            if (needTimerCallback)
            {
                GlobalInstanceFunction.Instance.Invoke(() => { Brust(); }, 0.5f);
            }
        }
        else
        {
            Brust();
        }
    }
Esempio n. 5
0
    void AfterCastEffect(int iVal = 0)
    {
        //如果是乱射 则设置完成回调代理
        EffectAssetsData    ead = EffectAssetsData.GetData(crt_data_._EffectID);
        EffectBehaviourData ebd = null;

        if (ead != null)
        {
            ebd = EffectBehaviourData.GetData(ead.behaviour_id_);
        }
        //注意!!! 只有乱射才是onebyone
        if (ebd != null && !isMelee_ && ebd.cast_type_ == EffectBehaviourData.CASTTYPE.OneByOne)
        {
            //设置远程类技能的触发点回调
            caster_.ControlEntity.SetSingBrustCallBack(Brust);
            //设置远程类技能的完成回调
            caster_.ControlEntity.SetSingCallBack(PlayBrustAnim);
        }
        //else
        //{
        //    caster_.ControlEntity.SetSingCallBack(Brust);
        //}
        PlayBrustAnim();
    }
Esempio n. 6
0
 public OnExitCellBehaviour(EffectBehaviourData data, List <Validator> validators) : base(data, validators)
 {
     this.effect = Container.Instance.Resolve <IEffectRepository>().FindOrFail(data.EffectId);
 }
Esempio n. 7
0
 public OnEnterCellBehaviour(EffectBehaviourData data, IEffectRepository effectRepository,
                             List <Validator> validators) : base(data, validators)
 {
     this.effect = effectRepository.FindOrFail(data.EffectId);
 }
Esempio n. 8
0
 public OnScenarioStartBehaviour(EffectBehaviourData data, IEffectRepository effectRepository,
                                 List <Validator> validators) : base(data, validators)
 {
     this.data             = data;
     this.effectRepository = effectRepository;
 }
Esempio n. 9
0
    public static void Play(EFFECT_ID id,
                            GameObject caster,
                            GameObject[] aims = null,
                            TakeDmgCallBackPack takedmagepack             = null,
                            EffectInst.FinishCallBack finishcallback      = null,
                            EffectInstanceCallBack effectinstancecallback = null,
                            ParamData data = null)
    {
        EffectAssetsData ead = EffectAssetsData.GetData((int)id);

        if (ead == null)
        {
            return;
        }
        EffectBehaviourData ebd = EffectBehaviourData.GetData(ead.behaviour_id_);

        Vector3 vcaster = new Vector3(0f, 0f, 0f);

        Vector3[] vaims = null;
        if (null != aims)
        {
            vaims = new Vector3[aims.Length];
        }

        if (ebd.effect_positionType == EffectBehaviourData.EffectPositionType.Up)
        {
            if (caster != null)
            {
                vcaster = new Vector3(caster.collider.bounds.center.x, caster.collider.bounds.center.y + caster.collider.bounds.size.y / 2, caster.collider.bounds.center.z);
            }
            if (aims != null)
            {
                for (int iCount = 0; iCount < aims.Length; ++iCount)
                {
                    vaims[iCount] = new Vector3(aims[iCount].collider.bounds.center.x, aims[iCount].collider.bounds.center.y + aims[iCount].collider.bounds.size.y / 2, aims[iCount].collider.bounds.center.z);
                }
            }
        }
        else if (ebd.effect_positionType == EffectBehaviourData.EffectPositionType.Center)
        {
            if (caster != null)
            {
                vcaster = caster.collider.bounds.center;
            }
            if (aims != null)
            {
                for (int iCount = 0; iCount < aims.Length; ++iCount)
                {
                    vaims[iCount] = aims[iCount].collider.bounds.center;
                }
            }
        }
        else if (ebd.effect_positionType == EffectBehaviourData.EffectPositionType.Down)
        {
            if (caster != null)
            {
                vcaster = new Vector3(caster.collider.bounds.center.x, caster.collider.bounds.center.y - caster.collider.bounds.size.y / 2, caster.collider.bounds.center.z);
            }
            if (aims != null)
            {
                for (int iCount = 0; iCount < aims.Length; ++iCount)
                {
                    vaims[iCount] = new Vector3(aims[iCount].collider.bounds.center.x, aims[iCount].collider.bounds.center.y - aims[iCount].collider.bounds.size.y / 2, aims[iCount].collider.bounds.center.z);
                }
            }
        }
        else
        {
        }

        Play(id, vcaster, vaims, takedmagepack, finishcallback, effectinstancecallback, data);
    }
Esempio n. 10
0
    public static void Play(EFFECT_ID id, Vector3 caster, Vector3[] aims = null, TakeDmgCallBackPack takedmagepack = null, EffectInst.FinishCallBack finishcallback = null, EffectInstanceCallBack effectinstancecallback = null, ParamData data = null, Transform[] parents = null)
    {
        EffectAssetsData ead = EffectAssetsData.GetData((int)id);

        if (ead == null)
        {
            ClientLog.Instance.LogError("could not find the effect asset by id: " + id + "  caster position is " + caster);
            return;
        }

        int SoundId = EffectAssetsData.GetData((int)id).SoundID;

        SoundTools.PlaySound((SOUND_ID)SoundId);

        //////////////////////////////////////////////////////////////////////////
        // aims 有可能是null
        // 但在进场景那一刻 有可能会出现 需要有目标的特效没有目标 可能会导致卡死
        // 考虑是否加一个完成回调

        EffectBehaviourData ebd = EffectBehaviourData.GetData(ead.behaviour_id_);

        if (ebd != null)
        {
            EffectBehaviourData.CASTTYPE castType = ebd.cast_type_;
            int maxCount = (aims == null? 0: aims.Length);
//			int maxCount = aims.Length;
            if (castType.Equals(EffectBehaviourData.CASTTYPE.SameTime) ||
                castType.Equals(EffectBehaviourData.CASTTYPE.OneByOne))
            {
                if (aims != null)
                {
                    for (int i = 0; i < maxCount; ++i)
                    {
                        EffectMgr.Instance.LoadEffect(
                            id, EffectInstCallBack,
                            new MetaData(takedmagepack == null? null: takedmagepack.hit_1,
                                         takedmagepack == null? null: takedmagepack.hit_2,
                                         takedmagepack == null? null: takedmagepack.effect,
                                         takedmagepack == null? null: takedmagepack.changeVal,
                                         i == aims.Length - 1? finishcallback: null,
                                         caster,
                                         new Vector3[] { aims[i] }, data == null? i: data.iParam, effectinstancecallback, data == null? new ParamData(i): data, parents));
                    }
                }
                else
                {
                    EffectMgr.Instance.LoadEffect(id, EffectInstCallBack,
                                                  new MetaData(takedmagepack == null? null: takedmagepack.hit_1,
                                                               takedmagepack == null? null: takedmagepack.hit_2,
                                                               takedmagepack == null? null: takedmagepack.effect,
                                                               takedmagepack == null ? null : takedmagepack.changeVal, finishcallback, caster, aims, 0, effectinstancecallback, data, parents));
                }
            }
            else if (castType.Equals(EffectBehaviourData.CASTTYPE.OnlyOne))
            {
                EffectMgr.Instance.LoadEffect(id, EffectInstCallBack,
                                              new MetaData(takedmagepack == null? null: takedmagepack.hit_1,
                                                           takedmagepack == null? null: takedmagepack.hit_2,
                                                           takedmagepack == null? null: takedmagepack.effect,
                                                           takedmagepack == null ? null : takedmagepack.changeVal, finishcallback, caster, aims, 0, effectinstancecallback, data, parents));
            }
        }
        else
        {
            EffectMgr.Instance.LoadEffect(id, EffectInstCallBack,
                                          new MetaData(takedmagepack == null? null: takedmagepack.hit_1,
                                                       takedmagepack == null? null: takedmagepack.hit_2,
                                                       takedmagepack == null? null: takedmagepack.effect,
                                                       takedmagepack == null ? null : takedmagepack.changeVal, finishcallback, caster, aims, 0, effectinstancecallback, data, parents));
        }
    }
Esempio n. 11
0
 public OnEpisodeCompleteBehaviour(EffectBehaviourData data, IEffectRepository effectRepository,
                                   List <Validator> validators) : base(data, validators)
 {
     this.data             = data;
     this.effectRepository = effectRepository;
 }