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

#ifndef FireOutAction_hpp
#define FireOutAction_hpp

#include "src/main/cpp/net/eagle0/shardok/library/ShardokAction.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/map/Coordinates.hpp"
#include "src/main/flatbuffer/net/eagle0/shardok/storage/tile_modifier.hpp"

namespace shardok {

class FireOutAction : public ShardokAction {
private:
    auto InternalExecute(
            const GameStateW& currentState,
            const std::shared_ptr<RandomGenerator>& generator) const
            -> vector<ActionResult> override;

    const Coords coords;
    const net::eagle0::shardok::storage::fb::TileModifier existingModifier;
    const PercentileRollOdds fireOutOdds;

public:
    FireOutAction(
            Coords coords,
            net::eagle0::shardok::storage::fb::TileModifier existingModifier,
            PercentileRollOdds odds);

    auto GetFireOutOdds() const -> const PercentileRollOdds&;
};
}  // namespace shardok

#endif /* FireOutAction_hpp */
