Пример #1
0
        public static void Serialize_OptionsPage(dynamic menu, OptionsPage op, Point cursorPosition)
        {
            menu.menuType = "optionsPage";
            var       optionSlots    = new List <dynamic>();
            Rectangle?activeDDBounds = null;

            for (int i = 0; i < op.optionSlots.Count; i++)
            {
                ClickableComponent cmp     = op.optionSlots[i];
                OptionsElement     element = op.options[op.currentItemIndex + i];
                if (element.greyedOut || (activeDDBounds.HasValue && cmp.bounds.Intersects((Rectangle)activeDDBounds)))
                {
                    continue;
                }
                if (element is OptionsPlusMinus)
                {
                    OptionsPlusMinus pm = element as OptionsPlusMinus;
                    var minusRect       = new Rectangle(cmp.bounds.X + pm.minusButton.X, cmp.bounds.Y + pm.minusButton.Y, pm.minusButton.Width, pm.minusButton.Height);
                    var minusCmp        = Utils.Merge(Utils.RectangleToClickableComponent(minusRect, cursorPosition), new { label = pm.label + " minus" });
                    var plusRect        = new Rectangle(cmp.bounds.X + pm.plusButton.X, cmp.bounds.Y + pm.plusButton.Y, pm.plusButton.Width, pm.plusButton.Height);
                    var plusCmp         = Utils.Merge(Utils.RectangleToClickableComponent(plusRect, cursorPosition), new { label = pm.label + " plus" });
                    optionSlots.Add(minusCmp);
                    optionSlots.Add(plusCmp);
                }
                else if (element is OptionsCheckbox)
                {
                    var rect = new Rectangle(cmp.bounds.X + element.bounds.X, cmp.bounds.Y + element.bounds.Y, element.bounds.Width, element.bounds.Height);
                    optionSlots.Add(Utils.Merge(Utils.RectangleToClickableComponent(rect, cursorPosition), new { element.label }));
                }
                else if (element is OptionsDropDown)
                {
                    OptionsDropDown odd = element as OptionsDropDown;
                    int             y   = cmp.bounds.Y + odd.bounds.Y;
                    if (!(System.Object.ReferenceEquals(OptionsDropDown.selected, odd)))
                    {
                        var rect        = new Rectangle(cmp.bounds.X + odd.bounds.X, y, element.bounds.Width, element.bounds.Height);
                        var focusTarget = new List <int> {
                            rect.X + 18, rect.Center.Y
                        };
                        optionSlots.Add(Utils.Merge(Utils.RectangleToClickableComponent(rect, cursorPosition), new { element.label, focusTarget }));
                    }
                    else
                    {
                        activeDDBounds = new Rectangle(cmp.bounds.X + odd.dropDownBounds.X, y, odd.dropDownBounds.Width, odd.dropDownBounds.Height);
                        int heightPerOption = odd.dropDownBounds.Height / odd.dropDownDisplayOptions.Count;
                        for (int j = 0; j < odd.dropDownDisplayOptions.Count; j++)
                        {
                            string option      = odd.dropDownDisplayOptions[j];
                            var    optY        = y + heightPerOption * j;
                            var    rect        = new Rectangle(cmp.bounds.X + odd.bounds.X, optY, element.bounds.Width, heightPerOption);
                            var    focusTarget = new List <int> {
                                rect.X + 18, rect.Center.Y
                            };
                            optionSlots.Add(Utils.Merge(Utils.RectangleToClickableComponent(rect, cursorPosition), new { label = option, focusTarget }));
                        }
                    }
                }
            }
            menu.optionSlots = optionSlots;
        }
Пример #2
0
        public void setPlusMinusToProperValue(OptionsPlusMinus plusMinus)
        {
            switch (plusMinus.whichOption)
            {
            case 18:
                string str1 = Math.Round((double)this.zoomLevel * 100.0).ToString() + "%";
                for (int index = 0; index < plusMinus.options.Count; ++index)
                {
                    if (plusMinus.options[index].Equals(str1))
                    {
                        plusMinus.selected = index;
                        break;
                    }
                }
                break;

            case 25:
                string str2 = "";
                switch (this.lightingQuality)
                {
                case 32:
                    str2 = "Med.";
                    break;

                case 64:
                    str2 = "Low";
                    break;

                case 128:
                    str2 = "Lowest";
                    break;

                case 8:
                    str2 = "Ultra";
                    break;

                case 16:
                    str2 = "High";
                    break;
                }
                for (int index = 0; index < plusMinus.options.Count; ++index)
                {
                    if (plusMinus.options[index].Equals(str2))
                    {
                        plusMinus.selected = index;
                        break;
                    }
                }
                break;
            }
        }