private void DrawMultiSelectorEdit(OptionGroup group) { var nameBoxStart = CheckMarkSize; var flag = Mod !.Settings[group.GroupName]; var modChanged = DrawMultiSelectorEditBegin(group); for (var i = 0; i < group.Options.Count; ++i) { var opt = group.Options[i]; var label = $"##{group.GroupName}_{i}"; DrawMultiSelectorCheckBox(group, i, flag, label); ImGui.SameLine(); var newName = opt.OptionName; if (nameBoxStart == CheckMarkSize) { nameBoxStart = ImGui.GetCursorPosX(); } ImGui.SetNextItemWidth(MultiEditBoxWidth); if (ImGui.InputText($"{label}_l", ref newName, 64, ImGuiInputTextFlags.EnterReturnsTrue)) { if (newName.Length == 0) { group.Options.RemoveAt(i); var bitmaskFront = (1 << i) - 1; var bitmaskBack = ~(bitmaskFront | (1 << i)); Mod.Settings[group.GroupName] = (flag & bitmaskFront) | ((flag & bitmaskBack) >> 1); modChanged = true; } else if (newName != opt.OptionName) { group.Options[i] = new Option() { OptionName = newName, OptionDesc = opt.OptionDesc, OptionFiles = opt.OptionFiles }; _selector.SaveCurrentMod(); } } } DrawMultiSelectorEditAdd(group, nameBoxStart); if (modChanged) { _selector.SaveCurrentMod(); Save(); } ImGuiCustom.EndFramedGroup(); }