Use uint8 for secondary ammo counts
Maximum non-cheating is 40 missiles, which fits in a signed 8 bit value. Maximum cheating is 200 missiles, which fits in an unsigned 8 bit value.
This commit is contained in:
parent
9ba1369d58
commit
9df40a86cb
|
@ -91,7 +91,7 @@ extern const array<powerup_type_t, MAX_PRIMARY_WEAPONS> Primary_weapon_to_poweru
|
|||
extern const array<ubyte, MAX_SECONDARY_WEAPONS> Secondary_weapon_to_weapon_info;
|
||||
//for each Secondary weapon, what kind of powerup gives weapon
|
||||
extern const array<powerup_type_t, MAX_SECONDARY_WEAPONS> Secondary_weapon_to_powerup;
|
||||
extern const array<ubyte, MAX_SECONDARY_WEAPONS> Secondary_ammo_max;
|
||||
extern const array<uint8_t, MAX_SECONDARY_WEAPONS> Secondary_ammo_max;
|
||||
/*
|
||||
* reads n weapon_info structs from a PHYSFS_file
|
||||
*/
|
||||
|
|
|
@ -396,7 +396,7 @@ public:
|
|||
m_max[type] = value;
|
||||
}
|
||||
void cap_laser_level(stored_laser_level &player_level) const;
|
||||
void cap_secondary_ammo(powerup_type_t type, uint16_t &player_ammo) const;
|
||||
void cap_secondary_ammo(powerup_type_t type, uint8_t &player_ammo) const;
|
||||
void cap_flag(uint32_t &player_flags, uint32_t powerup_flag, powerup_type_t idx) const;
|
||||
bool can_add_mapped_powerup(const powerup_type_t type) const
|
||||
{
|
||||
|
|
|
@ -69,7 +69,7 @@ struct player : public prohibit_void_ptr<player>
|
|||
ushort secondary_weapon_flags; // bit set indicates the player has this weapon.
|
||||
#endif
|
||||
ushort vulcan_ammo;
|
||||
array<ushort, MAX_SECONDARY_WEAPONS> secondary_ammo; // How much ammo of each type.
|
||||
array<uint8_t, MAX_SECONDARY_WEAPONS> secondary_ammo; // How much ammo of each type.
|
||||
|
||||
// Statistics...
|
||||
int last_score; // Score at beginning of current level.
|
||||
|
|
|
@ -1967,7 +1967,7 @@ void drop_player_eggs(const vobjptridx_t playerobj)
|
|||
|
||||
int max_count;
|
||||
|
||||
max_count = min(Players[pnum].secondary_ammo[PROXIMITY_INDEX], (unsigned short) 12);
|
||||
max_count = min(Players[pnum].secondary_ammo[PROXIMITY_INDEX], static_cast<uint8_t>(12));
|
||||
for (int i=0; i<max_count; i++)
|
||||
call_object_create_egg(playerobj, 1, OBJ_POWERUP, POW_HOARD_ORB);
|
||||
}
|
||||
|
|
|
@ -243,7 +243,7 @@ void powerup_cap_state::cap_laser_level(stored_laser_level &player_level) const
|
|||
cap_laser_powerup_level(player_level, POW_LASER, 0);
|
||||
}
|
||||
|
||||
void powerup_cap_state::cap_secondary_ammo(powerup_type_t type, uint16_t &player_ammo) const
|
||||
void powerup_cap_state::cap_secondary_ammo(powerup_type_t type, uint8_t &player_ammo) const
|
||||
{
|
||||
const auto idx = map_powerup_type_to_index(type);
|
||||
const uint_fast32_t current_on_player = player_ammo;
|
||||
|
@ -251,7 +251,7 @@ void powerup_cap_state::cap_secondary_ammo(powerup_type_t type, uint16_t &player
|
|||
const uint_fast32_t maximum_allowed = get_max(idx);
|
||||
if (current_on_player + current_in_mine <= maximum_allowed)
|
||||
return;
|
||||
const auto capped = static_cast<uint16_t>(current_in_mine < maximum_allowed ? maximum_allowed - current_in_mine : 0);
|
||||
const auto capped = static_cast<uint8_t>(current_in_mine < maximum_allowed ? maximum_allowed - current_in_mine : 0);
|
||||
player_ammo = capped;
|
||||
con_printf(CON_VERBOSE, "Capping secondary %u due to powerup cap: current=%u max=%u was=%u now=%hu", idx, get_current(idx), get_max(idx), static_cast<unsigned>(current_on_player), capped);
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ const array<ubyte, MAX_SECONDARY_WEAPONS> Secondary_weapon_to_weapon_info{{
|
|||
const array<ubyte, MAX_SECONDARY_WEAPONS> Secondary_weapon_to_gun_num{{4,4,7,7,7,4,4,7,4,7}};
|
||||
#endif
|
||||
|
||||
const array<ubyte, MAX_SECONDARY_WEAPONS> Secondary_ammo_max{{20, 10, 10, 5, 5,
|
||||
const array<uint8_t, MAX_SECONDARY_WEAPONS> Secondary_ammo_max{{20, 10, 10, 5, 5,
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
20, 20, 15, 10, 10
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue