//
// Created by sebastian on 30.07.26.
//

#ifndef COLORRACE_GAMESCENE_H
#define COLORRACE_GAMESCENE_H
#include "layer/Scene.h"
#include "ludo/LudoGameMode.h"

#include "renderer/entities/PointLight.h"


class GameScene : public engine::Scene {
public:
    GameScene(engine::InputContextStack& inputContext, engine::Keyboard& keyboard, engine::Mouse& mouse);
    void onEnter() override;
    void onExit() override;
    std::vector<engine::AssetRequest> getRequiredAssets() const override;
    engine::EventBus<ludo::LudoEvent>& getEventBus() { return m_eventBus; } //Todo: Maybe introduce virtual base Event class to move this into engine
private:
    std::shared_ptr<engine::Camera> m_camera;
    std::shared_ptr<engine::PointLight> m_pointLight;
    std::shared_ptr<ludo::LudoGameMode> m_gameMode;

    engine::EventBus<ludo::LudoEvent> m_eventBus;
};


#endif //COLORRACE_GAMESCENE_H
