Skip to content

Commit bfbe559

Browse files
authored
Merge pull request #73807 from PatrikLundell/typify
typified activity_actor
2 parents 305cc9c + 9a29797 commit bfbe559

Some content is hidden

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

44 files changed

+501
-221
lines changed

src/activity_actor.cpp

Lines changed: 124 additions & 112 deletions
Large diffs are not rendered by default.

src/activity_actor_definitions.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,10 @@ class gunmod_remove_activity_actor : public activity_actor
177177
class hacksaw_activity_actor : public activity_actor
178178
{
179179
public:
180-
explicit hacksaw_activity_actor( const tripoint &target,
180+
explicit hacksaw_activity_actor( const tripoint_bub_ms &target,
181181
const item_location &tool ) : target( target ), tool( tool ) {};
182-
explicit hacksaw_activity_actor( const tripoint &target, const itype_id &type,
183-
const tripoint &veh_pos ) : target( target ), type( type ), veh_pos( veh_pos ) {};
182+
explicit hacksaw_activity_actor( const tripoint_bub_ms &target, const itype_id &type,
183+
const tripoint_bub_ms &veh_pos ) : target( target ), type( type ), veh_pos( veh_pos ) {};
184184
activity_id get_type() const override {
185185
return activity_id( "ACT_HACKSAW" );
186186
}
@@ -199,10 +199,10 @@ class hacksaw_activity_actor : public activity_actor
199199
// debugmsg causes a backtrace when fired during cata_test
200200
bool testing = false; // NOLINT(cata-serialize)
201201
private:
202-
tripoint target;
202+
tripoint_bub_ms target;
203203
item_location tool;
204204
std::optional<itype_id> type;
205-
std::optional<tripoint> veh_pos;
205+
std::optional<tripoint_bub_ms> veh_pos;
206206
bool can_resume_with_internal( const activity_actor &other,
207207
const Character &/*who*/ ) const override;
208208
};
@@ -323,7 +323,7 @@ class hotwire_car_activity_actor : public activity_actor
323323
* Position of first vehicle part; used to identify the vehicle
324324
* TODO: find something more reliable (to cover cases when vehicle is moved/damaged)
325325
*/
326-
tripoint target;
326+
tripoint_abs_ms target;
327327

328328
bool can_resume_with_internal( const activity_actor &other, const Character & ) const override {
329329
const hotwire_car_activity_actor &a = static_cast<const hotwire_car_activity_actor &>( other );
@@ -542,12 +542,12 @@ class pickup_activity_actor : public activity_actor
542542
* (e.g. if the player is in a moving vehicle). This should be null
543543
* if not grabbing from the ground.
544544
*/
545-
std::optional<tripoint> starting_pos;
545+
std::optional<tripoint_bub_ms> starting_pos;
546546

547547
public:
548548
pickup_activity_actor( const std::vector<item_location> &target_items,
549549
const std::vector<int> &quantities,
550-
const std::optional<tripoint> &starting_pos,
550+
const std::optional<tripoint_bub_ms> &starting_pos,
551551
bool autopickup ) : target_items( target_items ),
552552
quantities( quantities ), starting_pos( starting_pos ), stash_successful( true ),
553553
autopickup( autopickup ) {}
@@ -625,7 +625,7 @@ class lockpick_activity_actor : public activity_actor
625625
int moves_total;
626626
std::optional<item_location> lockpick;
627627
std::optional<item> fake_lockpick;
628-
tripoint target;
628+
tripoint_abs_ms target;
629629

630630
lockpick_activity_actor(
631631
int moves_total,
@@ -656,7 +656,7 @@ class lockpick_activity_actor : public activity_actor
656656
void do_turn( player_activity &, Character & ) override {}
657657
void finish( player_activity &act, Character &who ) override;
658658

659-
static std::optional<tripoint> select_location( avatar &you );
659+
static std::optional<tripoint_bub_ms> select_location( avatar &you );
660660

661661
std::unique_ptr<activity_actor> clone() const override {
662662
return std::make_unique<lockpick_activity_actor>( *this );
@@ -977,7 +977,7 @@ class workout_activity_actor : public activity_actor
977977
bool disable_query = false; // disables query, continue as long as possible
978978
bool rest_mode = false; // work or rest during training session
979979
time_duration duration;
980-
tripoint location;
980+
tripoint_bub_ms location;
981981
time_point stop_time; // can resume if time apart is not above
982982
activity_id act_id = activity_id( "ACT_WORKOUT_LIGHT" ); // variable activities
983983
int intensity_modifier = 1;
@@ -1535,11 +1535,11 @@ class tent_deconstruct_activity_actor : public activity_actor
15351535
private:
15361536
int moves_total;
15371537
int radius;
1538-
tripoint target;
1538+
tripoint_bub_ms target;
15391539
itype_id tent;
15401540

15411541
public:
1542-
tent_deconstruct_activity_actor( int moves_total, int radius, tripoint target,
1542+
tent_deconstruct_activity_actor( int moves_total, int radius, tripoint_bub_ms target,
15431543
itype_id tent ) : moves_total( moves_total ), radius( radius ), target( target ), tent( tent ) {}
15441544

15451545
activity_id get_type() const override {

src/advanced_inv.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@ bool advanced_inventory::move_all_items()
11821182

11831183
do_return_entry();
11841184

1185-
const pickup_activity_actor act( target_items, quantities, player_character.pos(), false );
1185+
const pickup_activity_actor act( target_items, quantities, player_character.pos_bub(), false );
11861186
player_character.assign_activity( act );
11871187
} else {
11881188
// Vehicle and map destinations are handled the same.
@@ -1472,9 +1472,9 @@ void advanced_inventory::start_activity(
14721472
player_character.assign_activity(
14731473
wield_activity_actor( target_items.front(), quantities.front() ) );
14741474
} else if( destarea == AIM_INVENTORY ) {
1475-
const std::optional<tripoint> starting_pos = from_vehicle
1475+
const std::optional<tripoint_bub_ms> starting_pos = from_vehicle
14761476
? std::nullopt
1477-
: std::optional<tripoint>( player_character.pos() );
1477+
: std::optional<tripoint_bub_ms>( player_character.pos_bub() );
14781478
const pickup_activity_actor act( target_items, quantities, starting_pos, false );
14791479
player_character.assign_activity( act );
14801480
} else {

src/avatar.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,6 +1534,11 @@ bool avatar::invoke_item( item *used, const tripoint &pt, int pre_obtain_moves )
15341534
return invoke_item( used, method, pt, pre_obtain_moves );
15351535
}
15361536

1537+
bool avatar::invoke_item( item *used, const tripoint_bub_ms &pt, int pre_obtain_moves )
1538+
{
1539+
return avatar::invoke_item( used, pt.raw(), pre_obtain_moves );
1540+
}
1541+
15371542
bool avatar::invoke_item( item *used )
15381543
{
15391544
return Character::invoke_item( used );

src/avatar.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,9 @@ class avatar : public Character
319319
advanced_inv_area &square );
320320

321321
using Character::invoke_item;
322+
// TODO: Get rid of untyped overload
322323
bool invoke_item( item *, const tripoint &pt, int pre_obtain_moves ) override;
324+
bool invoke_item( item *, const tripoint_bub_ms &pt, int pre_obtain_moves ) override;
323325
bool invoke_item( item * ) override;
324326
bool invoke_item( item *, const std::string &, const tripoint &pt,
325327
int pre_obtain_moves = -1 ) override;

src/bionics.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,8 @@ bool Character::activate_bionic( bionic &bio, bool eff_only, bool *close_bionics
10281028
if( !is_avatar() ) {
10291029
return false;
10301030
}
1031-
std::optional<tripoint> target = lockpick_activity_actor::select_location( player_character );
1031+
std::optional<tripoint_bub_ms> target = lockpick_activity_actor::select_location(
1032+
player_character );
10321033
if( target.has_value() ) {
10331034
add_msg_activate();
10341035
assign_activity( lockpick_activity_actor::use_bionic( here.getabs( *target ) ) );

src/character.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7153,6 +7153,11 @@ bool Character::invoke_item( item *, const tripoint &, int )
71537153
return false;
71547154
}
71557155

7156+
bool Character::invoke_item( item *, const tripoint_bub_ms &, int )
7157+
{
7158+
return false;
7159+
}
7160+
71567161
bool Character::invoke_item( item *used, const std::string &method )
71577162
{
71587163
return invoke_item( used, method, pos() );

src/character.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1923,7 +1923,9 @@ class Character : public Creature, public visitable
19231923
* Returns true if it destroys the item. Consumes charges from the item.
19241924
* Multi-use items are ONLY supported when all use_methods are iuse_actor!
19251925
*/
1926+
// TODO: Get rid of untyped overload
19261927
virtual bool invoke_item( item *, const tripoint &pt, int pre_obtain_moves = -1 );
1928+
virtual bool invoke_item( item *, const tripoint_bub_ms &pt, int pre_obtain_moves = -1 );
19271929
/** As above, but with a pre-selected method. Debugmsg if this item doesn't have this method. */
19281930
virtual bool invoke_item( item *, const std::string &, const tripoint &pt,
19291931
int pre_obtain_moves = -1 );
@@ -3523,16 +3525,23 @@ class Character : public Creature, public visitable
35233525
float morale_crafting_speed_multiplier( const recipe &rec ) const;
35243526
float lighting_craft_speed_multiplier( const recipe &rec, const tripoint &p = tripoint_min ) const;
35253527
float crafting_speed_multiplier( const recipe &rec ) const;
3528+
// TODO: Get rid of untyped overload
35263529
float workbench_crafting_speed_multiplier( const item &craft,
35273530
const std::optional<tripoint> &loc )const;
3531+
float workbench_crafting_speed_multiplier( const item &craft,
3532+
const std::optional<tripoint_bub_ms> &loc )const;
35283533
/** For use with in progress crafts.
35293534
* Workbench multiplier calculation (especially finding lifters nearby)
35303535
* is expensive when numorous items are around.
35313536
* So use pre-calculated cache if possible.
35323537
*/
3538+
// TODO: Get rid of untyped overload
35333539
float crafting_speed_multiplier( const item &craft, const std::optional<tripoint> &loc,
35343540
bool use_cached_workbench_multiplier = false, float cached_workbench_multiplier = 0.0f
35353541
) const;
3542+
float crafting_speed_multiplier( const item &craft, const std::optional<tripoint_bub_ms> &loc,
3543+
bool use_cached_workbench_multiplier = false, float cached_workbench_multiplier = 0.0f
3544+
) const;
35363545
int available_assistant_count( const recipe &rec ) const;
35373546
/**
35383547
* Expected time to craft a recipe, with assumption that multipliers stay constant.
@@ -3584,7 +3593,9 @@ class Character : public Creature, public visitable
35843593
float item_destruction_chance( const recipe &making ) const;
35853594
craft_roll_data recipe_success_roll_data( const recipe &making ) const;
35863595
craft_roll_data recipe_failure_roll_data( const recipe &making ) const;
3596+
// TODO: Get rid of untyped overload
35873597
void complete_craft( item &craft, const std::optional<tripoint> &loc );
3598+
void complete_craft( item &craft, const std::optional<tripoint_bub_ms> &loc );
35883599
/**
35893600
* Check if the player meets the requirements to continue the in progress craft and if
35903601
* unable to continue print messages explaining the reason.

src/character_inventory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ void Character::pick_up( const drop_locations &what )
628628
quantities.emplace_back( dl.second );
629629
}
630630

631-
assign_activity( pickup_activity_actor( items, quantities, pos(), false ) );
631+
assign_activity( pickup_activity_actor( items, quantities, pos_bub(), false ) );
632632
}
633633

634634
invlets_bitset Character::allocated_invlets() const

src/craft_command.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,15 @@ void craft_command::execute( const std::optional<tripoint> &new_loc )
120120
execute();
121121
}
122122

123+
void craft_command::execute( const std::optional<tripoint_bub_ms> &new_loc )
124+
{
125+
std::optional<tripoint> tmp;
126+
if( new_loc.has_value() ) {
127+
tmp = new_loc.value().raw();
128+
}
129+
craft_command::execute( tmp );
130+
}
131+
123132
void craft_command::execute( bool only_cache_comps )
124133
{
125134
if( empty() ) {

0 commit comments

Comments
 (0)