aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/script.hpp
blob: 8008dedd93659ac3a233db92f89ba33f72b712f2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once

#include <sol/sol.hpp>
#include <string>

// Thin wrapper around a sol2 Lua state. This is the engine's scripting seam:
// data files (materials, later weapons/devices) are Lua, loaded on top of each
// other so mods can extend or override the base tables.
class ScriptEngine {
public:
    ScriptEngine();

    sol::state& lua() { return lua_; }

    // Run a Lua file in the shared state. Returns false and logs on error
    // (errors are caught, never thrown out, so a bad mod can't crash the game).
    bool run_file(const std::string& path);

private:
    sol::state lua_;
};