public IDoodad CreateDoodad(DoodadPlacement doodadPlacement)
        {
            IDoodad doodad;
            switch (doodadPlacement.DoodadType)
            {
                case DoodadType.Tile:
                    doodad = new TileDoodad(doodadPlacement.Position, doodadPlacement.Rotation, doodadPlacement.Source);
                    break;
                case DoodadType.Tank:
                    if (doodadPlacement.Team == Team.Green)
                    {
                        doodad = new PlayerControlledTank(
                            this.soundManager,
                            this,
                            this.world,
                            this.doodads,
                            doodadPlacement.Team,
                            this.random,
                            doodadPlacement.Position,
                            doodadPlacement.Rotation);
                    }
                    else
                    {
                        doodad = new ComputerControlledTank(
                            this.soundManager,
                            this.world,
                            this.doodads,
                            doodadPlacement.Team,
                            doodadPlacement.Position,
                            doodadPlacement.Rotation,
                            this.random,
                            this,
                            this.waypoints.Where(waypoint => waypoint.Color.ToLowerInvariant() == doodadPlacement.WaypointColor.ToLowerInvariant()));
                    }

                    break;
                case DoodadType.Wall:
                    doodad = new Wall(this.world, doodadPlacement.Position, doodadPlacement.Rotation, doodadPlacement.Source);
                    break;
                case DoodadType.Missile:
                    doodad = new Missile(
                        this.soundManager,
                        this.world,
                        this.doodads,
                        doodadPlacement.NumberOfBounces,
                        doodadPlacement.Team,
                        doodadPlacement.Position,
                        doodadPlacement.Rotation,
                        this);
                    break;
                case DoodadType.Pit:
                    doodad = new Pit(
                        this.world,
                        doodadPlacement.Position,
                        doodadPlacement.Rotation,
                        doodadPlacement.Source);
                    break;
                case DoodadType.Waypoint:
                    doodad = new Waypoint(doodadPlacement.Position, doodadPlacement.WaypointColor, this.waypoints);
                    break;
                case DoodadType.BlastMark:
                    doodad = new BlastMark(doodadPlacement.Position, this.random);
                    break;
                case DoodadType.TreadMark:
                    doodad = new TreadMark(doodadPlacement.Position, doodadPlacement.Rotation, this.doodads);
                    break;
                case DoodadType.PowerUp:
                    doodad = new PowerUp(
                        this.soundManager,
                        this.world,
                        this.random,
                        this.doodads,
                        doodadPlacement.Position,
                        this);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            this.doodads.Add(doodad);
            return doodad;
        }
 public BlastMarkView(BlastMark blastMark, Random random)
 {
     this.blastMark = blastMark;
     this.particles = new ExplosionParticleSystem(random);
 }