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