Pass player_info to select_secondary_weapon

This commit is contained in:
Kp 2016-10-02 00:34:46 +00:00
parent e3c3e39045
commit 36213d9b50
4 changed files with 10 additions and 14 deletions

View file

@ -169,7 +169,7 @@ void do_secondary_weapon_select(player_info &, uint_fast32_t weapon_num);
void auto_select_primary_weapon(player_info &); void auto_select_primary_weapon(player_info &);
void auto_select_secondary_weapon(player_info &); void auto_select_secondary_weapon(player_info &);
void select_primary_weapon(player_info &, const char *weapon_name, uint_fast32_t weapon_num, int wait_for_rearm); void select_primary_weapon(player_info &, const char *weapon_name, uint_fast32_t weapon_num, int wait_for_rearm);
void select_secondary_weapon(const char *weapon_name, uint_fast32_t weapon_num, int wait_for_rearm); void select_secondary_weapon(player_info &, const char *weapon_name, uint_fast32_t weapon_num, int wait_for_rearm);
} }
#endif #endif

View file

@ -486,7 +486,7 @@ void init_player_stats_new_ship(ubyte pnum)
{ {
newdemo_record_laser_level(player_info.laser_level, 0); newdemo_record_laser_level(player_info.laser_level, 0);
} }
select_secondary_weapon(nullptr, 0, 0); select_secondary_weapon(player_info, nullptr, 0, 0);
dead_player_end(); //player no longer dead dead_player_end(); //player no longer dead
Player_dead_state = player_dead_state::no; Player_dead_state = player_dead_state::no;
Player_eggs_dropped = 0; Player_eggs_dropped = 0;

View file

@ -1519,7 +1519,7 @@ int state_restore_all_sub(const char *filename, const secret_restore secret)
} }
select_primary_weapon(pl_info, nullptr, Primary_weapon, 0); select_primary_weapon(pl_info, nullptr, Primary_weapon, 0);
select_secondary_weapon(nullptr, Secondary_weapon, 0); select_secondary_weapon(pl_info, nullptr, Secondary_weapon, 0);
// Restore the difficulty level // Restore the difficulty level
Difficulty_level = PHYSFSX_readSXE32(fp, swap); Difficulty_level = PHYSFSX_readSXE32(fp, swap);

View file

@ -356,7 +356,7 @@ public:
const weapon_index_type desired_weapon = static_cast<weapon_index_type>(desired_weapon_idx); const weapon_index_type desired_weapon = static_cast<weapon_index_type>(desired_weapon_idx);
if (!player_has_secondary_weapon(pl_info, desired_weapon).has_all()) if (!player_has_secondary_weapon(pl_info, desired_weapon).has_all())
return false; return false;
select_secondary_weapon(SECONDARY_WEAPON_NAMES(desired_weapon), desired_weapon, 1); select_secondary_weapon(pl_info, SECONDARY_WEAPON_NAMES(desired_weapon), desired_weapon, 1);
return true; return true;
} }
static void abandon_auto_select() static void abandon_auto_select()
@ -478,20 +478,16 @@ void select_primary_weapon(player_info &player_info, const char *const weapon_na
} }
} }
}
namespace dsx { void select_secondary_weapon(player_info &player_info, const char *const weapon_name, const uint_fast32_t weapon_num, const int wait_for_rearm)
void select_secondary_weapon(const char *const weapon_name, const uint_fast32_t weapon_num, const int wait_for_rearm)
{ {
if (Newdemo_state==ND_STATE_RECORDING ) if (Newdemo_state==ND_STATE_RECORDING )
newdemo_record_player_weapon(1, weapon_num); newdemo_record_player_weapon(1, weapon_num);
{ {
auto &plrobj = get_local_plrobj();
auto &player_info = plrobj.ctype.player_info;
auto &Secondary_weapon = player_info.Secondary_weapon; auto &Secondary_weapon = player_info.Secondary_weapon;
if (Secondary_weapon != weapon_num) { if (Secondary_weapon != weapon_num) {
auto &Next_missile_fire_time = plrobj.ctype.player_info.Next_missile_fire_time; auto &Next_missile_fire_time = player_info.Next_missile_fire_time;
if (wait_for_rearm) if (wait_for_rearm)
{ {
multi_digi_play_sample_once(SOUND_GOOD_SELECTION_SECONDARY, F1_0); multi_digi_play_sample_once(SOUND_GOOD_SELECTION_SECONDARY, F1_0);
@ -510,7 +506,7 @@ void select_secondary_weapon(const char *const weapon_name, const uint_fast32_t
Secondary_weapon = static_cast<secondary_weapon_index_t>(weapon_num); Secondary_weapon = static_cast<secondary_weapon_index_t>(weapon_num);
#if defined(DXX_BUILD_DESCENT_II) #if defined(DXX_BUILD_DESCENT_II)
//save flag for whether was super version //save flag for whether was super version
auto &Secondary_last_was_super = plrobj.ctype.player_info.Secondary_last_was_super; auto &Secondary_last_was_super = player_info.Secondary_last_was_super;
Secondary_last_was_super[weapon_num % SUPER_WEAPON] = (weapon_num >= SUPER_WEAPON); Secondary_last_was_super[weapon_num % SUPER_WEAPON] = (weapon_num >= SUPER_WEAPON);
#endif #endif
} }
@ -685,7 +681,7 @@ void do_secondary_weapon_select(player_info &player_info, uint_fast32_t weapon_n
//now actually select the weapon //now actually select the weapon
#endif #endif
select_secondary_weapon(weapon_name, weapon_num, 1); select_secondary_weapon(player_info, weapon_name, weapon_num, 1);
} }
} }
@ -745,7 +741,7 @@ void delayed_autoselect(player_info &player_info)
if (delayed_secondary != secondary_weapon) if (delayed_secondary != secondary_weapon)
{ {
if (player_has_secondary_weapon(player_info, delayed_secondary).has_all()) if (player_has_secondary_weapon(player_info, delayed_secondary).has_all())
select_secondary_weapon(nullptr, delayed_secondary, 1); select_secondary_weapon(player_info, nullptr, delayed_secondary, 1);
else else
Secondary_weapon.set_delayed(secondary_weapon); Secondary_weapon.set_delayed(secondary_weapon);
} }
@ -814,7 +810,7 @@ int pick_up_secondary(player_info &player_info, int weapon_index,int count)
} }
} }
else if (want_switch()) else if (want_switch())
select_secondary_weapon(nullptr, weapon_index, 1); select_secondary_weapon(player_info, nullptr, weapon_index, 1);
#if defined(DXX_BUILD_DESCENT_II) #if defined(DXX_BUILD_DESCENT_II)
//if it's a proxbomb or smart mine, //if it's a proxbomb or smart mine,
//we want to do a mini-auto-selection that applies to the drop bomb key //we want to do a mini-auto-selection that applies to the drop bomb key