//
//  FleeCommandFactory.hpp
//  eagle0
//
//  Created by Dan Crosby on 12/30/19.
//  Copyright © 2019 none. All rights reserved.
//

#ifndef FleeCommandFactory_hpp
#define FleeCommandFactory_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/settings/GameSettings.hpp"

namespace shardok {
class FleeCommandFactory : public CommandFactory {
private:
    const SettingsGetter settings;

public:
    explicit FleeCommandFactory(const SettingsGetter &getter);

    void AddAvailableFleeCommands(
            CommandList &commands,
            const Unit *unit,
            const Units *allUnits,
            const HexMap *map,
            const vector<PlayerId> &allyPids,
            ActionPoints remainingActionPoints) const;

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

    [[nodiscard]] auto IncludeInFollowUps() const -> bool override { return false; }
};
}  // namespace shardok

#endif /* FleeCommandFactory_hpp */
