public BombBlast(Point3D location, Map map, BlastDirection direction, BombBag bombbag, Mobile planter, int strength, bool baddaboom) { _Direction = direction; _DeltaX = (_Direction == BlastDirection.West ? -1 : 0) + (_Direction == BlastDirection.East ? 1 : 0); _DeltaY = (_Direction == BlastDirection.North ? -1 : 0) + (_Direction == BlastDirection.South ? 1 : 0); _Location = new Point3D(location.X + _DeltaX, location.Y + _DeltaY, location.Z); _Map = map; _BombBag = bombbag; _Planter = planter; _Strength = strength; _BaddaBoom = baddaboom; _BlastTimer = new BlastTimer(this); _BlastTimer.Start(); //check for any victims of the blast if (_BombBag != null && !_BombBag.Deleted) { _BombBag.ControlItem.CheckForMobileVictims(_Location, _Map, _BombBag); } }
public void Explode() { if( _BlastTimer != null ) { _BlastTimer.Stop(); _BlastTimer = null; } if( _Map == null ) { return; } IPooledEnumerable ie = _Map.GetItemsInRange( _Location, 0 ); bool hitwall = false; foreach( Item item in ie ) { if( item is BombermanObstacle && !( item is BombermanFloorTile ) ) { BombermanObstacle obstacle = (BombermanObstacle)item; if( obstacle.Destructable ) { obstacle.Destroy(); } else { hitwall = true; _Strength = 0; } //stop the fires here if you don't have a baddaboom bomb if( !_BaddaBoom ) { _Strength = 0; } break; } if( item is Bomb ) { Bomb bomb = (Bomb)item; //reassign who planted it so that the bomb who originally exploded will get credit for any kills bomb.Planter = _BombBag.Owner; bomb.Explode( ReverseDirection( _Direction ) ); //stop the fires here _Strength = 0; break; } } ie.Free(); if( !hitwall ) { RenderBlast(); } //check for any victims of the blast if( _BombBag != null && !_BombBag.Deleted ) { _BombBag.ControlItem.CheckForMobileVictims( _Location, _Map, _BombBag ); } if( !hitwall ) { } if( _Strength > 0 ) { BombBlast newblast = new BombBlast( _Location, _Map, _Direction, _BombBag, _Planter, _Strength - 1, _BaddaBoom ); } }
public void Explode() { if (_BlastTimer != null) { _BlastTimer.Stop(); _BlastTimer = null; } if (_Map == null) { return; } IPooledEnumerable ie = _Map.GetItemsInRange(_Location, 0); bool hitwall = false; foreach (Item item in ie) { if (item is BombermanObstacle && !(item is BombermanFloorTile)) { BombermanObstacle obstacle = (BombermanObstacle)item; if (obstacle.Destructable) { obstacle.Destroy(); } else { hitwall = true; _Strength = 0; } //stop the fires here if you don't have a baddaboom bomb if (!_BaddaBoom) { _Strength = 0; } break; } if (item is Bomb) { Bomb bomb = (Bomb)item; //reassign who planted it so that the bomb who originally exploded will get credit for any kills bomb.Planter = _BombBag.Owner; bomb.Explode(ReverseDirection(_Direction)); //stop the fires here _Strength = 0; break; } } ie.Free(); if (!hitwall) { RenderBlast(); } //check for any victims of the blast if (_BombBag != null && !_BombBag.Deleted) { _BombBag.ControlItem.CheckForMobileVictims(_Location, _Map, _BombBag); } if (!hitwall) { } if (_Strength > 0) { BombBlast newblast = new BombBlast(_Location, _Map, _Direction, _BombBag, _Planter, _Strength - 1, _BaddaBoom); } }