示例#1
0
        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);
        }
示例#2
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);
     }
 }
示例#3
0
 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;
 }
示例#4
0
        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);
        }
示例#5
0
        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();
            }
        }
示例#6
0
 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
         }
     });
 }
示例#7
0
 void PlayEffect(Core.EffectDef effect)
 {
     EffectPool.Instance.Play(effect, this);
 }