//
// Created by Dan Crosby on 3/14/20.
//

#ifndef EAGLE0_DEFENSIVEAMBUSHACTION_HPP
#define EAGLE0_DEFENSIVEAMBUSHACTION_HPP

#include "src/main/cpp/net/eagle0/shardok/library/ShardokAction.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/util/CombatUtils.hpp"

namespace shardok {
class DefensiveAmbushAction : public ShardokAction {
private:
    const UnitId ambusherId;
    const UnitId moverId;
    double ambusherRoll;
    const SettingsGetter settings;

protected:
    auto InternalExecute(
            const GameStateW& currentState,
            const std::shared_ptr<RandomGenerator>& generator) const
            -> vector<ActionResult> override;

public:
    DefensiveAmbushAction(
            UnitId ambusherId,
            UnitId moverId,
            double ambusherRoll,
            const SettingsGetter& settings);
};
}  // namespace shardok

#endif  // EAGLE0_DEFENSIVEAMBUSHACTION_HPP
