本文整理汇总了C++中map::has_nearby_fire方法的典型用法代码示例。如果您正苦于以下问题:C++ map::has_nearby_fire方法的具体用法?C++ map::has_nearby_fire怎么用?C++ map::has_nearby_fire使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类map
的用法示例。
在下文中一共展示了map::has_nearby_fire方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: form_from_map
void inventory::form_from_map( map &m, const tripoint &origin, int range, bool assign_invlet,
bool clear_path )
{
items.clear();
for( const tripoint &p : m.points_in_radius( origin, range ) ) {
// can not reach this -> can not access its contents
if( clear_path ) {
if( origin != p && !m.clear_path( origin, p, range, 1, 100 ) ) {
continue;
}
}
if( m.has_furn( p ) ) {
const furn_t &f = m.furn( p ).obj();
const itype *type = f.crafting_pseudo_item_type();
if( type != nullptr ) {
const itype *ammo = f.crafting_ammo_item_type();
item furn_item( type, calendar::turn, 0 );
furn_item.item_tags.insert( "PSEUDO" );
furn_item.charges = ammo ? count_charges_in_list( ammo, m.i_at( p ) ) : 0;
add_item( furn_item );
}
}
if( m.accessible_items( p ) ) {
for( auto &i : m.i_at( p ) ) {
if( !i.made_of( LIQUID ) ) {
add_item( i, false, assign_invlet );
}
}
}
// Kludges for now!
if( m.has_nearby_fire( p, 0 ) ) {
item fire( "fire", 0 );
fire.charges = 1;
add_item( fire );
}
// Handle any water from infinite map sources.
item water = m.water_from( p );
if( !water.is_null() ) {
add_item( water );
}
// kludge that can probably be done better to check specifically for toilet water to use in
// crafting
if( m.furn( p ).obj().examine == &iexamine::toilet ) {
// get water charges at location
auto toilet = m.i_at( p );
auto water = toilet.end();
for( auto candidate = toilet.begin(); candidate != toilet.end(); ++candidate ) {
if( candidate->typeId() == "water" ) {
water = candidate;
break;
}
}
if( water != toilet.end() && water->charges > 0 ) {
add_item( *water );
}
}
// keg-kludge
if( m.furn( p ).obj().examine == &iexamine::keg ) {
auto liq_contained = m.i_at( p );
for( auto &i : liq_contained ) {
if( i.made_of( LIQUID ) ) {
add_item( i );
}
}
}
// WARNING: The part below has a bug that's currently quite minor
// When a vehicle has multiple faucets in range, available water is
// multiplied by the number of faucets.
// Same thing happens for all other tools and resources, but not cargo
const optional_vpart_position vp = m.veh_at( p );
if( !vp ) {
continue;
}
vehicle *const veh = &vp->vehicle();
//Adds faucet to kitchen stuff; may be horribly wrong to do such....
//ShouldBreak into own variable
const cata::optional<vpart_reference> kpart = vp.part_with_feature( "KITCHEN", true );
const cata::optional<vpart_reference> faupart = vp.part_with_feature( "FAUCET", true );
const cata::optional<vpart_reference> weldpart = vp.part_with_feature( "WELDRIG", true );
const cata::optional<vpart_reference> craftpart = vp.part_with_feature( "CRAFTRIG", true );
const cata::optional<vpart_reference> forgepart = vp.part_with_feature( "FORGE", true );
const cata::optional<vpart_reference> kilnpart = vp.part_with_feature( "KILN", true );
const cata::optional<vpart_reference> chempart = vp.part_with_feature( "CHEMLAB", true );
const cata::optional<vpart_reference> cargo = vp.part_with_feature( "CARGO", true );
if( cargo ) {
const auto items = veh->get_items( cargo->part_index() );
*this += std::list<item>( items.begin(), items.end() );
}
if( faupart ) {
for( const auto &it : veh->fuels_left() ) {
item fuel( it.first, 0 );
if( fuel.made_of( LIQUID ) ) {
fuel.charges = it.second;
add_item( fuel );
}
//.........这里部分代码省略.........