Skip to content

Commit 1a90b32

Browse files
committed
Fix case-(in)sensitivity when picking generic type parameters Yellow-Dog-Man/Resonite-Issues#636
1 parent 14ce144 commit 1a90b32

4 files changed

Lines changed: 45 additions & 6 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using FrooxEngine;
2+
using HarmonyLib;
3+
using MonkeyLoader.Patching;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Reflection;
7+
using System.Text;
8+
9+
namespace ComponentSelectorAdditions
10+
{
11+
[HarmonyPatchCategory(nameof(CaseSensitivityFix))]
12+
internal sealed class CaseSensitivityFix : Monkey<CaseSensitivityFix>
13+
{
14+
public override bool CanBeDisabled => true;
15+
16+
protected override bool OnLoaded()
17+
{
18+
if (!Enabled)
19+
return true;
20+
21+
GlobalTypeRegistry._nameToSystemType = new(GlobalTypeRegistry._nameToSystemType, StringComparer.OrdinalIgnoreCase);
22+
GlobalTypeRegistry._byName = new(GlobalTypeRegistry._byName, StringComparer.OrdinalIgnoreCase);
23+
24+
return base.OnLoaded();
25+
}
26+
27+
private static void Postfix(AssemblyTypeRegistry __instance)
28+
{
29+
__instance._typesByFullName = new(__instance._typesByFullName, StringComparer.OrdinalIgnoreCase);
30+
__instance._typesByName.dictionary = new(__instance._typesByName.dictionary, StringComparer.OrdinalIgnoreCase);
31+
__instance._movedTypes = new(__instance._movedTypes, StringComparer.OrdinalIgnoreCase);
32+
}
33+
34+
private static IEnumerable<MethodBase> TargetMethods()
35+
=> AccessTools.GetDeclaredConstructors(typeof(AssemblyTypeRegistry), false);
36+
}
37+
}

ComponentSelectorAdditions/ComponentSelectorAdditions.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@
3030
</ItemGroup>
3131

3232
<ItemGroup>
33-
<PackageReference Include="MonkeyLoader.GamePacks.Resonite" Version="0.19.2-beta" />
34-
<PackageReference Include="PolySharp" Version="1.14.1">
33+
<PackageReference Include="MonkeyLoader.GamePacks.Resonite" Version="0.21.2-beta" />
34+
<PackageReference Include="PolySharp" Version="1.15.0">
3535
<PrivateAssets>all</PrivateAssets>
3636
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3737
</PackageReference>
38-
<PackageReference Include="Resonite.Elements.Assets" Version="1.2.1" />
39-
<PackageReference Include="Resonite.Elements.Core" Version="1.2.1" />
40-
<PackageReference Include="Resonite.Elements.Quantity" Version="1.2.1" />
41-
<PackageReference Include="Resonite.FrooxEngine" Version="2024.8.6.1341" />
38+
<PackageReference Include="Resonite.Elements.Assets" Version="1.2.2" />
39+
<PackageReference Include="Resonite.Elements.Core" Version="1.4.2" />
40+
<PackageReference Include="Resonite.Elements.Quantity" Version="1.2.2" />
41+
<PackageReference Include="Resonite.FrooxEngine" Version="2024.11.21.479" />
4242
</ItemGroup>
4343
</Project>

ComponentSelectorAdditions/Locale/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"ComponentSelectorAdditions.Search": "<i>Suchen ...</i>",
88
"ComponentSelectorAdditions.EnterType": "<i>Typ eingeben...</i>",
99

10+
"ComponentSelectorAdditions.CaseSensitivityFix.Description": "Macht das Auswählen von eigenen generischen Typparametern unabhängig von Groß- und Kleinschreibung. Kann deaktiviert werden, wenn der Bug behoben wurde.",
1011
"ComponentSelectorAdditions.CurrentPathIndicator.Description": "Fügt eine Anzeige für den Pfad der aktuellen Kategorie (und des generischen Typs) zu Komponenten-Selektoren hinzu.",
1112
"ComponentSelectorAdditions.DefaultHandler.Description": "Führt das Standardverhalten für die Events des Injectors mit normaler Priorität aus.",
1213
"ComponentSelectorAdditions.FavoritesCategories.Description": "Fügt 'Favorites' Kategorien zu den Wurzelkategorien von Komponenten-Selektoren und ProtoFlux Nodebrowsern hinzu und macht Kategorien und Komponenten / Nodes favorisierbar.",

ComponentSelectorAdditions/Locale/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"ComponentSelectorAdditions.Search": "<i>Search ...</i>",
66
"ComponentSelectorAdditions.EnterType": "<i>Enter Type ...</i>",
77

8+
"ComponentSelectorAdditions.CaseSensitivityFix.Description": "Makes picking custom generic type parameters case-insensitive. Can be disabled when the bug gets fixed.",
89
"ComponentSelectorAdditions.CurrentPathIndicator.Description": "Adds an indicator for the current category (and generic Type) path to omponent selectors.",
910
"ComponentSelectorAdditions.DefaultHandler.Description": "Handles the default behavior for the events of the Injector at normal priority.",
1011
"ComponentSelectorAdditions.FavoritesCategories.Description": "Adds 'Favorites' categories to Component selectors and ProtoFlux Node browser roots and makes categories and components / nodes favoritable.",

0 commit comments

Comments
 (0)