Factor out single-player pick_up_energy fallback

This commit is contained in:
Kp 2016-04-06 03:34:14 +00:00
parent 89eb173013
commit bb878e46ba

View file

@ -189,21 +189,24 @@ void do_megawow_powerup(int quantity)
}
//#endif
namespace dsx {
static int pick_up_energy(void)
{
int used=0;
if (get_local_player_energy() < MAX_ENERGY) {
auto &energy = get_local_player_energy();
if (energy < MAX_ENERGY) {
fix boost;
boost = 3*F1_0 + 3*F1_0*(NDL - Difficulty_level);
#if defined(DXX_BUILD_DESCENT_II)
if (Difficulty_level == 0)
boost += boost/2;
#endif
get_local_player_energy() += boost;
if (get_local_player_energy() > MAX_ENERGY)
get_local_player_energy() = MAX_ENERGY;
powerup_basic(15,15,7, ENERGY_SCORE, "%s %s %d",TXT_ENERGY,TXT_BOOSTED_TO,f2ir(get_local_player_energy()));
energy += boost;
if (energy > MAX_ENERGY)
energy = MAX_ENERGY;
powerup_basic(15, 15, 7, ENERGY_SCORE, "%s %s %d", TXT_ENERGY, TXT_BOOSTED_TO, f2ir(energy));
used=1;
} else
HUD_init_message(HM_DEFAULT|HM_REDUNDANT|HM_MAYDUPL, TXT_MAXED_OUT,TXT_ENERGY);
@ -211,6 +214,16 @@ static int pick_up_energy(void)
return used;
}
static int pick_up_primary_or_energy(int weapon_index)
{
const auto used = pick_up_primary(weapon_index);
if (used || (Game_mode & GM_MULTI))
return used;
return pick_up_energy();
}
}
static int pick_up_vulcan_ammo(void)
{
int used=0;
@ -424,32 +437,22 @@ int do_powerup(const vobjptridx_t obj)
#endif
case POW_SPREADFIRE_WEAPON:
used = pick_up_primary(primary_weapon_index_t::SPREADFIRE_INDEX);
if (!used && !(Game_mode & GM_MULTI) )
used = pick_up_energy();
used = pick_up_primary_or_energy(primary_weapon_index_t::SPREADFIRE_INDEX);
break;
case POW_PLASMA_WEAPON:
used = pick_up_primary(primary_weapon_index_t::PLASMA_INDEX);
if (!used && !(Game_mode & GM_MULTI) )
used = pick_up_energy();
used = pick_up_primary_or_energy(primary_weapon_index_t::PLASMA_INDEX);
break;
case POW_FUSION_WEAPON:
used = pick_up_primary(primary_weapon_index_t::FUSION_INDEX);
if (!used && !(Game_mode & GM_MULTI) )
used = pick_up_energy();
used = pick_up_primary_or_energy(primary_weapon_index_t::FUSION_INDEX);
break;
#if defined(DXX_BUILD_DESCENT_II)
case POW_HELIX_WEAPON:
used = pick_up_primary(primary_weapon_index_t::HELIX_INDEX);
if (!used && !(Game_mode & GM_MULTI) )
used = pick_up_energy();
used = pick_up_primary_or_energy(primary_weapon_index_t::HELIX_INDEX);
break;
case POW_PHOENIX_WEAPON:
used = pick_up_primary(primary_weapon_index_t::PHOENIX_INDEX);
if (!used && !(Game_mode & GM_MULTI) )
used = pick_up_energy();
used = pick_up_primary_or_energy(primary_weapon_index_t::PHOENIX_INDEX);
break;
case POW_OMEGA_WEAPON: