void C_BindDefaults () { int lump, lastlump = 0; while ((lump = Wads.FindLump("DEFBINDS", &lastlump)) != -1) { FScanner sc(lump); while (sc.GetString()) { FKeyBindings *dest = &Bindings; int key; // bind destination is optional and is the same as the console command if (sc.Compare("bind")) { sc.MustGetString(); } else if (sc.Compare("doublebind")) { dest = &DoubleBindings; sc.MustGetString(); } else if (sc.Compare("mapbind")) { dest = &AutomapBindings; sc.MustGetString(); } key = GetConfigKeyFromName(sc.String); sc.MustGetString(); dest->SetBind(key, sc.String); } } }
// Moved from DoGameSetup so that it can happen after wads are loaded void FGameConfigFile::DoKeySetup(const char *gamename) { static const struct { const char *label; FKeyBindings *bindings; } binders[] = { { "Bindings", &Bindings }, { "DoubleBindings", &DoubleBindings }, { "AutomapBindings", &AutomapBindings }, { NULL, NULL } }; const char *key, *value; sublen = countof(section) - 1 - mysnprintf(section, countof(section), "%s.", gamename); subsection = section + countof(section) - sublen - 1; section[countof(section) - 1] = '\0'; C_SetDefaultBindings (); for (int i = 0; binders[i].label != NULL; ++i) { strncpy(subsection, binders[i].label, sublen); if (SetSection(section)) { FKeyBindings *bindings = binders[i].bindings; bindings->UnbindAll(); while (NextInSection(key, value)) { bindings->DoBind(key, value); } } } }
void C_BindDefaults () { Bindings.SetBinds (DefBindings); if (gameinfo.gametype & (GAME_Raven|GAME_Strife)) { Bindings.SetBinds (DefRavenBindings); } if (gameinfo.gametype == GAME_Heretic) { Bindings.SetBinds (DefHereticBindings); } if (gameinfo.gametype == GAME_Hexen) { Bindings.SetBinds (DefHexenBindings); } if (gameinfo.gametype == GAME_Strife) { Bindings.SetBinds (DefStrifeBindings); } AutomapBindings.SetBinds(DefAutomapBindings); }
void C_UnbindAll () { Bindings.UnbindAll(); DoubleBindings.UnbindAll(); AutomapBindings.UnbindAll(); }