//
// Created by Claude on 3/14/26.
//

#ifndef EAGLE0_BLOWBRIDGECOMMANDFACTORY_HPP
#define EAGLE0_BLOWBRIDGECOMMANDFACTORY_HPP

#include "src/main/cpp/net/eagle0/shardok/library/ShardokCommand.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/command_factories/CommandFactory.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/map/Coordinates.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/settings/GameSettings.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/unit/Unit.hpp"

namespace shardok {

class BlowBridgeCommandFactory : public CommandFactory {
private:
    const SettingsGetter settings;

public:
    explicit BlowBridgeCommandFactory(const SettingsGetter& getter) : settings(getter){};

    void AddAvailableBlowBridgeCommands(
            CommandList& commands,
            const Unit* unit,
            ActionPoints remainingActionPoints,
            const Coords& position,
            const HexMap* hexMap,
            const Units* units,
            const vector<PlayerId>& allyPids) const;

    void AddAvailableCommands(CommandList& commands, const CommandParams& params) const override;
};

}  // namespace shardok

#endif  // EAGLE0_BLOWBRIDGECOMMANDFACTORY_HPP
