diff --git a/changelog-template.hbs b/changelog-template.hbs index d2bd952d..2043b76e 100644 --- a/changelog-template.hbs +++ b/changelog-template.hbs @@ -1,69 +1,28 @@ [Read and Discuss in a Browser](https://github.com/Reloaded-Project/Reloaded-II/discussions/473). -[Previous Changelog](https://github.com/Reloaded-Project/Reloaded-II/releases/tag/1.29.3). +[Previous Changelog](https://github.com/Reloaded-Project/Reloaded-II/releases/tag/1.29.5). -Just a few community PRs and miscellany. As usual, Reloaded-II is on life support while I spend -the next years building the next best thing - if you want features, please contribute! +# 1.30.0: Sliders and Supported Games -# 1.29.5: Add missing `ModConfig.json` to include files +# Added `TickFrequencyDouble` to `SliderControlParamsAttribute` -There was a small regression in `1.29.3`, where the default includes did not -include `ModConfig.json`, that's now been fixed. +The `TickFrequency` property on `SliderControlParamsAttribute` was previously an `int`, which prevented +using non-integer tick frequencies for sliders (e.g., `0.5`). -In addition I added a missing 'include files' label before the second table. +A new `TickFrequencyDouble` property has been added. When set, it takes precedence over the old `TickFrequency` property. -# 1.29.4: Misc Linux Installer Improvements +```csharp +// Old way (integer only, now obsolete) +[SliderControlParams(minimum: 0, maximum: 1, tickFrequency: 1)] -Small improvements to install on Linux: +// New way (supports non-integer values) +[SliderControlParams(minimum: 0, maximum: 1, TickFrequencyDouble = 0.1)] +``` -- [Ensure 'Applications' directory exists so creating shortcut doesn't fail during install on some systems.](https://github.com/Reloaded-Project/Reloaded-II/issues/717) -- Create `Software\Wine` key in registry if doesn't exist. May fix odd cases where people's 'show dot files' settings don't enable by default. +Alongside the addition of `textFieldFormat` from @monkeyman192 which (somehow) sat unreleased for 2 years, due to missing `Reloaded.Mod.Interfaces` release, you can now have sliders with nice fractions in configs, without crazy behaviour. -And also: -- Updated 🇫🇷 French Localization by @dysfunctionalriot +image -# 1.29.3: More Miscellaneous Improvements - -## Allow .NET 9 Versions >= 9.0.8 for loader. - -No update to .NET 10 as of current; but am allowing 9.0.8 or greater for loader now. - -According to 3rd party reports I got thus far, `Proton` needs updating to receive some upstream fixes from `Wine` for .NET 10, which may take a while to reach downstream. -We wait for Proton 11, I suppose. - -## Added Progress Bar for Mod Installation - -![Image](https://github.com/user-attachments/assets/9f09ccad-f036-4856-806c-3c75f281307a) - -If a mod takes longer than 3 seconds to install via Drag & Drop, a simple progress bar will display on the screen now. -In practice you should only see this if you install large mods (think >500MB); on a typical CPU. - -## Save Mod Config on Publish, Including `IncludeFiles` and `ExcludeFiles` by @TheBestAstroNOT , @Sewer56 - -When you `Publish` a mod you have an option to exclude certain files from the released project via `File Inclusions & Exclusions`. -By default, that is all `.json` files except `.deps.json` and `.runtimeconfig.json` ones. - -Previously, changes on this menu didn't save; as barely anyone ever changed the defaults. -Now they do. - -## Reorder ASI Loader DLL Detection Order by @dreamsyntax - -The order of which DLL name gets selected for Ultimate ASI Loader was changed. -Now matches using order defined in our code, rather than the order in `PE Header`. - -With that in mind, items were rearranged to be as least intrusive as possible. -For instance, ASI Loader as `dinput8.dll` has caused issues in the past in limited scenarios; e.g. when using C# library with SharpDX to read inputs via dinput. - -## Disabled CET - -[.NET 9 added a security feature (on by default)](https://learn.microsoft.com/en-us/dotnet/core/compatibility/interop/9.0/cet-support) which is incompatible with older unsupported versions of Windows. -Namely Windows 10 22H2 and older. - -Given that Reloaded-II is already unsafe by design (injects arbitrary code), and it's usually not used for multiplayer, there is no good reason for CET to be enforced. -Rather, it should be the game's responsibility to opt in. Generally, if possible, if the base game runs on the PC, the modded game should too, out of the box. - -## Misc - -- Update Dependencies (@dreamsyntax) +The old `TickFrequency` property has been marked as `[Obsolete]` but remains functional for backwards compatibility. ------------------------------------ diff --git a/source/Reloaded.Mod.Interfaces/PublicAPI.Shipped.txt b/source/Reloaded.Mod.Interfaces/PublicAPI.Shipped.txt index 5f282702..c55b4cbf 100644 --- a/source/Reloaded.Mod.Interfaces/PublicAPI.Shipped.txt +++ b/source/Reloaded.Mod.Interfaces/PublicAPI.Shipped.txt @@ -1 +1,270 @@ - \ No newline at end of file +override Reloaded.Mod.Interfaces.Structs.ModInfo.Equals(object obj) -> bool +override Reloaded.Mod.Interfaces.Structs.ModInfo.GetHashCode() -> int +Reloaded.Mod.Interfaces.ConfiguratorContext +Reloaded.Mod.Interfaces.ConfiguratorContext.Application -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 +Reloaded.Mod.Interfaces.ConfiguratorContext.ApplicationConfigPath -> string +Reloaded.Mod.Interfaces.ConfiguratorContext.ConfiguratorContext() -> void +Reloaded.Mod.Interfaces.ConfiguratorContext.ModConfigPath -> string +Reloaded.Mod.Interfaces.ExportsContext +Reloaded.Mod.Interfaces.ExportsContext.ApplicationConfig.get -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 +Reloaded.Mod.Interfaces.ExportsContext.ApplicationConfig.set -> void +Reloaded.Mod.Interfaces.ExportsContext.ExportsContext() -> void +Reloaded.Mod.Interfaces.IApplicationConfig +Reloaded.Mod.Interfaces.IConfigurable +Reloaded.Mod.Interfaces.IConfigurable.ConfigName.get -> string +Reloaded.Mod.Interfaces.IConfigurable.Save.get -> System.Action +Reloaded.Mod.Interfaces.IConfigurator +Reloaded.Mod.Interfaces.IConfiguratorV1 +Reloaded.Mod.Interfaces.IConfiguratorV1.GetConfigurations() -> Reloaded.Mod.Interfaces.IConfigurable[] +Reloaded.Mod.Interfaces.IConfiguratorV1.SetModDirectory(string modDirectory) -> void +Reloaded.Mod.Interfaces.IConfiguratorV1.TryRunCustomConfiguration() -> bool +Reloaded.Mod.Interfaces.IConfiguratorV2 +Reloaded.Mod.Interfaces.IConfiguratorV2.Migrate(string oldDirectory, string newDirectory) -> void +Reloaded.Mod.Interfaces.IConfiguratorV2.SetConfigDirectory(string configDirectory) -> void +Reloaded.Mod.Interfaces.IConfiguratorV3 +Reloaded.Mod.Interfaces.IConfiguratorV3.SetContext(in Reloaded.Mod.Interfaces.ConfiguratorContext context) -> void +Reloaded.Mod.Interfaces.IExports +Reloaded.Mod.Interfaces.IExports.GetTypes() -> System.Type[] +Reloaded.Mod.Interfaces.IExports.GetTypesEx(in Reloaded.Mod.Interfaces.ExportsContext context) -> System.Type[] +Reloaded.Mod.Interfaces.ILogger +Reloaded.Mod.Interfaces.IMod +Reloaded.Mod.Interfaces.IModConfig +Reloaded.Mod.Interfaces.IModLoader +Reloaded.Mod.Interfaces.IModUserConfig +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppArguments.get -> string +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppArguments.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppIcon.get -> string +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppIcon.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppId.get -> string +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppId.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppLocation.get -> string +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppLocation.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppName.get -> string +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppName.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.EnabledMods.get -> string[] +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.EnabledMods.set -> void +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2 +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2.PluginData.get -> System.Collections.Generic.Dictionary +Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2.PluginData.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1 +Reloaded.Mod.Interfaces.Internal.ILoggerV1.BackgroundColor.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.BackgroundColor.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlue.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlue.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlueLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlueLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreen.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreen.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreenLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreenLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlue.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlue.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlueLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlueLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPink.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPink.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPinkLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPinkLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRed.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRed.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRedLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRedLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellow.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellow.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellowLight.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellowLight.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.OnPrintMessage -> System.EventHandler +Reloaded.Mod.Interfaces.Internal.ILoggerV1.PrintMessage(string message, System.Drawing.Color color) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV1.TextColor.get -> System.Drawing.Color +Reloaded.Mod.Interfaces.Internal.ILoggerV1.TextColor.set -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV2 +Reloaded.Mod.Interfaces.Internal.ILoggerV2.Write(string message) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV2.Write(string message, System.Drawing.Color color) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV2.WriteLine(string message) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV2.WriteLine(string message, System.Drawing.Color color) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV3 +Reloaded.Mod.Interfaces.Internal.ILoggerV3.WaitForConsoleInit(System.Threading.CancellationToken token) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteAsync(string message) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteAsync(string message, System.Drawing.Color color) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteLineAsync(string message) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteLineAsync(string message, System.Drawing.Color color) -> void +Reloaded.Mod.Interfaces.Internal.ILoggerV4 +Reloaded.Mod.Interfaces.Internal.ILoggerV4.OnWrite -> System.EventHandler<(string text, System.Drawing.Color color)> +Reloaded.Mod.Interfaces.Internal.ILoggerV4.OnWriteLine -> System.EventHandler<(string text, System.Drawing.Color color)> +Reloaded.Mod.Interfaces.Internal.IModConfigV1 +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModAuthor.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModAuthor.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDependencies.get -> string[] +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDependencies.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDescription.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDescription.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDll.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDll.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModIcon.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModIcon.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModId.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModId.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModName.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModName.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModVersion.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModVersion.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV1.SupportedAppId.get -> string[] +Reloaded.Mod.Interfaces.Internal.IModConfigV1.SupportedAppId.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV2 +Reloaded.Mod.Interfaces.Internal.IModConfigV2.OptionalDependencies.get -> string[] +Reloaded.Mod.Interfaces.Internal.IModConfigV2.OptionalDependencies.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV3 +Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetDllPath(string configPath) -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetManagedDllPath(string configPath) -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetNativeDllPath(string configPath) -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.IsNativeMod(string configPath) -> bool +Reloaded.Mod.Interfaces.Internal.IModConfigV3.IsR2R(string configPath) -> bool +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll32.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll32.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll64.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll64.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll32.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll32.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll64.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll64.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV3.TryGetIconPath(string configPath, out string iconPath) -> bool +Reloaded.Mod.Interfaces.Internal.IModConfigV4 +Reloaded.Mod.Interfaces.Internal.IModConfigV4.IsLibrary.get -> bool +Reloaded.Mod.Interfaces.Internal.IModConfigV4.IsLibrary.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV5 +Reloaded.Mod.Interfaces.Internal.IModConfigV5.IsUniversalMod.get -> bool +Reloaded.Mod.Interfaces.Internal.IModConfigV5.IsUniversalMod.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV5.PluginData.get -> System.Collections.Generic.Dictionary +Reloaded.Mod.Interfaces.Internal.IModConfigV5.PluginData.set -> void +Reloaded.Mod.Interfaces.Internal.IModConfigV5.ReleaseMetadataFileName.get -> string +Reloaded.Mod.Interfaces.Internal.IModConfigV5.ReleaseMetadataFileName.set -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1 +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.AddOrReplaceController(Reloaded.Mod.Interfaces.Internal.IModV1 owner, T instance) -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetActiveMods() -> Reloaded.Mod.Interfaces.Internal.ModGenericTuple[] +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetAppConfig() -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetController() -> System.WeakReference +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetLoaderVersion() -> System.Version +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetLogger() -> Reloaded.Mod.Interfaces.Internal.ILoggerV1 +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.MakeInterfaces() -> System.WeakReference[] +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoaded.get -> System.Action +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoaded.set -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoading.get -> System.Action +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoading.set -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModUnloading.get -> System.Action +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModUnloading.set -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.OnModLoaderInitialized.get -> System.Action +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.OnModLoaderInitialized.set -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV1.RemoveController() -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV2 +Reloaded.Mod.Interfaces.Internal.IModLoaderV2.GetDirectoryForModId(string modId) -> string +Reloaded.Mod.Interfaces.Internal.IModLoaderV3 +Reloaded.Mod.Interfaces.Internal.IModLoaderV3.GetModConfigDirectory(string modId) -> string +Reloaded.Mod.Interfaces.Internal.IModLoaderV4 +Reloaded.Mod.Interfaces.Internal.IModLoaderV4.GetLoadedMods() -> Reloaded.Mod.Interfaces.Structs.ModInfo[] +Reloaded.Mod.Interfaces.Internal.IModLoaderV4.LoadMod(string modId) -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV4.ResumeMod(string modId) -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV4.SuspendMod(string modId) -> void +Reloaded.Mod.Interfaces.Internal.IModLoaderV4.UnloadMod(string modId) -> void +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1 +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.AllowPrereleases.get -> bool? +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.AllowPrereleases.set -> void +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.IsUniversalMod.get -> bool +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.IsUniversalMod.set -> void +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.ModId.get -> string +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.ModId.set -> void +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.PluginData.get -> System.Collections.Generic.Dictionary +Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.PluginData.set -> void +Reloaded.Mod.Interfaces.Internal.IModV1 +Reloaded.Mod.Interfaces.Internal.IModV1.CanSuspend() -> bool +Reloaded.Mod.Interfaces.Internal.IModV1.CanUnload() -> bool +Reloaded.Mod.Interfaces.Internal.IModV1.Disposing.get -> System.Action +Reloaded.Mod.Interfaces.Internal.IModV1.Resume() -> void +Reloaded.Mod.Interfaces.Internal.IModV1.Start(Reloaded.Mod.Interfaces.Internal.IModLoaderV1 loader) -> void +Reloaded.Mod.Interfaces.Internal.IModV1.Suspend() -> void +Reloaded.Mod.Interfaces.Internal.IModV1.Unload() -> void +Reloaded.Mod.Interfaces.Internal.IModV2 +Reloaded.Mod.Interfaces.Internal.IModV2.StartEx(Reloaded.Mod.Interfaces.Internal.IModLoaderV1 loader, Reloaded.Mod.Interfaces.Internal.IModConfigV1 config) -> void +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1 +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Author.get -> string +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Author.set -> void +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Description.get -> string +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Description.set -> void +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Name.get -> string +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Name.set -> void +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Version.get -> string +Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Version.set -> void +Reloaded.Mod.Interfaces.Internal.ModGenericTuple +Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Generic.get -> T +Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Generic.set -> void +Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Mod.get -> Reloaded.Mod.Interfaces.Internal.IModV1 +Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Mod.set -> void +Reloaded.Mod.Interfaces.Internal.ModGenericTuple.ModGenericTuple(Reloaded.Mod.Interfaces.Internal.IModV1 mod, T generic) -> void +Reloaded.Mod.Interfaces.IPluginConfig +Reloaded.Mod.Interfaces.IUpdatableConfigurable +Reloaded.Mod.Interfaces.IUpdatableConfigurable.ConfigurationUpdated -> System.Action +Reloaded.Mod.Interfaces.Structs.Enums.ModState +Reloaded.Mod.Interfaces.Structs.Enums.ModState.Running = 0 -> Reloaded.Mod.Interfaces.Structs.Enums.ModState +Reloaded.Mod.Interfaces.Structs.Enums.ModState.Suspended = 1 -> Reloaded.Mod.Interfaces.Structs.Enums.ModState +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.AddToRecent.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ChooseFileButtonLabel.get -> string +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.FilePickerParamsAttribute(string initialDirectory = null, System.Environment.SpecialFolder initialFolderPath = System.Environment.SpecialFolder.MyDocuments, string chooseFileButtonLabel = "Choose File", bool userCanEditPathText = true, string title = "", string filter = "All files (*.*)|*.*", int filterIndex = 0, bool multiselect = false, bool supportMultiDottedExtensions = false, bool showHiddenFiles = false, bool showPreview = false, bool restoreDirectory = false, bool addToRecent = false) -> void +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Filter.get -> string +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.FilterIndex.get -> int +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.InitialDirectory.get -> string +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.InitialFolderPath.get -> System.Environment.SpecialFolder +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Multiselect.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.RestoreDirectory.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ShowHiddenFiles.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ShowPreview.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.SupportMultiDottedExtensions.get -> bool +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Title.get -> string +Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.UserCanEditPathText.get -> bool +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.ChooseFolderButtonLabel.get -> string +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.FileNameLabel.get -> string +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.FolderPickerParamsAttribute(string initialDirectory = null, System.Environment.SpecialFolder initialFolderPath = System.Environment.SpecialFolder.MyDocuments, string chooseFolderButtonLabel = "Choose Folder", bool userCanEditPathText = true, string title = "", string okButtonLabel = "Ok", string fileNameLabel = "", bool multiSelect = false, bool forceFileSystem = false) -> void +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.ForceFileSystem.get -> bool +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.InitialDirectory.get -> string +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.InitialFolderPath.get -> System.Environment.SpecialFolder +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.Multiselect.get -> bool +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.OkButtonLabel.get -> string +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.Title.get -> string +Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.UserCanEditPathText.get -> bool +Reloaded.Mod.Interfaces.Structs.ICustomControlAttribute +Reloaded.Mod.Interfaces.Structs.ModInfo +Reloaded.Mod.Interfaces.Structs.ModInfo.CanSendResume.get -> bool +Reloaded.Mod.Interfaces.Structs.ModInfo.CanSendSuspend.get -> bool +Reloaded.Mod.Interfaces.Structs.ModInfo.CanSuspend.get -> bool +Reloaded.Mod.Interfaces.Structs.ModInfo.CanSuspend.set -> void +Reloaded.Mod.Interfaces.Structs.ModInfo.CanUnload.get -> bool +Reloaded.Mod.Interfaces.Structs.ModInfo.CanUnload.set -> void +Reloaded.Mod.Interfaces.Structs.ModInfo.Config.get -> Reloaded.Mod.Interfaces.IModConfig +Reloaded.Mod.Interfaces.Structs.ModInfo.Config.set -> void +Reloaded.Mod.Interfaces.Structs.ModInfo.Equals(Reloaded.Mod.Interfaces.Structs.ModInfo other) -> bool +Reloaded.Mod.Interfaces.Structs.ModInfo.ModId.get -> string +Reloaded.Mod.Interfaces.Structs.ModInfo.ModInfo() -> void +Reloaded.Mod.Interfaces.Structs.ModInfo.ModInfo(Reloaded.Mod.Interfaces.Structs.Enums.ModState state, Reloaded.Mod.Interfaces.IModConfig modConfig, bool canSuspend, bool canUnload) -> void +Reloaded.Mod.Interfaces.Structs.ModInfo.State.get -> Reloaded.Mod.Interfaces.Structs.Enums.ModState +Reloaded.Mod.Interfaces.Structs.ModInfo.State.set -> void +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.IsSnapToTickEnabled.get -> bool +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.IsTextFieldEditable.get -> bool +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.LargeChange.get -> double +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.Maximum.get -> double +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.Minimum.get -> double +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.ShowTextField.get -> bool +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SliderControlParamsAttribute(double minimum = 0, double maximum = 1, double smallChange = 0.1, double largeChange = 1, int tickFrequency = 10, bool isSnapToTickEnabled = false, Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement tickPlacement = Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.None, bool showTextField = false, bool isTextFieldEditable = true, string textValidationRegex = ".*", string textFieldFormat = "") -> void +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SmallChange.get -> double +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TextFieldFormat.get -> string +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TextValidationRegex.get -> string +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickFrequency.get -> int +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickPlacement.get -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.Both = 3 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.BottomRight = 2 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.None = 0 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.TopLeft = 1 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement +Reloaded.Mod.Interfaces.Utilities.Extensions +static Reloaded.Mod.Interfaces.Utilities.Extensions.TryGetValue(this System.Collections.Generic.Dictionary pluginData, string key, out T result) -> bool \ No newline at end of file diff --git a/source/Reloaded.Mod.Interfaces/PublicAPI.Unshipped.txt b/source/Reloaded.Mod.Interfaces/PublicAPI.Unshipped.txt index c55b4cbf..cc943645 100644 --- a/source/Reloaded.Mod.Interfaces/PublicAPI.Unshipped.txt +++ b/source/Reloaded.Mod.Interfaces/PublicAPI.Unshipped.txt @@ -1,270 +1,5 @@ -override Reloaded.Mod.Interfaces.Structs.ModInfo.Equals(object obj) -> bool -override Reloaded.Mod.Interfaces.Structs.ModInfo.GetHashCode() -> int -Reloaded.Mod.Interfaces.ConfiguratorContext -Reloaded.Mod.Interfaces.ConfiguratorContext.Application -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 -Reloaded.Mod.Interfaces.ConfiguratorContext.ApplicationConfigPath -> string -Reloaded.Mod.Interfaces.ConfiguratorContext.ConfiguratorContext() -> void -Reloaded.Mod.Interfaces.ConfiguratorContext.ModConfigPath -> string -Reloaded.Mod.Interfaces.ExportsContext -Reloaded.Mod.Interfaces.ExportsContext.ApplicationConfig.get -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 -Reloaded.Mod.Interfaces.ExportsContext.ApplicationConfig.set -> void -Reloaded.Mod.Interfaces.ExportsContext.ExportsContext() -> void -Reloaded.Mod.Interfaces.IApplicationConfig -Reloaded.Mod.Interfaces.IConfigurable -Reloaded.Mod.Interfaces.IConfigurable.ConfigName.get -> string -Reloaded.Mod.Interfaces.IConfigurable.Save.get -> System.Action -Reloaded.Mod.Interfaces.IConfigurator -Reloaded.Mod.Interfaces.IConfiguratorV1 -Reloaded.Mod.Interfaces.IConfiguratorV1.GetConfigurations() -> Reloaded.Mod.Interfaces.IConfigurable[] -Reloaded.Mod.Interfaces.IConfiguratorV1.SetModDirectory(string modDirectory) -> void -Reloaded.Mod.Interfaces.IConfiguratorV1.TryRunCustomConfiguration() -> bool -Reloaded.Mod.Interfaces.IConfiguratorV2 -Reloaded.Mod.Interfaces.IConfiguratorV2.Migrate(string oldDirectory, string newDirectory) -> void -Reloaded.Mod.Interfaces.IConfiguratorV2.SetConfigDirectory(string configDirectory) -> void -Reloaded.Mod.Interfaces.IConfiguratorV3 -Reloaded.Mod.Interfaces.IConfiguratorV3.SetContext(in Reloaded.Mod.Interfaces.ConfiguratorContext context) -> void -Reloaded.Mod.Interfaces.IExports -Reloaded.Mod.Interfaces.IExports.GetTypes() -> System.Type[] -Reloaded.Mod.Interfaces.IExports.GetTypesEx(in Reloaded.Mod.Interfaces.ExportsContext context) -> System.Type[] -Reloaded.Mod.Interfaces.ILogger -Reloaded.Mod.Interfaces.IMod -Reloaded.Mod.Interfaces.IModConfig -Reloaded.Mod.Interfaces.IModLoader -Reloaded.Mod.Interfaces.IModUserConfig -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppArguments.get -> string -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppArguments.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppIcon.get -> string -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppIcon.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppId.get -> string -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppId.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppLocation.get -> string -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppLocation.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppName.get -> string -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.AppName.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.EnabledMods.get -> string[] -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1.EnabledMods.set -> void -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2 -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2.PluginData.get -> System.Collections.Generic.Dictionary -Reloaded.Mod.Interfaces.Internal.IApplicationConfigV2.PluginData.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1 -Reloaded.Mod.Interfaces.Internal.ILoggerV1.BackgroundColor.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.BackgroundColor.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlue.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlue.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlueLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorBlueLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreen.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreen.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreenLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorGreenLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlue.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlue.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlueLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorLightBlueLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPink.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPink.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPinkLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorPinkLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRed.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRed.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRedLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorRedLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellow.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellow.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellowLight.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.ColorYellowLight.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.OnPrintMessage -> System.EventHandler -Reloaded.Mod.Interfaces.Internal.ILoggerV1.PrintMessage(string message, System.Drawing.Color color) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV1.TextColor.get -> System.Drawing.Color -Reloaded.Mod.Interfaces.Internal.ILoggerV1.TextColor.set -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV2 -Reloaded.Mod.Interfaces.Internal.ILoggerV2.Write(string message) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV2.Write(string message, System.Drawing.Color color) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV2.WriteLine(string message) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV2.WriteLine(string message, System.Drawing.Color color) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV3 -Reloaded.Mod.Interfaces.Internal.ILoggerV3.WaitForConsoleInit(System.Threading.CancellationToken token) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteAsync(string message) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteAsync(string message, System.Drawing.Color color) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteLineAsync(string message) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV3.WriteLineAsync(string message, System.Drawing.Color color) -> void -Reloaded.Mod.Interfaces.Internal.ILoggerV4 -Reloaded.Mod.Interfaces.Internal.ILoggerV4.OnWrite -> System.EventHandler<(string text, System.Drawing.Color color)> -Reloaded.Mod.Interfaces.Internal.ILoggerV4.OnWriteLine -> System.EventHandler<(string text, System.Drawing.Color color)> -Reloaded.Mod.Interfaces.Internal.IModConfigV1 -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModAuthor.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModAuthor.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDependencies.get -> string[] -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDependencies.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDescription.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDescription.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDll.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModDll.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModIcon.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModIcon.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModId.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModId.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModName.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModName.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModVersion.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV1.ModVersion.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV1.SupportedAppId.get -> string[] -Reloaded.Mod.Interfaces.Internal.IModConfigV1.SupportedAppId.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV2 -Reloaded.Mod.Interfaces.Internal.IModConfigV2.OptionalDependencies.get -> string[] -Reloaded.Mod.Interfaces.Internal.IModConfigV2.OptionalDependencies.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV3 -Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetDllPath(string configPath) -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetManagedDllPath(string configPath) -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.GetNativeDllPath(string configPath) -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.IsNativeMod(string configPath) -> bool -Reloaded.Mod.Interfaces.Internal.IModConfigV3.IsR2R(string configPath) -> bool -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll32.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll32.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll64.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModNativeDll64.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll32.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll32.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll64.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV3.ModR2RManagedDll64.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV3.TryGetIconPath(string configPath, out string iconPath) -> bool -Reloaded.Mod.Interfaces.Internal.IModConfigV4 -Reloaded.Mod.Interfaces.Internal.IModConfigV4.IsLibrary.get -> bool -Reloaded.Mod.Interfaces.Internal.IModConfigV4.IsLibrary.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV5 -Reloaded.Mod.Interfaces.Internal.IModConfigV5.IsUniversalMod.get -> bool -Reloaded.Mod.Interfaces.Internal.IModConfigV5.IsUniversalMod.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV5.PluginData.get -> System.Collections.Generic.Dictionary -Reloaded.Mod.Interfaces.Internal.IModConfigV5.PluginData.set -> void -Reloaded.Mod.Interfaces.Internal.IModConfigV5.ReleaseMetadataFileName.get -> string -Reloaded.Mod.Interfaces.Internal.IModConfigV5.ReleaseMetadataFileName.set -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1 -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.AddOrReplaceController(Reloaded.Mod.Interfaces.Internal.IModV1 owner, T instance) -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetActiveMods() -> Reloaded.Mod.Interfaces.Internal.ModGenericTuple[] -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetAppConfig() -> Reloaded.Mod.Interfaces.Internal.IApplicationConfigV1 -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetController() -> System.WeakReference -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetLoaderVersion() -> System.Version -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.GetLogger() -> Reloaded.Mod.Interfaces.Internal.ILoggerV1 -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.MakeInterfaces() -> System.WeakReference[] -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoaded.get -> System.Action -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoaded.set -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoading.get -> System.Action -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModLoading.set -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModUnloading.get -> System.Action -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.ModUnloading.set -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.OnModLoaderInitialized.get -> System.Action -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.OnModLoaderInitialized.set -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV1.RemoveController() -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV2 -Reloaded.Mod.Interfaces.Internal.IModLoaderV2.GetDirectoryForModId(string modId) -> string -Reloaded.Mod.Interfaces.Internal.IModLoaderV3 -Reloaded.Mod.Interfaces.Internal.IModLoaderV3.GetModConfigDirectory(string modId) -> string -Reloaded.Mod.Interfaces.Internal.IModLoaderV4 -Reloaded.Mod.Interfaces.Internal.IModLoaderV4.GetLoadedMods() -> Reloaded.Mod.Interfaces.Structs.ModInfo[] -Reloaded.Mod.Interfaces.Internal.IModLoaderV4.LoadMod(string modId) -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV4.ResumeMod(string modId) -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV4.SuspendMod(string modId) -> void -Reloaded.Mod.Interfaces.Internal.IModLoaderV4.UnloadMod(string modId) -> void -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1 -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.AllowPrereleases.get -> bool? -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.AllowPrereleases.set -> void -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.IsUniversalMod.get -> bool -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.IsUniversalMod.set -> void -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.ModId.get -> string -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.ModId.set -> void -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.PluginData.get -> System.Collections.Generic.Dictionary -Reloaded.Mod.Interfaces.Internal.IModUserConfigV1.PluginData.set -> void -Reloaded.Mod.Interfaces.Internal.IModV1 -Reloaded.Mod.Interfaces.Internal.IModV1.CanSuspend() -> bool -Reloaded.Mod.Interfaces.Internal.IModV1.CanUnload() -> bool -Reloaded.Mod.Interfaces.Internal.IModV1.Disposing.get -> System.Action -Reloaded.Mod.Interfaces.Internal.IModV1.Resume() -> void -Reloaded.Mod.Interfaces.Internal.IModV1.Start(Reloaded.Mod.Interfaces.Internal.IModLoaderV1 loader) -> void -Reloaded.Mod.Interfaces.Internal.IModV1.Suspend() -> void -Reloaded.Mod.Interfaces.Internal.IModV1.Unload() -> void -Reloaded.Mod.Interfaces.Internal.IModV2 -Reloaded.Mod.Interfaces.Internal.IModV2.StartEx(Reloaded.Mod.Interfaces.Internal.IModLoaderV1 loader, Reloaded.Mod.Interfaces.Internal.IModConfigV1 config) -> void -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1 -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Author.get -> string -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Author.set -> void -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Description.get -> string -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Description.set -> void -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Name.get -> string -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Name.set -> void -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Version.get -> string -Reloaded.Mod.Interfaces.Internal.IPluginConfigV1.Version.set -> void -Reloaded.Mod.Interfaces.Internal.ModGenericTuple -Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Generic.get -> T -Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Generic.set -> void -Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Mod.get -> Reloaded.Mod.Interfaces.Internal.IModV1 -Reloaded.Mod.Interfaces.Internal.ModGenericTuple.Mod.set -> void -Reloaded.Mod.Interfaces.Internal.ModGenericTuple.ModGenericTuple(Reloaded.Mod.Interfaces.Internal.IModV1 mod, T generic) -> void -Reloaded.Mod.Interfaces.IPluginConfig -Reloaded.Mod.Interfaces.IUpdatableConfigurable -Reloaded.Mod.Interfaces.IUpdatableConfigurable.ConfigurationUpdated -> System.Action -Reloaded.Mod.Interfaces.Structs.Enums.ModState -Reloaded.Mod.Interfaces.Structs.Enums.ModState.Running = 0 -> Reloaded.Mod.Interfaces.Structs.Enums.ModState -Reloaded.Mod.Interfaces.Structs.Enums.ModState.Suspended = 1 -> Reloaded.Mod.Interfaces.Structs.Enums.ModState -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.AddToRecent.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ChooseFileButtonLabel.get -> string -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.FilePickerParamsAttribute(string initialDirectory = null, System.Environment.SpecialFolder initialFolderPath = System.Environment.SpecialFolder.MyDocuments, string chooseFileButtonLabel = "Choose File", bool userCanEditPathText = true, string title = "", string filter = "All files (*.*)|*.*", int filterIndex = 0, bool multiselect = false, bool supportMultiDottedExtensions = false, bool showHiddenFiles = false, bool showPreview = false, bool restoreDirectory = false, bool addToRecent = false) -> void -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Filter.get -> string -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.FilterIndex.get -> int -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.InitialDirectory.get -> string -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.InitialFolderPath.get -> System.Environment.SpecialFolder -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Multiselect.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.RestoreDirectory.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ShowHiddenFiles.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.ShowPreview.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.SupportMultiDottedExtensions.get -> bool -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.Title.get -> string -Reloaded.Mod.Interfaces.Structs.FilePickerParamsAttribute.UserCanEditPathText.get -> bool -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.ChooseFolderButtonLabel.get -> string -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.FileNameLabel.get -> string -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.FolderPickerParamsAttribute(string initialDirectory = null, System.Environment.SpecialFolder initialFolderPath = System.Environment.SpecialFolder.MyDocuments, string chooseFolderButtonLabel = "Choose Folder", bool userCanEditPathText = true, string title = "", string okButtonLabel = "Ok", string fileNameLabel = "", bool multiSelect = false, bool forceFileSystem = false) -> void -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.ForceFileSystem.get -> bool -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.InitialDirectory.get -> string -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.InitialFolderPath.get -> System.Environment.SpecialFolder -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.Multiselect.get -> bool -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.OkButtonLabel.get -> string -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.Title.get -> string -Reloaded.Mod.Interfaces.Structs.FolderPickerParamsAttribute.UserCanEditPathText.get -> bool -Reloaded.Mod.Interfaces.Structs.ICustomControlAttribute -Reloaded.Mod.Interfaces.Structs.ModInfo -Reloaded.Mod.Interfaces.Structs.ModInfo.CanSendResume.get -> bool -Reloaded.Mod.Interfaces.Structs.ModInfo.CanSendSuspend.get -> bool -Reloaded.Mod.Interfaces.Structs.ModInfo.CanSuspend.get -> bool -Reloaded.Mod.Interfaces.Structs.ModInfo.CanSuspend.set -> void -Reloaded.Mod.Interfaces.Structs.ModInfo.CanUnload.get -> bool -Reloaded.Mod.Interfaces.Structs.ModInfo.CanUnload.set -> void -Reloaded.Mod.Interfaces.Structs.ModInfo.Config.get -> Reloaded.Mod.Interfaces.IModConfig -Reloaded.Mod.Interfaces.Structs.ModInfo.Config.set -> void -Reloaded.Mod.Interfaces.Structs.ModInfo.Equals(Reloaded.Mod.Interfaces.Structs.ModInfo other) -> bool -Reloaded.Mod.Interfaces.Structs.ModInfo.ModId.get -> string -Reloaded.Mod.Interfaces.Structs.ModInfo.ModInfo() -> void -Reloaded.Mod.Interfaces.Structs.ModInfo.ModInfo(Reloaded.Mod.Interfaces.Structs.Enums.ModState state, Reloaded.Mod.Interfaces.IModConfig modConfig, bool canSuspend, bool canUnload) -> void -Reloaded.Mod.Interfaces.Structs.ModInfo.State.get -> Reloaded.Mod.Interfaces.Structs.Enums.ModState -Reloaded.Mod.Interfaces.Structs.ModInfo.State.set -> void -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.IsSnapToTickEnabled.get -> bool -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.IsTextFieldEditable.get -> bool -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.LargeChange.get -> double -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.Maximum.get -> double -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.Minimum.get -> double -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.ShowTextField.get -> bool -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SliderControlParamsAttribute(double minimum = 0, double maximum = 1, double smallChange = 0.1, double largeChange = 1, int tickFrequency = 10, bool isSnapToTickEnabled = false, Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement tickPlacement = Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.None, bool showTextField = false, bool isTextFieldEditable = true, string textValidationRegex = ".*", string textFieldFormat = "") -> void -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SmallChange.get -> double -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TextFieldFormat.get -> string -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TextValidationRegex.get -> string -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickFrequency.get -> int -Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickPlacement.get -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.Both = 3 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.BottomRight = 2 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.None = 0 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.TopLeft = 1 -> Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement -Reloaded.Mod.Interfaces.Utilities.Extensions -static Reloaded.Mod.Interfaces.Utilities.Extensions.TryGetValue(this System.Collections.Generic.Dictionary pluginData, string key, out T result) -> bool \ No newline at end of file +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SliderControlParamsAttribute(double minimum = 0, double maximum = 1, double smallChange = 0.1, double largeChange = 1, int tickFrequency = 10, bool isSnapToTickEnabled = false, Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement tickPlacement = Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement.None, bool showTextField = false, bool isTextFieldEditable = true, string textValidationRegex = ".*", string textFieldFormat = "", double tickFrequencyDouble = 0) -> void +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SliderControlParamsAttribute(double minimum, double maximum, double smallChange, double largeChange, int tickFrequency, bool isSnapToTickEnabled, Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement tickPlacement, bool showTextField, bool isTextFieldEditable, string textValidationRegex) -> void +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.SliderControlParamsAttribute(double minimum, double maximum, double smallChange, double largeChange, int tickFrequency, bool isSnapToTickEnabled, Reloaded.Mod.Interfaces.Structs.SliderControlTickPlacement tickPlacement, bool showTextField, bool isTextFieldEditable, string textValidationRegex, string textFieldFormat) -> void +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickFrequencyDouble.get -> double +Reloaded.Mod.Interfaces.Structs.SliderControlParamsAttribute.TickFrequencyDouble.set -> void \ No newline at end of file diff --git a/source/Reloaded.Mod.Interfaces/Reloaded.Mod.Interfaces.csproj b/source/Reloaded.Mod.Interfaces/Reloaded.Mod.Interfaces.csproj index 3d39b667..59ac2452 100644 --- a/source/Reloaded.Mod.Interfaces/Reloaded.Mod.Interfaces.csproj +++ b/source/Reloaded.Mod.Interfaces/Reloaded.Mod.Interfaces.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 @@ -13,7 +13,7 @@ https://github.com/Reloaded-Project/Reloaded-II git true - 2.4.1 + 2.5.0 true AnyCPU 1701;1702;1591 diff --git a/source/Reloaded.Mod.Interfaces/Structs/ControlAttribute.cs b/source/Reloaded.Mod.Interfaces/Structs/ControlAttribute.cs index aec0872b..77d5c6c2 100644 --- a/source/Reloaded.Mod.Interfaces/Structs/ControlAttribute.cs +++ b/source/Reloaded.Mod.Interfaces/Structs/ControlAttribute.cs @@ -1,4 +1,4 @@ -namespace Reloaded.Mod.Interfaces.Structs; +namespace Reloaded.Mod.Interfaces.Structs; /// /// Change the position that the ticks appear for the Slider Control @@ -35,9 +35,22 @@ public class SliderControlParamsAttribute : Attribute, ICustomControlAttribute /// public double LargeChange { get; } /// - /// Places a tick every N values + /// Places a tick every N values. /// + /// + /// This property is obsolete. Use instead, which supports non-integer tick frequencies. + /// This property remains for binary backwards compatibility. + /// + [Obsolete("Use TickFrequencyDouble instead. This property remains for binary backwards compatibility.")] public int TickFrequency { get; } + + /// + /// Places a tick every N values. If set to a value greater than 0, this takes precedence over . + /// + /// + /// Default value is 0, which means the old property is used instead. + /// + public double TickFrequencyDouble { get; set; } /// /// If enabled, the slider will snap to the tick values. /// @@ -78,7 +91,23 @@ public SliderControlParamsAttribute( bool showTextField, bool isTextFieldEditable, string textValidationRegex -) : this(minimum, maximum, smallChange, largeChange, tickFrequency, isSnapToTickEnabled, tickPlacement, showTextField, isTextFieldEditable, textValidationRegex, textFieldFormat: "") +) : this(minimum, maximum, smallChange, largeChange, tickFrequency, isSnapToTickEnabled, tickPlacement, showTextField, isTextFieldEditable, textValidationRegex, "") + {} + + // 2.4.1 BACKCOMPAT OVERLOAD -- DO NOT TOUCH + public SliderControlParamsAttribute( + double minimum, + double maximum, + double smallChange, + double largeChange, + int tickFrequency, + bool isSnapToTickEnabled, + SliderControlTickPlacement tickPlacement, + bool showTextField, + bool isTextFieldEditable, + string textValidationRegex, + string textFieldFormat + ) : this(minimum, maximum, smallChange, largeChange, tickFrequency, isSnapToTickEnabled, tickPlacement, showTextField, isTextFieldEditable, textValidationRegex, textFieldFormat, 0) {} public SliderControlParamsAttribute( @@ -92,13 +121,17 @@ public SliderControlParamsAttribute( bool showTextField = false, bool isTextFieldEditable = true, string textValidationRegex = ".*", - string textFieldFormat = "" + string textFieldFormat = "", + double tickFrequencyDouble = 0 ) { Minimum = minimum; Maximum = maximum; SmallChange = smallChange; LargeChange = largeChange; +#pragma warning disable CS0618 // Type or member is obsolete TickFrequency = tickFrequency; +#pragma warning restore CS0618 + TickFrequencyDouble = tickFrequencyDouble; IsSnapToTickEnabled = isSnapToTickEnabled; TickPlacement = tickPlacement; ShowTextField = showTextField; diff --git a/source/Reloaded.Mod.Launcher/Controls/PropertyGridEx.cs b/source/Reloaded.Mod.Launcher/Controls/PropertyGridEx.cs index 75c9e9a5..7210dc5f 100644 --- a/source/Reloaded.Mod.Launcher/Controls/PropertyGridEx.cs +++ b/source/Reloaded.Mod.Launcher/Controls/PropertyGridEx.cs @@ -476,7 +476,9 @@ public override FrameworkElement CreateElement(PropertyItem propertyItem) Maximum = SliderControlParams.Maximum, SmallChange = SliderControlParams.SmallChange, LargeChange = SliderControlParams.LargeChange, - TickFrequency = SliderControlParams.TickFrequency, +#pragma warning disable CS0618 // TickFrequency is obsolete - intentional fallback for backward compatibility + TickFrequency = SliderControlParams.TickFrequencyDouble > 0 ? SliderControlParams.TickFrequencyDouble : SliderControlParams.TickFrequency, +#pragma warning restore CS0618 IsSnapToTickEnabled = SliderControlParams.IsSnapToTickEnabled, TickPlacement = SliderTickPlacementEnumConvert.ToTickPlacement(SliderControlParams.TickPlacement) }; diff --git a/source/Reloaded.Mod.Launcher/Reloaded.Mod.Launcher.csproj b/source/Reloaded.Mod.Launcher/Reloaded.Mod.Launcher.csproj index eb7d3493..a615f1b3 100644 --- a/source/Reloaded.Mod.Launcher/Reloaded.Mod.Launcher.csproj +++ b/source/Reloaded.Mod.Launcher/Reloaded.Mod.Launcher.csproj @@ -1,4 +1,4 @@ - + WinExe @@ -7,7 +7,7 @@ true Reloaded-II Reloaded.Mod.Launcher - 1.29.6 + 1.30.0 Sewer56 ~ $([System.DateTime]::UtcNow.ToString("s")) | $(Version) false appicon.ico diff --git a/source/Reloaded.Mod.Loader/Reloaded.Mod.Loader.csproj b/source/Reloaded.Mod.Loader/Reloaded.Mod.Loader.csproj index d8021f14..e58c3e3a 100644 --- a/source/Reloaded.Mod.Loader/Reloaded.Mod.Loader.csproj +++ b/source/Reloaded.Mod.Loader/Reloaded.Mod.Loader.csproj @@ -1,4 +1,4 @@ - + net9.0-windows 9.0.8 @@ -14,7 +14,7 @@ true false $(NoWarn);NU1605;NU1701 - 1.29.5 + 1.30.0 false x86;x64 false diff --git a/source/Testing/Mods/TestModControlParams/Config.cs b/source/Testing/Mods/TestModControlParams/Config.cs index def2ba12..7ada968f 100644 --- a/source/Testing/Mods/TestModControlParams/Config.cs +++ b/source/Testing/Mods/TestModControlParams/Config.cs @@ -1,4 +1,4 @@ -using System.ComponentModel; +using System.ComponentModel; using TestModControlParams.Template.Configuration; using Reloaded.Mod.Interfaces.Structs; @@ -28,6 +28,21 @@ public class Config : Configurable [SliderControlParams(minimum: 0.0, maximum: 1.0, showTextField: true, textFieldFormat: "{0:#,0.000}")] public double DoubleSlider { get; set; } = 0.5; + [DisplayName("Double Slider (TickFrequencyDouble)")] + [Description("This slider uses the new TickFrequencyDouble property for 0.01 tick increments.")] + [DefaultValue(0.5)] + [SliderControlParams( + minimum: 0.0, + maximum: 1.0, + smallChange: 0.001, + largeChange: 0.001, + isSnapToTickEnabled: true, + tickPlacement: SliderControlTickPlacement.BottomRight, + showTextField: true, + textFieldFormat: "{0:0.000}", + TickFrequencyDouble = 0.001)] + public double DoubleSliderWithTickFrequencyDouble { get; set; } = 0.5; + [DisplayName("File Picker")] [Description("This is a sample file picker.")] [DefaultValue("")]