TilesArea::TilesArea(const Tilemap& tmap, int distance, OverlayPtr overlay) { if( overlay.isNull() ) return; TilePos offset( distance, distance ); TilePos size( overlay->size().width(), overlay->size().height() ); TilePos start = overlay->tile().epos(); _size = overlay->size(); append( tmap.area( start - offset, start + size + offset ) ); }
bool haveReservoirWater( const Tilemap& tm, const TilePos& pos ) { TilesArray possiblePlace = tm.area( pos, pos + TilePos(1,1) ); return !possiblePlace.select( Tile::pReservoirWater ).empty(); }
TilesArea::TilesArea(const Tilemap &tmap, const TilePos& leftup, const Size& size) { _size = size; append( tmap.area( leftup, size ) ); }
TilesArea::TilesArea(const Tilemap &tmap, int distance, const TilePos& center) { TilePos offset( distance, distance ); _size = Size::square( distance ) * 2; append( tmap.area( center - offset, center + offset ) ); }
TilesArea::TilesArea(const Tilemap &tmap, const TilePos& leftup, const TilePos& rightdown) { _size = Size( abs( rightdown.i() - leftup.i() ), abs( rightdown.j() - leftup.j() ) ); append( tmap.area( leftup, rightdown ) ); }