yupplemayham/YuppleMayham/include/utility/script.h
2025-01-28 16:07:58 -05:00

49 lines
No EOL
1.1 KiB
C++

#ifndef _H_SCRIPT_H
#define _H_SCRIPT_H
#define SOL_ALL_SAFETIES_ON 1
#include <sol/sol.hpp>
#include <chrono>
#include <memory>
class Script {
public:
sol::state lua;
Script(const std::string& path);
virtual ~Script() {};
private:
bool loadScript(const std::string& path) {
auto result = lua.script_file(path);
if (!result.valid())
{
sol::error err = result;
std::cerr << "Failed to load script ( " << path << " ) Error: " << err.what() << std::endl;
}
return result.valid();
}
void registerGlobalUserTypes();
void performIncrementalGC();
std::chrono::high_resolution_clock::time_point lastGCTime = std::chrono::high_resolution_clock::now();
std::chrono::milliseconds gcInterval = std::chrono::milliseconds(16);
const int gcStepSize = 500;
};
class AIScript : public Script {
public:
AIScript(const std::string& path) : Script(path) { registerUserTypes(); }
private:
void registerUserTypes() ;
};
class WeaponScript : public Script {
public:
WeaponScript(const std::string& path) : Script(path) { registerUserTypes(); }
private:
void registerUserTypes() ;
};
#endif // _H_SCRIPT_H