add contentpacks controls reset

This commit is contained in:
ChancellorIkseew 2024-11-01 17:42:02 +10:00
parent 17655eef45
commit b4d3f9ea15
2 changed files with 16 additions and 8 deletions

View File

@ -112,17 +112,25 @@ static int l_is_pressed(lua::State* L) {
} }
} }
static int l_reset_bindings(lua::State*) { static void resetPackBindings(fs::path& packFolder) {
auto resFolder = engine->getPaths()->getResourcesFolder(); auto configFolder = packFolder/fs::path("config");
auto configFolder = resFolder/fs::path("config");
auto bindsFile = configFolder/fs::path("bindings.toml"); auto bindsFile = configFolder/fs::path("bindings.toml");
if (fs::is_regular_file(bindsFile)) { if (fs::is_regular_file(bindsFile)) {
Events::loadBindings( Events::loadBindings(
bindsFile.u8string(), files::read_string(bindsFile), BindType::REBIND bindsFile.u8string(),
files::read_string(bindsFile),
BindType::REBIND
); );
return 0;
} }
return 1; }
static int l_reset_bindings(lua::State*) {
auto resFolder = engine->getPaths()->getResourcesFolder();
resetPackBindings(resFolder);
for (auto& pack : engine->getContentPacks()) {
resetPackBindings(pack.folder);
}
return 0;
} }
const luaL_Reg inputlib[] = { const luaL_Reg inputlib[] = {

View File

@ -108,7 +108,7 @@ void Events::pollEvents() {
Binding& Events::getBinding(const std::string& name) { Binding& Events::getBinding(const std::string& name) {
const auto found = bindings.find(name); const auto found = bindings.find(name);
if (found == bindings.end()) { if (found == bindings.end()) {
throw std::runtime_error("binding '" + name + "' does not exists"); throw std::runtime_error("binding '" + name + "' does not exist");
} }
return found->second; return found->second;
} }
@ -128,7 +128,7 @@ void Events::bind(const std::string& name, inputtype type, int code) {
void Events::rebind(const std::string& name, inputtype type, int code) { void Events::rebind(const std::string& name, inputtype type, int code) {
const auto& found = bindings.find(name); const auto& found = bindings.find(name);
if (found == bindings.end()) { if (found == bindings.end()) {
throw std::runtime_error("binding '" + name + "' does not exists"); throw std::runtime_error("binding '" + name + "' does not exist");
} }
bindings[name] = Binding(type, code); bindings[name] = Binding(type, code);
} }