diff --git a/rogueviz/ads/ads-game.cpp b/rogueviz/ads/ads-game.cpp index 4cfc09c8..b3bff05c 100644 --- a/rogueviz/ads/ads-game.cpp +++ b/rogueviz/ads/ads-game.cpp @@ -45,14 +45,12 @@ namespace hr { namespace ads_game { void change_default_key(int key, int val) { - char* t = multi::scfg.keyaction; + char* t = scfg_ads.keyaction; t[key] = val; - #if CAP_CONFIG - set_saver_default(t[key]); - #endif } void set_default_keys() { + clear_config(scfg_ads); change_default_key('s', 16 + 0); change_default_key('a', 16 + 1); change_default_key('w', 16 + 2); @@ -65,6 +63,7 @@ void set_default_keys() { change_default_key('i', 16 + 9); change_default_key('k', 16 + 10); change_default_key('l', 16 + 11); + sconfig_savers(scfg_ads, "ads"); } void restart() { @@ -132,8 +131,6 @@ void run_ads_game() { } void set_config() { - set_default_keys(); - nohelp = true; nomenukey = true; no_find_player = true; @@ -266,5 +263,7 @@ auto hook1= }); #endif +auto hook2 = addHook(hooks_configfile, 100, set_default_keys); + } } diff --git a/rogueviz/ads/control.cpp b/rogueviz/ads/control.cpp index 66096eb8..ebe8c7b0 100644 --- a/rogueviz/ads/control.cpp +++ b/rogueviz/ads/control.cpp @@ -2,6 +2,8 @@ namespace hr { namespace ads_game { +multi::config scfg_ads; + vector move_names = { "acc down", "acc left", "acc up", "acc right", "fire", "pause", "display times", "switch spin", "menu", "[paused] future", "(paused] past", "[paused] move switch" }; void fire() { @@ -80,7 +82,7 @@ void fire() { bool handleKey(int sym, int uni) { if(cmode & sm::NORMAL) { - char* t = multi::scfg.keyaction; + char* t = scfg_ads.keyaction; if(t[sym] >= 16 && t[sym] < 32) return true; if(sym == 'v') pushScreen(game_menu); if(sym == SDLK_ESCAPE) pushScreen(game_menu); @@ -139,7 +141,7 @@ ld read_movement() { } bool ads_turn(int idelta) { - multi::handleInput(idelta); + multi::handleInput(idelta, scfg_ads); ld delta = idelta / 1000.; if(!(cmode & sm::NORMAL)) return false; diff --git a/rogueviz/ads/menu.cpp b/rogueviz/ads/menu.cpp index e3efb12f..78c33e39 100644 --- a/rogueviz/ads/menu.cpp +++ b/rogueviz/ads/menu.cpp @@ -181,7 +181,7 @@ void game_menu() { dialog::add_action([] { current.T = Id; vctrV = Id; }); dialog::addItem("configure keys", 'k'); - dialog::add_action_push(multi::get_key_configurer(1, move_names, "Relative Hell keys")); + dialog::add_action_push(multi::get_key_configurer(1, move_names, "Relative Hell keys", scfg_ads)); #if CAP_AUDIO add_edit(effvolume); diff --git a/rogueviz/bringris.cpp b/rogueviz/bringris.cpp index 7d917137..e26fbf6f 100644 --- a/rogueviz/bringris.cpp +++ b/rogueviz/bringris.cpp @@ -61,6 +61,8 @@ namespace subquotient { namespace bringris { +multi::config scfg_bringris; + struct bgeometry { string name; string cap; @@ -1346,7 +1348,7 @@ void settings_menu() { dialog::addItem("visuals & Virtual Reality", 'v'); dialog::add_action_push(visual_menu); dialog::addItem("configure keys", 'k'); - dialog::add_action_push(multi::get_key_configurer(1, move_names, "Bringris keys")); + dialog::add_action_push(multi::get_key_configurer(1, move_names, "Bringris keys", scfg_bringris)); #if CAP_AUDIO add_edit(effvolume); @@ -1612,7 +1614,7 @@ void run() { explore = false; if(state == tsFalling && !paused) { - multi::handleInput(0); + multi::handleInput(0, scfg_bringris); bool consumed = false; for(int i=0; i= 16 && multi::scfg.keyaction[i] < 32) - change_default_key(i, 0); - + clear_config(scfg_bringris); change_default_key('s', 16 + 0); change_default_key('a', 16 + 1); change_default_key('w', 16 + 2); @@ -2057,6 +2055,7 @@ void default_config() { change_default_key(' ', 16 + 6); change_default_key('\r',16 + 7); change_default_key('p', 16 + 8); + sconfig_savers(scfg_bringris, "bringris"); addsaver(bgeom, "bringris-geometry"); addsaver(use_raycaster, "bringris-ray"); diff --git a/rogueviz/nilrider/nilrider.cpp b/rogueviz/nilrider/nilrider.cpp index 13403d95..a76f9e06 100644 --- a/rogueviz/nilrider/nilrider.cpp +++ b/rogueviz/nilrider/nilrider.cpp @@ -39,6 +39,8 @@ namespace nilrider { +multi::config scfg_nilrider; + /** is the game paused? */ bool paused = false; @@ -83,7 +85,7 @@ void sync_music(eLand l) { bool turn(int delta) { if(planning_mode && !view_replay) return false; - multi::get_actions(); + multi::get_actions(scfg_nilrider); auto& a = multi::actionspressed; auto& la = multi::lactionpressed; @@ -246,7 +248,7 @@ void run() { dialog::add_key_action(PSEUDOKEY_SIM, toggle_replay); dialog::display(); - char* t = multi::scfg.keyaction; + char* t = scfg_nilrider.keyaction; for(int i=1; i<512; i++) { auto& ka = dialog::key_actions; if(t[i] == 16+5) ka[i] = ka[PSEUDOKEY_PAUSE]; @@ -363,7 +365,7 @@ void settings() { dialog::addItem("projection", 'P'); dialog::add_action_push(nil_projection); dialog::addItem("configure keys", 'k'); - dialog::add_action_push(multi::get_key_configurer(1, move_names, "Nilrider keys")); + dialog::add_action_push(multi::get_key_configurer(1, move_names, "Nilrider keys", scfg_nilrider)); #if CAP_AUDIO add_edit(effvolume); @@ -540,17 +542,13 @@ void main_menu() { bool on; void change_default_key(int key, int val) { - char* t = multi::scfg.keyaction; + char* t = scfg_nilrider.keyaction; t[key] = val; - #if CAP_CONFIG - set_saver_default(t[key]); - #endif } void nilrider_keys() { - for(int i=0; i<512; i++) - if(multi::scfg.keyaction[i] >= 16 && multi::scfg.keyaction[i] < 32) - change_default_key(i, 0); + clear_config(scfg_nilrider); + change_default_key('s', 16 + 0); change_default_key('a', 16 + 1); change_default_key('w', 16 + 2); @@ -564,6 +562,8 @@ void nilrider_keys() { change_default_key('b', 16 + 6); change_default_key('r', 16 + 7); change_default_key('v', 16 + 8); + + sconfig_savers(scfg_nilrider, "nilrider"); } bool nilrider_music(eLand& l) {