From 4b864b2baa1e119c7c289b891a11ba6d1a87293d Mon Sep 17 00:00:00 2001 From: doombubbles Date: Tue, 3 Sep 2024 09:06:48 -0700 Subject: [PATCH] Round Set Changer / Apopalypse changes, minor fixes --- .../Api/Helpers/FileDialogHelper.cs | 2 +- BloonsTD6 Mod Helper/LATEST.md | 66 ++---------------- BloonsTD6 Mod Helper/MelonMain.cs | 9 +++ BloonsTD6 Mod Helper/ModHelper.cs | 2 +- .../Patches/UI/PauseScreen_Open.cs | 5 +- .../UI/UI_ApplyExtraNotInSimModelSettings.cs | 20 ++++++ .../Resources/IconMinimal.png | Bin 20627 -> 14835 bytes .../UI/Modded/RoundSetChanger.cs | 7 +- Documentation/BTD_Mod_Helper.BloonsMod.md | 12 +++- 9 files changed, 57 insertions(+), 66 deletions(-) create mode 100644 BloonsTD6 Mod Helper/Patches/UI/UI_ApplyExtraNotInSimModelSettings.cs diff --git a/BloonsTD6 Mod Helper/Api/Helpers/FileDialogHelper.cs b/BloonsTD6 Mod Helper/Api/Helpers/FileDialogHelper.cs index 6d72788f4..3140ceb23 100644 --- a/BloonsTD6 Mod Helper/Api/Helpers/FileDialogHelper.cs +++ b/BloonsTD6 Mod Helper/Api/Helpers/FileDialogHelper.cs @@ -7,7 +7,7 @@ namespace BTD_Mod_Helper.Api.Helpers; /// public static class FileDialogHelper { - private static readonly string[] Dlls = {"nfd.dll", "nfd_x86.dll"}; + private static readonly string[] Dlls = ["nfd.dll", "nfd_x86.dll"]; /// /// Ensure that the NFD native dlls are present in the game root folder diff --git a/BloonsTD6 Mod Helper/LATEST.md b/BloonsTD6 Mod Helper/LATEST.md index 984a4e51a..5e73e6799 100644 --- a/BloonsTD6 Mod Helper/LATEST.md +++ b/BloonsTD6 Mod Helper/LATEST.md @@ -1,59 +1,7 @@ -## Misc Updates - -- Added a button that lets you open the Mods Menu from the In Game Pause Screen - - This includes opening Mod Settings menus, but not many settings yet will probably live update in a game -- Added a button in the Mods Menu that can display the SHA 256 hashes of active mods -- Added a new `ModTower.IncludeInMonkeyTeams` override -- Fixed some inconsistencies where some simulation behavior extensions would throw exceptions instead of just returning null -- ModHelperData now supports multiline raw strings for descriptions, [example](https://github.com/doombubbles/ability-choice/blob/699658591855043372a128294de679670600e3c1/ModHelperData.cs#L10) - -## Localization Updates - -### General - -- Added a new button in the Mods Menu to export a mod's localization to a json file, which can be edited to change its - supported displayed text for your language - - This goes to a newly added subfolder `Mods/BloonsTD6 Mod Helper/Localization/[Language]` - - Edits to files here should refresh the text without requiring a game restart -- Added a new [Translation Tool page on the website](https://gurrenm3.github.io/BTD-Mod-Helper/tools/translate) that can - easily put Localization files through Google translate for individual or all supported languages - - Using this tool, Mod Helper now contains Localizations for all supported BTD6 language. If you see a way that - one/many of the Google Translations could be improved for your language, you can help out by submitting edits to - the [corresponding Language file](https://github.com/gurrenm3/BTD-Mod-Helper/tree/master/BloonsTD6%20Mod%20Helper/Localization) through GitHub -- The text in mods that should be automatically supported for localization editing includes - - Names and Descriptions for Towers, Upgrades, Heroes, Bloons etc - - Names and Descriptions for Mod Settings - - General mod info like the description - -### For Modders - -- The standard btd6.targets import will now automatically embed `/Localization/[Language].json` files in your mod - project - - Use the Localization Button on your own mod with active language English to get a starter .json for your mod - - If you paste in the .json content on the website and press the "Translate All" button it will create a .zip file - with all the correctly named .json files you'd need for your mod -- ModHelperText and ModHelperDropdown components now Localize their texts by default -- For Localization Entries, putting text within [Square Brackets] will make it try to fetch existing localization for - that key - - e.g. `The description is [DartMonkey Description]` -> - `The description is Throws a single dart at nearby Bloons. Short range and low pierce but cheap.` -- Added new `ModContent.Localize` methods that can add new mod specific localizations from variables - ```csharp - private static readonly string DoTheThing = ModContent.Localize(nameof(DoTheThing), "Do The Thing!"); - ``` - Or within any method/constructor that's going to run as the game loads - ```csharp - var doTheThing = ModContent.Localize(nameof(DoTheThing), "Do The Thing!"); - ``` - The result assigned to the `DoTheThing` is your mod specific localization key, that you can use in a - `ModHelperText.SetText(DoTheThing)` directly or as `string localizedText = DoTheThing.Localize()` otherwise -- As before, you can still override the `RegisterText` method in any class that extends `NamedModContent` to - directly add extra stuff to the text table - ```csharp - public override void RegisterText(Il2CppSystem.Collections.Generic.Dictionary textTable) - { - base.RegisterText(textTable); // Call the base to still register DisplayName / Description - - textTable[Id + " Long Description"] = LongDescription; // More specific stuff to your ModContent - } - ``` +- Pause Screen Mods Button now shows number of active mods +- Updated icon for Pause Screen mods button +- Made it less likely for other mods to have errors if they tried to use file/folder picker popups outside standard mod settings +- Apopalypse Mode is now correctly affected by the Round Set changer +- Made the Round Changer button also show up in the Challenge Editor Play screen + - Note: The Round Set Changer would always technically apply to challenges, this is just making it clearer and easier + to change without going back to the normal map play screens \ No newline at end of file diff --git a/BloonsTD6 Mod Helper/MelonMain.cs b/BloonsTD6 Mod Helper/MelonMain.cs index 9cd602f0b..d7842638c 100644 --- a/BloonsTD6 Mod Helper/MelonMain.cs +++ b/BloonsTD6 Mod Helper/MelonMain.cs @@ -88,6 +88,15 @@ public override void OnInitialize() loadErrors.Add("MelonLoader versions higher than 0.6.1 are not yet considered stable for BloonsTD6. " + "Please downgrade to MelonLoader 0.6.1 via its installer for best results."); } + + try + { + FileDialogHelper.PrepareNativeDlls(); + } + catch (Exception e) + { + ModHelper.Warning(e); + } } public override void OnUpdate() diff --git a/BloonsTD6 Mod Helper/ModHelper.cs b/BloonsTD6 Mod Helper/ModHelper.cs index 731276d99..613ef553f 100644 --- a/BloonsTD6 Mod Helper/ModHelper.cs +++ b/BloonsTD6 Mod Helper/ModHelper.cs @@ -16,7 +16,7 @@ namespace BTD_Mod_Helper; public static class ModHelper { internal const string Name = "BloonsTD6 Mod Helper"; - internal const string Version = "3.2.0"; + internal const string Version = "3.2.1"; internal const string RepoOwner = "gurrenm3"; internal const string RepoName = "BTD-Mod-Helper"; internal const string Description = diff --git a/BloonsTD6 Mod Helper/Patches/UI/PauseScreen_Open.cs b/BloonsTD6 Mod Helper/Patches/UI/PauseScreen_Open.cs index 4ea9e17e9..348b1ad83 100644 --- a/BloonsTD6 Mod Helper/Patches/UI/PauseScreen_Open.cs +++ b/BloonsTD6 Mod Helper/Patches/UI/PauseScreen_Open.cs @@ -1,4 +1,5 @@ -using BTD_Mod_Helper.Api; +using System.Linq; +using BTD_Mod_Helper.Api; using BTD_Mod_Helper.UI.Menus; using BTD_Mod_Helper.UI.Modded; using Il2CppAssets.Scripts.Unity.UI_New.Pause; @@ -68,7 +69,7 @@ private static void Postfix(PauseScreen __instance) image.SetSprite(sprite); var modsText = modsBtn.GetComponentInChildren(); - modsText.localizeKey = ModsButton.Mods; + modsText.localizeKey = $"[{ModsButton.Mods}] ({ModHelper.Melons.Count()})"; modsText.SetText(ModsButton.Mods.Localize()); } diff --git a/BloonsTD6 Mod Helper/Patches/UI/UI_ApplyExtraNotInSimModelSettings.cs b/BloonsTD6 Mod Helper/Patches/UI/UI_ApplyExtraNotInSimModelSettings.cs new file mode 100644 index 000000000..982815824 --- /dev/null +++ b/BloonsTD6 Mod Helper/Patches/UI/UI_ApplyExtraNotInSimModelSettings.cs @@ -0,0 +1,20 @@ +using BTD_Mod_Helper.UI.Modded; +using Il2CppAssets.Scripts.Models; +using Il2CppAssets.Scripts.Simulation.Track.RoundManagers; +using Il2CppAssets.Scripts.Unity.Bridge; + +namespace BTD_Mod_Helper.Patches.UI; + +[HarmonyPatch(typeof(Il2CppAssets.Scripts.Unity.UI_New.UI), nameof(Il2CppAssets.Scripts.Unity.UI_New.UI.ApplyExtraNotInSimModelSettings))] +internal static class UI_ApplyExtraNotInSimModelSettings +{ + [HarmonyPostfix] + internal static void Postfix(UnityToSimulation uts, GameModel model) + { + if (!string.IsNullOrEmpty(RoundSetChanger.RoundSetOverride) && model.isApopalypse) + { + var roundManager = new DefaultRoundManager(model); + uts.InitRoundSet(roundManager); + } + } +} \ No newline at end of file diff --git a/BloonsTD6 Mod Helper/Resources/IconMinimal.png b/BloonsTD6 Mod Helper/Resources/IconMinimal.png index b070059321de47232306f06ee49444204d98d2c0..9fb12a01dff1c5d7e459a81844c29d9200fdf477 100644 GIT binary patch literal 14835 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

M>u0F^?!}m1!dvt59;s6mRZh&s&u;A@71Ocxy%Z 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 + +## BloonsMod.SaveModSettings() Method + +Saves the current mod settings for this mod + +```csharp +public void SaveModSettings(); +``` \ No newline at end of file