コード例 #1
0
            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();
            }