1 #pragma once 2 3 #include "common.h" 4 5 namespace actions { 6 7 enum class ActionResult 8 { 9 Finished, 10 Errored, 11 Wait 12 }; 13 14 class Action { 15 public: 16 virtual ~Action() = 0; 17 18 virtual ActionResult execute(ProgramLocals& locals) const = 0; 19 20 virtual std::unique_ptr<Action> clone() const = 0; 21 }; 22 23 } // namespace actions 24