diff --git a/src/backend/looped/vehicle/vehicle_abilities.cpp b/src/backend/looped/vehicle/vehicle_abilities.cpp index 4cca42b7..ed1a41b0 100644 --- a/src/backend/looped/vehicle/vehicle_abilities.cpp +++ b/src/backend/looped/vehicle/vehicle_abilities.cpp @@ -14,17 +14,18 @@ namespace big class vehicle_ability_helper { private: - static constexpr std::array m_abilities = { + static constexpr std::array m_abilities = { CVehicleModelInfoFlags::JUMPING_CAR, CVehicleModelInfoFlags::HAS_ROCKET_BOOST, CVehicleModelInfoFlags::HAS_PARACHUTE, CVehicleModelInfoFlags::RAMP, + CVehicleModelInfoFlags::HAS_GLIDER }; private: std::unordered_set m_stock_abilities; CVehicle* m_vehicle = nullptr; - bool m_original_abilities[4] = {}; + bool m_original_abilities[5] = {}; public: vehicle_ability_helper() = default; @@ -34,7 +35,7 @@ namespace big return; m_vehicle = vehicle; - for (int i = 0; i < 4; i++) + for (int i = 0; i < 5; i++) m_original_abilities[i] = has_ability(m_abilities.at(i)); for (const auto ability : m_abilities) @@ -77,7 +78,7 @@ namespace big { if (m_vehicle && m_vehicle->m_model_info) { - for (int i = 0; i < 4; i++) + for (int i = 0; i < 5; i++) toggle_ability(m_abilities.at(i), m_original_abilities[i]); } } @@ -128,6 +129,8 @@ namespace big m_vehicle_ability_helper.toggle_ability(CVehicleModelInfoFlags::HAS_ROCKET_BOOST, g.vehicle.abilities.rocket); m_vehicle_ability_helper.toggle_ability(CVehicleModelInfoFlags::HAS_PARACHUTE, g.vehicle.abilities.parachute); m_vehicle_ability_helper.toggle_ability(CVehicleModelInfoFlags::RAMP, g.vehicle.abilities.ramp); + if (VEHICLE::GET_VEHICLE_CLASS(self::veh) == 8 || VEHICLE::GET_VEHICLE_CLASS(self::veh) == 13 /*Motorcycles & Bikes*/) + m_vehicle_ability_helper.toggle_ability(CVehicleModelInfoFlags::HAS_GLIDER, g.vehicle.abilities.glider); } virtual void on_disable() override @@ -155,6 +158,7 @@ namespace big g.vehicle.abilities.rocket = m_vehicle_ability_helper.get_ability_default(CVehicleModelInfoFlags::HAS_ROCKET_BOOST); g.vehicle.abilities.parachute = m_vehicle_ability_helper.get_ability_default(CVehicleModelInfoFlags::HAS_PARACHUTE); g.vehicle.abilities.ramp = m_vehicle_ability_helper.get_ability_default(CVehicleModelInfoFlags::RAMP); + g.vehicle.abilities.glider = m_vehicle_ability_helper.get_ability_default(CVehicleModelInfoFlags::HAS_GLIDER); } }; @@ -164,4 +168,5 @@ namespace big bool_command g_rocket_ability("rocketability", "BACKEND_LOOPED_VEHICLE_ABILITY_ROCKET", "BACKEND_LOOPED_VEHICLE_ABILITY_ROCKET_DESC", g.vehicle.abilities.rocket); bool_command g_parachute_ability("parachuteability", "BACKEND_LOOPED_VEHICLE_ABILITY_PARACHUTE", "BACKEND_LOOPED_VEHICLE_ABILITY_PARACHUTE_DESC", g.vehicle.abilities.parachute); bool_command g_ramp_ability("rampability", "BACKEND_LOOPED_VEHICLE_ABILITY_RAMP", "BACKEND_LOOPED_VEHICLE_ABILITY_RAMP_DESC", g.vehicle.abilities.ramp); + bool_command g_glider_ability("gliderability", "BACKEND_LOOPED_VEHICLE_ABILITY_GLIDER", "BACKEND_LOOPED_VEHICLE_ABILITY_GLIDER_DESC", g.vehicle.abilities.glider); } \ No newline at end of file diff --git a/src/core/settings.hpp b/src/core/settings.hpp index 99c2f904..653f8273 100644 --- a/src/core/settings.hpp +++ b/src/core/settings.hpp @@ -775,6 +775,7 @@ namespace big bool rocket = false; bool parachute = false; bool ramp = false; + bool glider = false; NLOHMANN_DEFINE_TYPE_INTRUSIVE(abilities, enabled) } abilities{}; diff --git a/src/views/vehicle/view_fun_vehicle.cpp b/src/views/vehicle/view_fun_vehicle.cpp index 5793cee1..1518a02c 100644 --- a/src/views/vehicle/view_fun_vehicle.cpp +++ b/src/views/vehicle/view_fun_vehicle.cpp @@ -230,6 +230,7 @@ namespace big components::command_checkbox<"jumpability">(); components::command_checkbox<"parachuteability">(); components::command_checkbox<"rampability">(); + components::command_checkbox<"gliderability">(); } } ImGui::SeparatorText("VEHICLE_FLY"_T.data());