Pass context to spit_powerup

This commit is contained in:
Kp 2022-07-23 20:58:10 +00:00
parent b61add4765
commit 801c76cbd2
3 changed files with 8 additions and 10 deletions

View file

@ -202,7 +202,7 @@ int pick_up_secondary(player_info &, secondary_weapon_index_t weapon_index, int
namespace dsx {
int pick_up_vulcan_ammo(player_info &player_info, uint_fast32_t ammo_count, bool change_weapon = true);
//this function is for when the player intentionally drops a powerup
imobjptridx_t spit_powerup(const d_vclip_array &Vclip, const object_base &spitter, unsigned id, unsigned seed);
imobjptridx_t spit_powerup(d_level_unique_object_state &LevelUniqueObjectState, const d_level_shared_segment_state &LevelSharedSegmentState, d_level_unique_segment_state &LevelUniqueSegmentState, const d_vclip_array &Vclip, const object_base &spitter, unsigned id, unsigned seed);
#if defined(DXX_BUILD_DESCENT_II)
void attempt_to_steal_item(vmobjptridx_t objp, const robot_info &, object &playerobjp);

View file

@ -3810,7 +3810,7 @@ static void multi_do_drop_weapon(fvmobjptr &vmobjptr, const playernum_t pnum, co
remote_objnum = GET_INTEL_SHORT(buf + 2);
ammo = GET_INTEL_SHORT(buf + 4);
seed = GET_INTEL_INT(buf + 6);
const auto &&objnum = spit_powerup(Vclip, vmobjptr(vcplayerptr(pnum)->objnum), powerup_id, seed);
const auto &&objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, vmobjptr(vcplayerptr(pnum)->objnum), powerup_id, seed);
if (objnum == object_none)
return;
objnum->ctype.powerup_info.count = ammo;
@ -4461,7 +4461,7 @@ static void DropOrb ()
seed = d_rand();
const auto &&objnum = spit_powerup(Vclip, vmobjptr(ConsoleObject), POW_HOARD_ORB, seed);
const auto &&objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, *ConsoleObject, POW_HOARD_ORB, seed);
if (objnum == object_none)
return;
@ -4502,7 +4502,7 @@ void DropFlag ()
return;
}
seed = d_rand();
const auto &&objnum = spit_powerup(Vclip, vmobjptr(ConsoleObject), get_team(Player_num) == TEAM_RED ? POW_FLAG_BLUE : POW_FLAG_RED, seed);
const auto &&objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, *ConsoleObject, get_team(Player_num) == TEAM_RED ? POW_FLAG_BLUE : POW_FLAG_RED, seed);
if (objnum == object_none)
{
HUD_init_message_literal(HM_MULTI, "Failed to drop flag!");
@ -4547,7 +4547,7 @@ static void multi_do_drop_flag (const playernum_t pnum, const ubyte *buf)
const auto &&objp = vmobjptr(vcplayerptr(pnum)->objnum);
const imobjidx_t objnum = spit_powerup(Vclip, objp, powerup_id, seed);
const imobjidx_t objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, objp, powerup_id, seed);
if (objnum == object_none)
return;

View file

@ -1452,7 +1452,7 @@ void process_super_mines_frame(void)
//this function is for when the player intentionally drops a powerup
//this function is based on drop_powerup()
imobjptridx_t spit_powerup(const d_vclip_array &Vclip, const object_base &spitter, const unsigned id, const unsigned seed)
imobjptridx_t spit_powerup(d_level_unique_object_state &LevelUniqueObjectState, const d_level_shared_segment_state &LevelSharedSegmentState, d_level_unique_segment_state &LevelUniqueSegmentState, const d_vclip_array &Vclip, const object_base &spitter, const unsigned id, const unsigned seed)
{
d_srand(seed);
@ -1519,7 +1519,6 @@ imobjptridx_t spit_powerup(const d_vclip_array &Vclip, const object_base &spitte
void DropCurrentWeapon (player_info &player_info)
{
auto &Objects = LevelUniqueObjectState.Objects;
auto &vmobjptr = Objects.vmptr;
if (LevelUniqueObjectState.num_objects >= Objects.size())
return;
@ -1571,7 +1570,7 @@ void DropCurrentWeapon (player_info &player_info)
}
const auto seed = d_rand();
const auto objnum = spit_powerup(Vclip, vmobjptr(ConsoleObject), drop_type, seed);
const auto objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, *ConsoleObject, drop_type, seed);
if (objnum == object_none)
{
HUD_init_message(HM_DEFAULT, "Failed to drop %s!", weapon_name);
@ -1625,7 +1624,6 @@ void DropCurrentWeapon (player_info &player_info)
void DropSecondaryWeapon (player_info &player_info)
{
auto &Objects = LevelUniqueObjectState.Objects;
auto &vmobjptr = Objects.vmptr;
int seed;
ushort sub_ammo=0;
@ -1726,7 +1724,7 @@ void DropSecondaryWeapon (player_info &player_info)
seed = d_rand();
auto objnum = spit_powerup(Vclip, vmobjptr(ConsoleObject), weapon_drop_id, seed);
auto objnum = spit_powerup(LevelUniqueObjectState, LevelSharedSegmentState, LevelUniqueSegmentState, Vclip, *ConsoleObject, weapon_drop_id, seed);
const auto weapon_name = SECONDARY_WEAPON_NAMES(Secondary_weapon);
if (objnum == object_none)