bool overmap_location::test( const int_id<oter_t> &oter ) const { return std::any_of( terrains.cbegin(), terrains.cend(), [ &oter ]( const string_id<oter_type_t> &type ) { return oter->type_is( type ); } ); }
bool overmap_connection::subtype::allows_terrain( const int_id<oter_t> &oter ) const { if( oter->type_is( terrain ) ) { return true; // Can be built on similar terrains. } return std::any_of( locations.cbegin(), locations.cend(), [&oter]( const string_id<overmap_location> &elem ) { return elem->test( oter ); } ); }
bool overmap_connection::has( const int_id<oter_t> &oter ) const { return std::find_if( subtypes.cbegin(), subtypes.cend(), [&oter]( const subtype & elem ) { return oter->type_is( elem.terrain ); } ) != subtypes.cend(); }
string_id<overmap_connection> overmap_connections::guess_for( const int_id<oter_type_t> &oter_id ) { return guess_for( oter_id->get_first() ); }