//
//  HolyWaveCommandFactory.hpp
//  eagle0_engine
//
//  Created by Dan Crosby on 1/9/19.
//  Copyright © 2019 none. All rights reserved.
//

#ifndef HolyWaveActionFactory_hpp
#define HolyWaveActionFactory_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"
#include "src/main/cpp/net/eagle0/shardok/library/unit/Unit.hpp"

namespace shardok {

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

public:
    explicit HolyWaveCommandFactory(const SettingsGetter &getter);

    [[nodiscard]] auto MakeHolyWaveAction(PlayerId playerId, UnitId actorId) const -> CommandSPtr;

    void AddAvailableHolyWaveCommands(
            CommandList &commands,
            const Unit *unit,
            ActionPoints remainingActionPoints) const;

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

#endif /* HolyWaveActionFactory_hpp */
