Line data Source code
1 : #include "Weapon.hpp"
2 :
3 : #include <algorithm>
4 : #include <utility>
5 :
6 : namespace Soldank
7 : {
8 2 : Weapon::Weapon(const WeaponParameters& weapon_parameters)
9 2 : : weapon_parameters_(weapon_parameters)
10 2 : , ammo_count_(weapon_parameters.ammo)
11 2 : , fire_interval_prev_(weapon_parameters.fire_interval)
12 2 : , fire_interval_count_(weapon_parameters.fire_interval)
13 2 : , fire_interval_real_((float)weapon_parameters.fire_interval)
14 2 : , start_up_time_count_(weapon_parameters.start_up_time)
15 2 : , reload_time_prev_(weapon_parameters.reload_time)
16 2 : , reload_time_count_(weapon_parameters.reload_time)
17 2 : , reload_time_real_((float)weapon_parameters.reload_time)
18 : {
19 :
20 2 : if (weapon_parameters.clip_reload) {
21 2 : clip_out_time_ = (std::uint16_t)((float)weapon_parameters.reload_time * 0.8);
22 2 : clip_in_time_ = (std::uint16_t)((float)weapon_parameters.reload_time * 0.3);
23 : } else {
24 0 : clip_out_time_ = 0;
25 0 : clip_in_time_ = 0;
26 : }
27 :
28 2 : if (weapon_parameters.kind == WeaponType::M79) {
29 0 : ammo_count_ = 0;
30 : }
31 2 : }
32 :
33 0 : bool Weapon::IsAny(const std::vector<WeaponType>& weapons) const
34 : {
35 0 : return std::ranges::any_of(weapons, [this](WeaponType weapon_type) {
36 0 : return weapon_type == GetWeaponParameters().kind;
37 0 : });
38 : }
39 :
40 0 : const WeaponParameters& Weapon::GetWeaponParameters() const
41 : {
42 0 : return weapon_parameters_;
43 : }
44 :
45 : } // namespace Soldank
|