Skip to content

Commit 4fb5f14

Browse files
make some vehicle operations map aware (CleverRaven#79599)
* make some vehicle operations map aware * hid names of unused parameters * Update src/vehicle.h Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * equality, not assignment * demanded change --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 64a737c commit 4fb5f14

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+983
-832
lines changed

src/activity_actor.cpp

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,12 +1081,12 @@ void hotwire_car_activity_actor::finish( player_activity &act, Character &who )
10811081
} else if( skill > rng( 0, 4 ) ) {
10821082
// Soft fail
10831083
who.add_msg_if_player( _( "You found a wire that looks like the right one." ) );
1084-
veh.is_alarm_on = veh.has_security_working();
1084+
veh.is_alarm_on = veh.has_security_working( here );
10851085
veh.is_locked = false;
10861086
} else if( !veh.is_alarm_on ) {
10871087
// Hard fail
10881088
who.add_msg_if_player( _( "The red wire always starts the engine, doesn't it?" ) );
1089-
veh.is_alarm_on = veh.has_security_working();
1089+
veh.is_alarm_on = veh.has_security_working( here );
10901090
} else {
10911091
// Already failed
10921092
who.add_msg_if_player(
@@ -1388,7 +1388,7 @@ void bikerack_racking_activity_actor::finish( player_activity &act, Character &
13881388
vehicle &parent_veh = ovp_parent->vehicle();
13891389
vehicle &racked_veh = ovp_racked->vehicle();
13901390

1391-
if( !parent_veh.merge_rackable_vehicle( &racked_veh, racks ) ) {
1391+
if( !parent_veh.merge_rackable_vehicle( &here, &racked_veh, racks ) ) {
13921392
debugmsg( "racking actor failed: failed racking %s on %s, racks: [%s].",
13931393
racked_veh.name, parent_veh.name, enumerate_ints_to_string( racks ) );
13941394
}
@@ -1595,7 +1595,9 @@ void bikerack_unracking_activity_actor::start( player_activity &act, Character &
15951595

15961596
void bikerack_unracking_activity_actor::finish( player_activity &act, Character & )
15971597
{
1598-
const optional_vpart_position ovp = get_map().veh_at( parent_vehicle_pos );
1598+
map &here = get_map();
1599+
1600+
const optional_vpart_position ovp = here.veh_at( parent_vehicle_pos );
15991601
if( !ovp ) {
16001602
debugmsg( "unracking actor lost vehicle." );
16011603
act.set_to_null();
@@ -1604,7 +1606,7 @@ void bikerack_unracking_activity_actor::finish( player_activity &act, Character
16041606

16051607
vehicle &parent_vehicle = ovp->vehicle();
16061608

1607-
if( !parent_vehicle.remove_carried_vehicle( parts, racks ) ) {
1609+
if( !parent_vehicle.remove_carried_vehicle( here, parts, racks ) ) {
16081610
debugmsg( "unracking actor failed on %s, parts: [%s], racks: [%s]", parent_vehicle.name,
16091611
enumerate_ints_to_string( parts ), enumerate_ints_to_string( racks ) );
16101612
}
@@ -7650,7 +7652,7 @@ static void move_item( Character &you, item &it, const int quantity, const tripo
76507652
if( leftovers.charges > 0 ) {
76517653
if( src_veh ) {
76527654
vehicle_part &vp_src = src_veh->part( src_part );
7653-
if( !src_veh->add_item( vp_src, leftovers ) ) {
7655+
if( !src_veh->add_item( here, vp_src, leftovers ) ) {
76547656
debugmsg( "SortLoot: Source vehicle failed to receive leftover charges." );
76557657
}
76567658
} else {
@@ -7907,7 +7909,7 @@ void unload_loot_activity_actor::do_turn( player_activity &act, Character &you )
79077909
item link( *it->first->type->magazine->linkage, calendar::turn, contained->count() );
79087910
if( this_veh != nullptr ) {
79097911
vehicle_part &vp_this = this_veh->part( this_part );
7910-
this_veh->add_item( vp_this, link );
7912+
this_veh->add_item( here, vp_this, link );
79117913
} else {
79127914
here.add_item_or_charges( src_loc, link );
79137915
}
@@ -8228,9 +8230,10 @@ std::unique_ptr<activity_actor> vehicle_unfolding_activity_actor::deserialize( J
82288230

82298231
int heat_activity_actor::get_available_heater( Character &p, item_location &loc ) const
82308232
{
8233+
map &here = get_map();
82318234
int available_heater = 0;
82328235
if( !loc->has_no_links() ) {
8233-
available_heater = loc->link().t_veh->connected_battery_power_level().first;
8236+
available_heater = loc->link().t_veh->connected_battery_power_level( here ).first;
82348237
} else if( !loc->has_flag( flag_USE_UPS ) ) {
82358238
available_heater = loc->ammo_remaining();
82368239
} else if( loc->has_flag( flag_USE_UPS ) ) {
@@ -8247,18 +8250,20 @@ void heat_activity_actor::start( player_activity &act, Character & )
82478250

82488251
void heat_activity_actor::do_turn( player_activity &act, Character &p )
82498252
{
8253+
map &here = get_map();
8254+
82508255
// use a hack in use_vehicle_tool vehicle_use.cpp
82518256
if( !act.coords.empty() ) {
82528257
h.vpt = act.coords[0];
82538258
}
8254-
std::optional<vpart_position> vp = get_map().veh_at( h.vpt );
8259+
std::optional<vpart_position> vp = here.veh_at( h.vpt );
82558260
if( h.pseudo_flag ) {
82568261
if( !vp ) {
82578262
p.add_msg_if_player( _( "You can't find the appliance any more." ) );
82588263
act.set_to_null();
82598264
return;
82608265
}
8261-
if( vp.value().vehicle().connected_battery_power_level().first < requirements.ammo *
8266+
if( vp.value().vehicle().connected_battery_power_level( here ).first < requirements.ammo *
82628267
h.heating_effect ) {
82638268
p.add_msg_if_player( _( "You need more energy to heat these items." ) );
82648269
act.set_to_null();
@@ -8287,6 +8292,8 @@ void heat_activity_actor::do_turn( player_activity &act, Character &p )
82878292

82888293
void heat_activity_actor::finish( player_activity &act, Character &p )
82898294
{
8295+
map &here = get_map();
8296+
82908297
for( drop_location &ait : to_heat ) {
82918298
item_location cold_item = ait.first;
82928299
if( cold_item->count_by_charges() ) {
@@ -8316,7 +8323,7 @@ void heat_activity_actor::finish( player_activity &act, Character &p )
83168323
}
83178324
if( h.consume_flag ) {
83188325
if( h.pseudo_flag ) {
8319-
get_map().veh_at( h.vpt ).value().vehicle().discharge_battery( requirements.ammo *
8326+
here.veh_at( h.vpt ).value().vehicle().discharge_battery( here, requirements.ammo *
83208327
h.heating_effect );
83218328
} else {
83228329
h.loc->activation_consume( requirements.ammo, h.loc.pos_bub(), &p );

src/activity_handlers.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,11 +1664,11 @@ void activity_handlers::fill_liquid_do_turn( player_activity *act, Character *yo
16641664
veh = &vp->vehicle();
16651665
part = act_ref.values[4];
16661666
if( source_veh &&
1667-
source_veh->fuel_left( liquid.typeId(), ( veh ? std::function<bool( const vehicle_part & )> { [&]( const vehicle_part & pa )
1667+
source_veh->fuel_left( here, liquid.typeId(), ( veh ? std::function<bool( const vehicle_part & )> { [&]( const vehicle_part & pa )
16681668
{
16691669
return &veh->part( part ) != &pa;
16701670
}
1671-
} : return_true<const vehicle_part &> ) ) <= 0 ) {
1671+
} : return_true<const vehicle_part &> ) ) <= 0 ) {
16721672
act_ref.set_to_null();
16731673
return;
16741674
}
@@ -1712,7 +1712,7 @@ void activity_handlers::fill_liquid_do_turn( player_activity *act, Character *yo
17121712
act_ref.set_to_null(); // leaky tank spilled while we were transferring
17131713
return;
17141714
}
1715-
source_veh->drain( part_num, removed_charges );
1715+
source_veh->drain( here, part_num, removed_charges );
17161716
liquid.charges = veh_charges - removed_charges;
17171717
// If there's no liquid left in this tank we're done, otherwise
17181718
// we need to update our liquid serialization to reflect how
@@ -1727,11 +1727,12 @@ void activity_handlers::fill_liquid_do_turn( player_activity *act, Character *yo
17271727
act_ref.str_values[0] = serialize( liquid );
17281728
}
17291729
} else {
1730-
source_veh->drain( liquid.typeId(), removed_charges, ( veh ? std::function<bool( vehicle_part & )> { [&]( vehicle_part & pa )
1730+
source_veh->drain( here, liquid.typeId(), removed_charges,
1731+
( veh ? std::function<bool( vehicle_part & )> { [&]( vehicle_part & pa )
17311732
{
17321733
return &veh->part( part ) != &pa;
17331734
}
1734-
} : return_true<vehicle_part &> ) );
1735+
} : return_true<vehicle_part &> ) );
17351736
}
17361737
break;
17371738
case liquid_source_type::MAP_ITEM:
@@ -2408,6 +2409,8 @@ struct weldrig_hack {
24082409
}
24092410

24102411
item &get_item() {
2412+
map &here = get_map();
2413+
24112414
if( !part ) {
24122415
// null item should be handled just fine
24132416
return null_item_reference();
@@ -2432,7 +2435,7 @@ struct weldrig_hack {
24322435
mag.typeId().str(), pseudo.typeId().str() );
24332436
return null_item_reference();
24342437
}
2435-
pseudo.ammo_set( itype_battery, part->vehicle().drain( itype_battery,
2438+
pseudo.ammo_set( itype_battery, part->vehicle().drain( here, itype_battery,
24362439
pseudo.ammo_capacity( ammo_battery ),
24372440
return_true< vehicle_part &>, false ) ); // no cable loss since all of this is virtual
24382441
return pseudo;
@@ -2443,7 +2446,9 @@ struct weldrig_hack {
24432446
return;
24442447
}
24452448

2446-
part->vehicle().charge_battery( pseudo.ammo_remaining(),
2449+
map &here = get_map();
2450+
2451+
part->vehicle().charge_battery( here, pseudo.ammo_remaining(),
24472452
false ); // return unused charges without cable loss
24482453
}
24492454

src/activity_item_handling.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,12 @@ static void put_into_vehicle( Character &c, item_drop_reason reason, const std::
242242
it.charges = 0;
243243
}
244244

245-
if( veh.add_item( vp, it ) ) {
245+
if( veh.add_item( here, vp, it ) ) {
246246
into_vehicle_count += it.count();
247247
} else {
248248
if( it.count_by_charges() ) {
249249
// Maybe we can add a few charges in the trunk and the rest on the ground.
250-
const int charges_added = veh.add_charges( vp, it );
250+
const int charges_added = veh.add_charges( here, vp, it );
251251
it.mod_charges( -charges_added );
252252
into_vehicle_count += charges_added;
253253
}
@@ -653,7 +653,7 @@ static void move_item( Character &you, item &it, const int quantity, const tripo
653653
// If we didn't pick up a whole stack, put the remainder back where it came from.
654654
if( leftovers.charges > 0 ) {
655655
if( vpr_src ) {
656-
if( !vpr_src->vehicle().add_item( vpr_src->part(), leftovers ) ) {
656+
if( !vpr_src->vehicle().add_item( here, vpr_src->part(), leftovers ) ) {
657657
debugmsg( "SortLoot: Source vehicle failed to receive leftover charges." );
658658
}
659659
} else {
@@ -991,7 +991,7 @@ static bool are_requirements_nearby(
991991
const std::optional<vpart_reference> &vp = here.veh_at( elem ).part_with_tool( itype_welder );
992992

993993
if( vp ) {
994-
const int veh_battery = vp->vehicle().fuel_left( itype_battery );
994+
const int veh_battery = vp->vehicle().fuel_left( here, itype_battery );
995995

996996
item welder( itype_welder, calendar::turn_zero );
997997
welder.charges = veh_battery;
@@ -1024,7 +1024,7 @@ static activity_reason_info can_do_activity_there( const activity_id &act, Chara
10241024
return activity_reason_info::fail( do_activity_reason::NO_ZONE );
10251025
}
10261026
// if the vehicle is moving or player is controlling it.
1027-
if( std::abs( veh->velocity ) > 100 || veh->player_in_control( player_character ) ) {
1027+
if( std::abs( veh->velocity ) > 100 || veh->player_in_control( here, player_character ) ) {
10281028
return activity_reason_info::fail( do_activity_reason::NO_ZONE );
10291029
}
10301030
for( const npc &guy : g->all_npcs() ) {
@@ -2419,7 +2419,7 @@ void activity_on_turn_move_loot( player_activity &act, Character &you )
24192419
if( it->first->type->magazine->linkage ) {
24202420
item link( *it->first->type->magazine->linkage, calendar::turn, contained->count() );
24212421
if( vpr_src ) {
2422-
vpr_src->vehicle().add_item( vpr_src->part(), link );
2422+
vpr_src->vehicle().add_item( here, vpr_src->part(), link );
24232423
} else {
24242424
here.add_item_or_charges( src_loc, link );
24252425
}

src/bionics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1396,7 +1396,7 @@ void Character::burn_fuel( bionic &bio )
13961396
if( !result.connected_vehicles.empty() ) {
13971397
// Cable bionic charging from connected vehicle(s)
13981398
for( vehicle *veh : result.connected_vehicles ) {
1399-
int undrained = veh->discharge_battery( 1 );
1399+
int undrained = veh->discharge_battery( here, 1 );
14001400
if( undrained == 0 ) {
14011401
energy_gain = 1_kJ;
14021402
break;

src/bionics_ui.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ char get_free_invlet( Character &p )
212212
static void draw_bionics_titlebar( const catacurses::window &window, avatar *p,
213213
bionic_menu_mode mode )
214214
{
215+
map &here = get_map();
216+
215217
input_context ctxt( "BIONICS", keyboard_mode::keychar );
216218

217219
werase( window );
@@ -236,7 +238,7 @@ static void draw_bionics_titlebar( const catacurses::window &window, avatar *p,
236238
fuel_string += fuel->tname() + ": " + colorize( std::to_string( fuel->charges ), c_green ) + " ";
237239
}
238240
for( vehicle *veh : p->get_cable_vehicle() ) {
239-
int64_t charges = veh->connected_battery_power_level().first;
241+
int64_t charges = veh->connected_battery_power_level( here ).first;
240242
if( charges > 0 ) {
241243
found_fuel = true;
242244
fuel_string += item( itype_battery ).tname() + ": " + colorize( std::to_string( charges ),

src/cata_tiles.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3934,7 +3934,7 @@ bool cata_tiles::draw_vpart( const tripoint_bub_ms &p, lit_level ll, int &height
39343934
const int subtile = vd.is_open ? open_ : vd.is_broken ? broken : 0;
39353935
const int rotation = angle_to_dir4( 270_degrees - veh.face.dir() );
39363936
avatar &you = get_avatar();
3937-
if( !veh.forward_velocity() && !veh.player_in_control( you )
3937+
if( !veh.forward_velocity() && !veh.player_in_control( here, you )
39383938
&& !( you.get_grab_type() == object_type::VEHICLE
39393939
&& veh.get_points().count( ( you.pos_abs() + you.grab_point ) ) )
39403940
&& here.memory_cache_dec_is_dirty( p ) ) {

src/character.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4042,7 +4042,7 @@ std::pair<int, int> Character::climate_control_strength() const
40424042
// Also check for a working alternator. Muscle or animal could be powering it.
40434043
(
40444044
vp->is_inside() &&
4045-
vp->vehicle().total_alternator_epower() > 0_W
4045+
vp->vehicle().total_alternator_epower( here ) > 0_W
40464046
)
40474047
);
40484048
}
@@ -11977,8 +11977,9 @@ int Character::count_flag( const json_character_flag &flag ) const
1197711977

1197811978
bool Character::is_driving() const
1197911979
{
11980-
const optional_vpart_position vp = get_map().veh_at( pos_bub() );
11981-
return vp && vp->vehicle().is_moving() && vp->vehicle().player_in_control( *this );
11980+
map &here = get_map();
11981+
const optional_vpart_position vp = here.veh_at( pos_bub() );
11982+
return vp && vp->vehicle().is_moving() && vp->vehicle().player_in_control( here, *this );
1198211983
}
1198311984

1198411985
time_duration Character::estimate_effect_dur( const skill_id &relevant_skill,
@@ -12076,12 +12077,14 @@ bool Character::beyond_final_warning( const faction_id &id )
1207612077

1207712078
read_condition_result Character::check_read_condition( const item &book ) const
1207812079
{
12080+
map &here = get_map();
12081+
1207912082
read_condition_result result = read_condition_result::SUCCESS;
1208012083
if( !book.is_book() ) {
1208112084
result |= read_condition_result::NOT_BOOK;
1208212085
} else {
12083-
const optional_vpart_position vp = get_map().veh_at( pos_bub() );
12084-
if( vp && vp->vehicle().player_in_control( *this ) ) {
12086+
const optional_vpart_position vp = here.veh_at( pos_bub() );
12087+
if( vp && vp->vehicle().player_in_control( here, *this ) ) {
1208512088
result |= read_condition_result::DRIVING;
1208612089
}
1208712090

@@ -13347,7 +13350,7 @@ void Character::pause()
1334713350
vehicle *veh = nullptr;
1334813351
for( wrapped_vehicle &v : vehs ) {
1334913352
veh = v.v;
13350-
if( veh && veh->is_moving() && veh->player_in_control( *this ) ) {
13353+
if( veh && veh->is_moving() && veh->player_in_control( here, *this ) ) {
1335113354
double exp_temp = 1 + veh->total_mass() / 400.0_kilogram +
1335213355
std::abs( veh->velocity / 3200.0 );
1335313356
int experience = static_cast<int>( exp_temp );

src/craft_command.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ bool craft_command::continue_prompt_liquids( const std::function<bool( const ite
289289
crafter->i_add_or_drop( iit );
290290
}
291291
for( auto &vit : veh_items ) {
292-
vit.first.vehicle().add_item( vit.first.part(), vit.second );
292+
vit.first.vehicle().add_item( m, vit.first.part(), vit.second );
293293
}
294294
};
295295

src/crafting.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -509,10 +509,10 @@ bool Character::check_eligible_containers_for_crafting( const recipe &rec, int b
509509

510510
// also check if we're currently in a vehicle that has the necessary storage
511511
if( charges_to_store > 0 ) {
512-
if( optional_vpart_position vp = here.veh_at( pos_bub() ) ) {
512+
if( optional_vpart_position vp = here.veh_at( pos_bub( &here ) ) ) {
513513
const itype_id &ftype = prod.typeId();
514-
int fuel_cap = vp->vehicle().fuel_capacity( ftype );
515-
int fuel_amnt = vp->vehicle().fuel_left( ftype );
514+
int fuel_cap = vp->vehicle().fuel_capacity( here, ftype );
515+
int fuel_amnt = vp->vehicle().fuel_left( here, ftype );
516516

517517
if( fuel_cap >= 0 ) {
518518
int fuel_space_left = fuel_cap - fuel_amnt;
@@ -796,7 +796,7 @@ static item_location set_item_map_or_vehicle( const Character &p, const tripoint
796796
map &here = get_map();
797797
if( const std::optional<vpart_reference> vp = here.veh_at( loc ).cargo() ) {
798798
vehicle &veh = vp->vehicle();
799-
if( const std::optional<vehicle_stack::iterator> it = veh.add_item( vp->part(), newit ) ) {
799+
if( const std::optional<vehicle_stack::iterator> it = veh.add_item( here, vp->part(), newit ) ) {
800800
p.add_msg_player_or_npc(
801801
//~ %1$s: name of item being placed, %2$s: vehicle part name
802802
pgettext( "item, furniture", "You put the %1$s on the %2$s." ),

src/debug_menu.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3706,8 +3706,9 @@ static void unlock_all()
37063706

37073707
static void vehicle_battery_charge()
37083708
{
3709+
map &here = get_map();
37093710

3710-
optional_vpart_position v_part_pos = get_map().veh_at( player_picks_tile() );
3711+
optional_vpart_position v_part_pos = here.veh_at( player_picks_tile() );
37113712
if( !v_part_pos ) {
37123713
add_msg( m_bad, _( "There's no vehicle there." ) );
37133714
return;
@@ -3722,9 +3723,9 @@ static void vehicle_battery_charge()
37223723
if( !popup.canceled() ) {
37233724
vehicle &veh = v_part_pos->vehicle();
37243725
if( amount >= 0 ) {
3725-
veh.charge_battery( amount, false );
3726+
veh.charge_battery( here, amount, false );
37263727
} else {
3727-
veh.discharge_battery( -amount, false );
3728+
veh.discharge_battery( here, -amount, false );
37283729
}
37293730
}
37303731
}

0 commit comments

Comments
 (0)