void DisasterEvent::exec( Game& game ) { Tilemap& tmap = game.getCity()->getTilemap(); Tile& tile = tmap.at( _pos ); TilePos rPos = _pos; if( tile.getFlag( Tile::isDestructible ) ) { Size size( 1 ); LandOverlayPtr overlay = tile.getOverlay(); if( overlay.isValid() ) { overlay->deleteLater(); size = overlay->getSize(); rPos = overlay->getTile().getIJ(); } //bool deleteRoad = false; TilemapArea clearedTiles = tmap.getFilledRectangle( rPos, size ); foreach( Tile* tile, clearedTiles ) { BuildingType dstr2constr[] = { B_BURNING_RUINS, B_COLLAPSED_RUINS, B_PLAGUE_RUINS }; bool canCreate = ConstructionManager::getInstance().canCreate( dstr2constr[_type] ); if( canCreate ) { GameEventMgr::append( BuildEvent::create( tile->getIJ(), dstr2constr[_type] ) ); } }