#pragma once #include "Action.h" #include "actions/expression/ActionExpression.h" #include "actions/expression/Value.h" namespace actions { struct ActionParameter { SCP_string name; expression::ValueType type; }; class ActionDefinition { public: ActionDefinition(SCP_string name, SCP_vector parameters); virtual ~ActionDefinition(); const SCP_string& getName() const; const SCP_vector& getParameters() const; virtual flagset getRequiredContext() const = 0; virtual std::unique_ptr createAction( const SCP_unordered_map& parameterExpressions) const = 0; private: SCP_string m_name; SCP_vector m_parameters; }; } // namespace actions