public override void ExecuteDelayed() { // Let the gameObject deal with this... this.pBomb.Remove(SpriteBatch.Name.Bomb, SpriteBatch.Name.CollisionBox); // Remove from BombRoot Composite pBombRoot = GameStateManager.GetGame().GetStateCompositeManager().Find(Composite.CompositeName.BombRoot); pBombRoot.Remove(this.pBomb); // Add a time event to drop next bomb if (pBomb.GetType() == typeof(FlyingSaucerBomb)) { TimerManager.Add(TimeEvent.Name.DropBomb, new DropFlyingSaucerBombCommand(), 1.5f); } else { // Rate-limit bombs -- TODO refactor if (GameStateManager.GetGame().GetStateCompositeManager().Find(Composite.CompositeName.BombRoot).GetNumOfChildren() < 6) { TimerManager.Add(TimeEvent.Name.DropBomb, new DropBombCommand(), 0.2f); } } }