private void InitiateInput() { if (_inputInitiated) { return; } _inputInitiated = true; Logger.LogVerbose("Settings menu - intiating input."); var resetRecipeCheckboxBounds = new Rectangle(xPositionOnScreen + spaceToClearSideBorder * 3, yPositionOnScreen + (int)Math.Floor(Game1.tileSize * 3.5), 9 * Game1.pixelZoom, 9 * Game1.pixelZoom); _resetRecipesCheckbox = new Checkbox(PerSaveOptions.Instance.ResetRecipesOnPrestige, "Reset Recipes upon prestige.", resetRecipeCheckboxBounds, ChangeRecipeReset); var padding = 4 * Game1.pixelZoom; var tierOneEditorLocation = new Vector2(resetRecipeCheckboxBounds.X, resetRecipeCheckboxBounds.Y + resetRecipeCheckboxBounds.Height + padding); _tierOneCostEditor = new IntegerEditor("Cost of Tier 1 Prestige", PerSaveOptions.Instance.CostOfTierOnePrestige, 1, 100, tierOneEditorLocation, ChangeTierOneCost); var tierTwoEditorLocation = tierOneEditorLocation; tierTwoEditorLocation.Y += _tierOneCostEditor.Bounds.Height + padding; _tierTwoCostEditor = new IntegerEditor("Cost of Tier 2 Prestige", PerSaveOptions.Instance.CostOfTierTwoPrestige, 1, 100, tierTwoEditorLocation, ChangeTierTwoCost); }
private void InitiateInput() { if (_inputInitiated) { return; } _inputInitiated = true; Logger.LogVerbose("Settings menu - intiating input."); var resetRecipeCheckboxBounds = new Rectangle(xPositionOnScreen + spaceToClearSideBorder * 3, yPositionOnScreen + (Game1.tileSize * 3.5).Floor(), 9 * Game1.pixelZoom, 9 * Game1.pixelZoom); _resetRecipesCheckbox = new Checkbox(PerSaveOptions.Instance.ResetRecipesOnPrestige, "Reset Recipes upon prestige.", resetRecipeCheckboxBounds, ChangeRecipeReset); var padding = 4 * Game1.pixelZoom; var useExperienceMultiplierCheckboxBounds = resetRecipeCheckboxBounds; useExperienceMultiplierCheckboxBounds.Y += resetRecipeCheckboxBounds.Height + padding; _useExperienceMultiplierCheckbox = new Checkbox(PerSaveOptions.Instance.UseExperienceMultiplier, "Use prestige points experience multiplier.", useExperienceMultiplierCheckboxBounds, ChangeUseExperienceMultiplier); var tierOneEditorLocation = new Vector2(useExperienceMultiplierCheckboxBounds.X, useExperienceMultiplierCheckboxBounds.Y + useExperienceMultiplierCheckboxBounds.Height + padding); _tierOneCostEditor = new IntegerEditor("Cost of Tier 1 Prestige", PerSaveOptions.Instance.CostOfTierOnePrestige, 1, 100, tierOneEditorLocation, ChangeTierOneCost); var tierTwoEditorLocation = tierOneEditorLocation; tierTwoEditorLocation.X += _tierOneCostEditor.Bounds.Width + padding; _tierTwoCostEditor = new IntegerEditor("Cost of Tier 2 Prestige", PerSaveOptions.Instance.CostOfTierTwoPrestige, 1, 100, tierTwoEditorLocation, ChangeTierTwoCost); var pointsPerPrestigeEditorLocation = tierTwoEditorLocation; pointsPerPrestigeEditorLocation.Y += _tierTwoCostEditor.Bounds.Height + padding; pointsPerPrestigeEditorLocation.X = _tierOneCostEditor.Bounds.X; _pointsPerPrestigeEditor = new IntegerEditor("Points Per Prestige", PerSaveOptions.Instance.PointsPerPrestige, 1, 100, pointsPerPrestigeEditorLocation, ChangePointsPerPrestige); var painlessPrestigeModeCheckboxBounds = new Rectangle(_pointsPerPrestigeEditor.Bounds.X, _pointsPerPrestigeEditor.Bounds.Y + _pointsPerPrestigeEditor.Bounds.Height + padding, 9 * Game1.pixelZoom, 9 * Game1.pixelZoom); const string painlessPrestigeModeCheckboxText = "Painless Prestige Mode"; _painlessPrestigeModeCheckbox = new Checkbox(PerSaveOptions.Instance.PainlessPrestigeMode, painlessPrestigeModeCheckboxText, painlessPrestigeModeCheckboxBounds, ChangePainlessPrestigeMode); var experiencePerPainlessPrestigeEditorLocation = new Vector2(painlessPrestigeModeCheckboxBounds.X, painlessPrestigeModeCheckboxBounds.Y); experiencePerPainlessPrestigeEditorLocation.X += painlessPrestigeModeCheckboxBounds.Width + Game1.dialogueFont.MeasureString(painlessPrestigeModeCheckboxText).X + padding; _experiencePerPainlessPrestigeEditor = new IntegerEditor("Extra Experience Cost", PerSaveOptions.Instance.ExperienceNeededPerPainlessPrestige, 1000, 100000, experiencePerPainlessPrestigeEditorLocation, ChangeExperiencePerPainlessPrestige, 1000); }
protected virtual EditorItem GetEditorItem(CustomDataType type, string custom, PropertyInfo property) { RequiredAttribute required = property.GetCustomAttributes(typeof(RequiredAttribute), true).FirstOrDefault() as RequiredAttribute; EditorItem item; switch (type) { case CustomDataType.Boolean: item = new BoolEditor(Frame); break; case CustomDataType.Currency: item = new CurrencyEditor(Frame); break; case CustomDataType.Date: item = new DateEditor(Frame); break; case CustomDataType.DateTime: item = new DateTimeEditor(Frame); break; case CustomDataType.Default: item = new DefaultEditor(Frame); if (required != null) { ((DefaultEditor)item).IsAllowdEmpty = required.AllowEmptyStrings; } break; case CustomDataType.EmailAddress: item = new EmailAddressEditor(Frame); break; case CustomDataType.Html: item = new HtmlEditor(Frame); break; case CustomDataType.ImageUrl: item = new ImageUrlEditor(Frame); break; case CustomDataType.Image: item = new ImageEditor(Frame); break; case CustomDataType.Integer: item = new IntegerEditor(Frame); break; case CustomDataType.MultilineText: item = new MultilineTextEditor(Frame); if (required != null) { ((MultilineTextEditor)item).IsAllowdEmpty = required.AllowEmptyStrings; } break; case CustomDataType.Number: item = new NumberEditor(Frame); break; case CustomDataType.Password: item = new PasswordEditor(Frame); break; case CustomDataType.PhoneNumber: item = new PhoneNumberEditor(Frame); break; case CustomDataType.Sex: item = new SexEditor(Frame); break; case CustomDataType.Text: item = new DefaultEditor(Frame); break; case CustomDataType.Time: item = new TimeEditor(Frame); break; case CustomDataType.Url: item = new UrlEditor(Frame); break; default: switch (custom) { case "Enum": item = GetEnumEditorItem(property.PropertyType); break; case "Entity": item = new EntityEditor(Frame, property.PropertyType); break; case "Collection": item = new CollectionEditor(Frame, property.PropertyType.GetGenericArguments()[0]); break; default: throw new NotSupportedException("不支持自定义类型编辑器。"); } break; } if (required != null) { item.IsRequired = true; } return(item); }