//
// Created by sebastian on 05.08.26.
//

#ifndef COLORRACE_LUDOGAMECONTROLLERCONTEXT_H
#define COLORRACE_LUDOGAMECONTROLLERCONTEXT_H
#include <memory>

#include "core/animation/events/AnimationMarkerEvent.h"
#include "core/audio/SoundBuffer.h"
#include "ecs/EntityRegistry.h"
#include "ludo/BoardLayout.h"
#include "ludo/LudoGameMode.h"
#include "renderer/entities/Camera.h"

namespace ludo::GameController {
    struct LudoGameControllerContext {
        std::shared_ptr<LudoGameMode> gameMode;

        engine::EntityRegistry& registry;
        engine::Camera& camera;

        std::shared_ptr<engine::Model> boardModel;

        engine::EventBus<ludo::LudoEvent>& eventBus;
        engine::EventBus<engine::animation::AnimationMarkerEvent>& animationEventBus;

        std::unordered_map<std::string, std::shared_ptr<engine::Model>> pieceModels;

        std::unordered_map<std::string, std::shared_ptr<engine::audio::SoundBuffer>> pieceSounds;
        int localPlayer;
    };
}

#endif //COLORRACE_LUDOGAMECONTROLLERCONTEXT_H
