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(); } }
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--); } }
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; }
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(); } }
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(); }
public OnExitCellBehaviour(EffectBehaviourData data, List <Validator> validators) : base(data, validators) { this.effect = Container.Instance.Resolve <IEffectRepository>().FindOrFail(data.EffectId); }
public OnEnterCellBehaviour(EffectBehaviourData data, IEffectRepository effectRepository, List <Validator> validators) : base(data, validators) { this.effect = effectRepository.FindOrFail(data.EffectId); }
public OnScenarioStartBehaviour(EffectBehaviourData data, IEffectRepository effectRepository, List <Validator> validators) : base(data, validators) { this.data = data; this.effectRepository = effectRepository; }
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); }
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)); } }
public OnEpisodeCompleteBehaviour(EffectBehaviourData data, IEffectRepository effectRepository, List <Validator> validators) : base(data, validators) { this.data = data; this.effectRepository = effectRepository; }