#pragma once

#include <optional>

#include "adapters/eft/player/PlayerRuntimeService.h"
#include "adapters/eft/runtime/EftGameContext.h"
#include "features/player/IPlayerGateway.h"

namespace ta::adapters::eft::player
{
class EftPlayerGateway final : public ta::features::player::IPlayerGateway
{
public:
    explicit EftPlayerGateway(ta::adapters::eft::runtime::EftGameContext& context) noexcept
        : context_(context) {}
    void game_tick(const ta::features::player::PlayerSettings& settings,
                   std::optional<ta::features::player::PlayerCommand> command) override;

private:
    ta::adapters::eft::runtime::EftGameContext& context_;
    ta::adapters::eft::player::runtime::PlayerRuntimeService runtime_service_;
};
}
