fekalnigtacko/src/game/tuning_world.hpp
2026-05-22 22:36:31 +02:00

56 lines
1.2 KiB
C++

#pragma once
#include "enterable_world.hpp"
#include "drivable_vehicle.hpp"
namespace game
{
class Game;
class RemoteMenu;
class TuningWorld : public EnterableWorld
{
public:
using Super = EnterableWorld;
TuningWorld(Game& game, EnterableWorld& exit_world, const glm::vec3& exit_pos, float exit_yaw, std::string mapname);
virtual void PlayerInput(Player& player, PlayerInputType type, bool enabled);
virtual void OnVehicleJoined(DrivableVehicle& vehicle);
virtual void OnPlayerLeaving(Player& player);
void SetOnExit(std::function<void()> cb) { exit_cb_ = cb; }
bool IsOccupied() const { return player_ != nullptr; }
const std::string& GetOccupantName() const;
private:
void Setup();
void AddTuningGroupSelect(game::RemoteMenu& menu, const VehicleTuningGroup& group);
void DisplayTuningMenu();
void Reset();
private:
Game& game_;
EnterableWorld& exit_world_;
glm::vec3 exit_pos_;
float exit_yaw_;
// active player
Player* player_ = nullptr;
DrivableVehicle* vehicle_ = nullptr;
const VehicleTuningList* tuning_list_ = nullptr;
game::RemoteMenu* menu_ = nullptr;
VehicleTuning tuning_;
std::function<void()> exit_cb_;
};
}