#pragma once #include #include #include #include #include #include #include namespace game { struct VehicleWheelTuningContext { bool front; std::string modelname; float radius; float z_offset; float friction; float suspension_stiffness; float suspension_max_force; float suspension_rest_length; float suspension_travel; float roll_influence; float steering_factor; float braking_factor; float engine_factor; }; struct VehicleTuningContext { std::array colors; float mass; float engine_force; float braking_force; float health; float steering; std::vector wheels; }; using VehicleTuningFunction = std::function; struct VehicleTuningPart { std::string id; std::string displayname; uint32_t price; bool stock; std::vector funcs; }; struct VehicleTuningGroup { std::string id; std::string displayname; std::map parts; }; struct VehicleTuningList { std::vector default_funcs; std::vector groups; static std::unique_ptr LoadFromFile(const std::string& filename); }; struct VehicleTuning { std::string model; std::map parts; // group : part }; }