public static int MakeEffect(ILuaState lua) { lua.L_CheckType(1, LuaType.LUA_TLIGHTUSERDATA); Unit c = (Unit)lua.ToUserData(1); string effectName = lua.L_CheckString(2); EffectDef def = new EffectDef(); using (var t = new LuaTable(lua)) { def.posType = t.GetString("posType"); def.pos = t.GetNumberArray("pos", 2); def.facing = t.GetInt("facing", 1); def.bindTime = t.GetInt("bindTime"); def.vel = t.GetNumberArray("vel", 2); def.accel = t.GetNumberArray("accel", 2); def.removeTime = t.GetInt("removeTime"); def.pauseMoveTime = t.GetInt("pauseMoveTime"); def.superPauseMoveTime = t.GetInt("superPauseMoveTime"); } def.name = effectName; c.SendEvent(new Event { type = EventType.PlayEffect, data = def }); return(0); }
public override void OnBeHitted(HitDef hitDef) { SetBeHitDefData(hitDef); if (hitDef.hitType == (int)HitDef.HitType.Attack) { AddHP(-hitDef.hitDamage); if (!IsAlive() && hitDef.knockAwayType == -1) { hitDef.knockAwayType = 0; } SendEvent(new Event() { type = EventType.PlayEffect, data = EffectDef.ConstructNormal(hitDef.spark, hitDef.sparkPos, this.GetFacing()) }); SendEvent(new Event() { type = EventType.PlaySound, data = new SoundDef() { name = hitDef.hitSound, delay = 0, volume = 1 } }); if (this.GetMoveType() == MoveType.BeingHitted) { AddBeHitCount(); hitDef.owner.SetHitCount(this.beHitCount); } else { ClearBeHitCount(); AddBeHitCount(); } if (hitDef.knockAwayType == -1) { if (this.GetPhysicsType() == PhysicsType.S) { this.fsmMgr.ChangeState(5000, true); } else if (this.GetPhysicsType() == PhysicsType.C) { this.fsmMgr.ChangeState(5010, true); } else if (this.GetPhysicsType() == PhysicsType.A) { this.fsmMgr.ChangeState(5020, true); } } else { this.fsmMgr.ChangeState(5030, true); } } else if (hitDef.hitType == (int)HitDef.HitType.Throw) { this.fsmMgr.ChangeState(hitDef.p2StateNo, true); } }
public virtual void Init(int id, Core.EffectDef def, UnitView owner) { this.id = id; m_def = def; m_lifeTime = 0; m_owner = owner; this.transform.localScale = new Vector3(def.facing, 1, 1); m_isDestroied = false; m_isInited = true; }
public static EffectDef ConstructNormal(string name, Number[] pos, int facing) { EffectDef effect = new EffectDef() { name = name, posType = "p1", pos = pos, facing = facing, bindTime = 1, }; return(effect); }
public void Play(Core.EffectDef def, UnitView view) { var effectObj = LoadEffectObj(def.name); if (effectObj != null) { effectObj.Init(m_currentId++, def, view); m_activeEffects.Add(effectObj.id, effectObj); effectObj.onFinish += (id) => { m_activeEffects.Remove(id); GameObject.Destroy(effectObj.gameObject); }; effectObj.Play(); } }
public override void OnGuardHit(HitDef hitDef) { SetBeHitDefData(hitDef); this.fsmMgr.ChangeState(this.GetPhysicsType() == PhysicsType.S ? 150 : 156); AddHP(-hitDef.guardDamage); SendEvent(new Event() { type = EventType.PlayEffect, data = EffectDef.ConstructNormal(hitDef.guardSpark, hitDef.sparkPos, this.GetFacing()) }); SendEvent(new Event() { type = EventType.PlaySound, data = new SoundDef() { name = hitDef.guardSound, delay = 0, volume = 1 } }); }
void PlayEffect(Core.EffectDef effect) { EffectPool.Instance.Play(effect, this); }