#pragma once #include "game/scripting/array.hpp" #include "game/scripting/execution.hpp" namespace gsc { enum classid { entity, hudelem, pathnode, node, count }; class function_args { public: function_args(std::vector); unsigned int size() const; std::vector get_raw() const; scripting::value_wrap get(const int index) const; scripting::value_wrap operator[](const int index) const { return this->get(index); } private: std::vector values_; }; using builtin_function = void(*)(); using builtin_method = void(*)(game::scr_entref_t); using script_function = std::function; using script_method = std::function; namespace function { void add(const std::string& name, const script_function& func); } namespace method { void add(const std::string& name, const script_method& func); } namespace field { void add(const classid classnum, const std::string& name, const std::function& getter, const std::function& setter); } }