public override void Activate() { StartEffect(); if (_sourceTile != null) { _attack.SourceCoordinate = _sourceTile; } if (_targetTile != null) { _attack.TargetCoordinate = _targetTile; } //Assemble a list of the affected tiles _affectedTiles = _scene.GetTilesWithinDistance(_attack.TargetCoordinate, _radius, false); int i = 0; while (i < _affectedTiles.Count) { if (_scene.IsTileShootableFromLocation(_attack.TargetCoordinate, _affectedTiles[i], _radius)) { i++; } else { _affectedTiles.RemoveAt(i); } } //Show attack special effect and trigger rest of attack when finished int fxId = _scene.GetGameObjectPool().CreateSpecialEffect("specialEffect_basicBlast"); SpecialEffect_BasicBlast fx = (SpecialEffect_BasicBlast)_scene.GetGameObjectPool().GetSpecialEffect(fxId); fx.Init(BlastColor, _attack.SourceCoordinate, _radius, _affectedTiles, new SpecialEffect.OnSpecialEffectEndCallback(OnSpecialEffectEnd)); _scene.AddSpecialEffect(fxId); }
public int CreateSpecialEffect(string specialEffectType) { GameObject obj = null; if (specialEffectType == "specialEffect_basicProjectile") { obj = new SpecialEffect_BasicProjectile(GetNextID()); } else if (specialEffectType == "specialEffect_basicMelee") { obj = new SpecialEffect_BasicMelee(GetNextID()); } else if (specialEffectType == "specialEffect_basicBlast") { obj = new SpecialEffect_BasicBlast(GetNextID()); } else { throw new NotImplementedException(); } return(RegisterGameObject(obj)); }