1 #include "lua/internal.hpp"
2 #include "core/instance.hpp"
3 #include "core/framerate.hpp"
4 #include "library/settingvar.hpp"
9 int ss_set(lua::state
& L
, lua::parameters
& P
)
11 std::string name
, value
;
16 CORE().setcache
->set(name
, value
);
17 } catch(std::exception
& e
) {
19 L
.pushstring(e
.what());
26 int ss_get(lua::state
& L
, lua::parameters
& P
)
33 std::string value
= CORE().setcache
->get(name
);
34 L
.pushlstring(value
.c_str(), value
.length());
36 } catch(std::exception
& e
) {
38 L
.pushstring(e
.what());
43 int ss_getlist(lua::state
& L
, lua::parameters
& P
)
46 auto& settings
= *CORE().settings
;
47 auto set
= settings
.get_settings_set();
49 auto& setting
= settings
[i
];
50 L
.pushlstring(setting
.get_iname());
51 L
.pushlstring(setting
.str());
57 int ss_getspeed(lua::state
& L
, lua::parameters
& P
)
59 double spd
= CORE().framerate
->get_speed_multiplier();
60 if(spd
== std::numeric_limits
<double>::infinity())
61 L
.pushstring("turbo");
67 int ss_setspeed(lua::state
& L
, lua::parameters
& P
)
71 bool is_string
= false;
79 if(special
== "turbo")
80 CORE().framerate
->set_speed_multiplier(std::numeric_limits
<double>::infinity());
81 else if(!is_string
&& spd
> 0)
82 CORE().framerate
->set_speed_multiplier(spd
);
84 throw std::runtime_error("Unknown special speed");
88 lua::functions
LUA_settings_fns(lua_func_misc
, "settings", {
91 {"get_all", ss_getlist
},
92 {"get_speed", ss_getspeed
},
93 {"set_speed", ss_setspeed
},