static void DeinitMenus() { { MenuDescriptorList::Iterator it(MenuDescriptors); MenuDescriptorList::Pair *pair; while (it.NextPair(pair)) { delete pair->Value; pair->Value = NULL; } } { FOptionMap::Iterator it(OptionValues); FOptionMap::Pair *pair; while (it.NextPair(pair)) { delete pair->Value; pair->Value = NULL; } } MenuDescriptors.Clear(); OptionValues.Clear(); DMenu::CurrentMenu = NULL; DefaultListMenuSettings.mItems.Clear(); ClearSaveGames(); }
static void ParseOptionString(FScanner &sc) { FName optname; FOptionValues *val = new FOptionValues; sc.MustGetString(); optname = sc.String; sc.MustGetStringName("{"); while (!sc.CheckString("}")) { FOptionValues::Pair &pair = val->mValues[val->mValues.Reserve(1)]; sc.MustGetString(); pair.Value = DBL_MAX; pair.TextValue = sc.String; sc.MustGetStringName(","); sc.MustGetString(); pair.Text = strbin1(sc.String); } FOptionValues **pOld = OptionValues.CheckKey(optname); if (pOld != NULL && *pOld != NULL) { delete *pOld; } OptionValues[optname] = val; }
void M_CreateMenus() { BuildEpisodeMenu(); BuildPlayerclassMenu(); InitCrosshairsList(); InitKeySections(); FOptionValues **opt = OptionValues.CheckKey(NAME_Mididevices); if (opt != NULL) { I_BuildMIDIMenuList(*opt); } opt = OptionValues.CheckKey(NAME_Aldevices); if (opt != NULL) { I_BuildALDeviceList(*opt); } }
static void InitCrosshairsList() { int lastlump, lump; lastlump = 0; FOptionValues **opt = OptionValues.CheckKey(NAME_Crosshairs); if (opt == NULL) { return; // no crosshair value list present. No need to go on. } FOptionValues::Pair *pair = &(*opt)->mValues[(*opt)->mValues.Reserve(1)]; pair->Value = 0; pair->Text = "None"; while ((lump = Wads.FindLump("XHAIRS", &lastlump)) != -1) { FScanner sc(lump); while (sc.GetNumber()) { FOptionValues::Pair value; value.Value = sc.Number; sc.MustGetString(); value.Text = sc.String; if (value.Value != 0) { // Check if it already exists. If not, add it. unsigned int i; for (i = 1; i < (*opt)->mValues.Size(); ++i) { if ((*opt)->mValues[i].Value == value.Value) { break; } } if (i < (*opt)->mValues.Size()) { (*opt)->mValues[i].Text = value.Text; } else { (*opt)->mValues.Push(value); } } } } }