public static int SetEffectFinish(ILuaState luaState) { STGEffectBase effect = luaState.ToUserData(-1) as STGEffectBase; luaState.Pop(1); effect.FinishEffect(); return(0); }
public static int CreateEffectByType(ILuaState luaState) { EffectType type = (EffectType)luaState.ToInteger(-1); STGEffectBase effect = EffectsManager.GetInstance().CreateEffectByType(type); luaState.Pop(1); luaState.PushLightUserData(effect); return(1); }
public static int SetEffectToPos(ILuaState luaState) { STGEffectBase effect = luaState.ToUserData(-3) as STGEffectBase; float posX = (float)luaState.ToNumber(-2); float posY = (float)luaState.ToNumber(-1); effect.SetPosition(posX, posY); return(0); }
/// <summary> /// 根据名称结束特效 /// </summary> /// <param name="name"></param> public void FinishEffectByName(string name) { STGEffectBase effect = GetEffectByName(name); if (effect != null) { effect.FinishEffect(); } }
/// <summary> /// 根据名称拿到effect /// <para>string name 特效指定的名称</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int GetEffectByName(ILuaState luaState) { string name = luaState.ToString(-1); luaState.Pop(1); STGEffectBase effect = EffectsManager.GetInstance().GetEffectByName(name); luaState.PushLightUserData(effect); return(1); }
/// <summary> /// 将特效缓存到对象池中 /// </summary> /// <param name="effect"></param> private void RestoreEffectToPool(STGEffectBase effect) { EffectType type = effect.GetEffectType(); Stack <STGEffectBase> stack; if (_effectPools.TryGetValue(type, out stack)) { stack.Push(effect); } }
/// <summary> /// 获取STGEffect的实例 /// </summary> /// <param name="type"></param> /// <returns></returns> private STGEffectBase GetEffectFromPool(EffectType type) { Stack <STGEffectBase> stack = null; STGEffectBase effect = null; if (_effectPools.TryGetValue(type, out stack)) { if (stack.Count > 0) { effect = stack.Pop(); } } return(effect); }
public STGEffectBase CreateEffectByType(EffectType type) { STGEffectBase effect = GetEffectFromPool(type); if (effect == null) { switch (type) { case EffectType.SpriteEffect: effect = new STGSpriteEffect(); break; case EffectType.ShakeEffect: effect = new ShakeEffect(); break; case EffectType.BreakScreenEffect: effect = new STGBreakScreenEffect(); break; case EffectType.BurstEffect: effect = new STGBurstEffect(); break; case EffectType.ChargeEffect: effect = new STGChargeEffect(); break; case EffectType.BulletEliminate: effect = new STGBulletEliminateEffect(); break; case EffectType.EnemyEliminated: effect = new STGEnemyEliminatedEffect(); break; case EffectType.PlayerDeadEffect: effect = new STGPlayerDeadEffect(); break; } } if (effect != null) { effect.Init(); _effectList.Add(effect); _effectsCount++; } return(effect); }