public override bool Eliminate(eEliminateDef eliminateType = eEliminateDef.ForcedDelete) { _curHp = 0; if (base.Eliminate(eliminateType)) { if (eliminateType != eEliminateDef.ForcedDelete) { SoundManager.GetInstance().Play("killenemy", 0.1f, false, true); if (_cfg.eliminatedEffectStyle != 0) { STGEnemyEliminatedEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.EnemyEliminated) as STGEnemyEliminatedEffect; effect.SetEliminateEffectStyle(_cfg.eliminatedEffectStyle); effect.SetPosition(_curPos.x, _curPos.y); } } if (eliminateType != eEliminateDef.ForcedDelete && eliminateType != eEliminateDef.CodeRawEliminate) { if (_dropItemDatas != null) { DropItems(); } } return(true); } return(false); }
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); }