public GameModeSetting(string key, int selection, float[] floats, int[] ints)
        {
            if (Settings.Storage == null)
            {
                Settings.CreateStorage();
            }

            Settings.AddSetting(this);
            GameModes.AddSetting(this);
            string[] keys = key.Split(Separator);
            HashKeys = new string[keys.Length];
            for (int i = 0; i < keys.Length; i++)
            {
                HashKeys[i] = keys[i];
            }
            this.key           = keys[0];
            saveKey            = "GameMode/" + keys[0];
            this.nextSelection = selection;
            this.nextFloats    = floats;
            nextIntegers       = ints;

            draw = (rect, loc) => { };
            if (selection >= 0)
            {
                draw += DrawSelection;
            }
            if (floats != null)
            {
                draw += DrawFloats;
            }
            if (ints != null)
            {
                draw += DrawIntegers;
            }
            Load();
            Apply();
            AddChangedCallback(RCSettingCallback);
        }