Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion MonkeyLoader.Resonite.Integration/Locale/Monkeys/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
"MonkeyLoader.GamePacks.Resonite.SyncMemberEditorBuilderInjector.Name": "Sync Member Editor Builder Injektor",
"MonkeyLoader.GamePacks.Resonite.SyncMemberEditorBuilderInjector.Description": "Versendet die verschiedenen Build Member Editor Events, damit Monkeys die Generierung dieser überschreiben können.",

"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Name": "Button Delegate Tooltip Auflöser",
"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Name": "Delegate Tooltip Auflöser",
"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Description": "Wandelt das SyncDelegate Ziel eines Buttons in den Schlüssel für eine Übersetzungsnachricht um, damit diese als Tooltip angezeigt werden kann.",

"MonkeyLoader.GamePacks.Resonite.ButtonTooltips.Name": "Button Tooltips",
Expand All @@ -107,6 +107,9 @@
"MonkeyLoader.GamePacks.Resonite.HyperlinkTooltipResolver.Name": "Hyperlink Tooltip Auflöser",
"MonkeyLoader.GamePacks.Resonite.HyperlinkTooltipResolver.Description": "Löst die Anfrage für den Tooltip eines Buttons basierend dem Grund und der URL einer Hyperlink-Komponente auf.<br/>Diese können zu einem weiteren Tooltip für den Button hinzugefügt werden.",

"MonkeyLoader.GamePacks.Resonite.ReferenceProxySourceTooltipResolver.Name": "Referenzproxy Tooltip Auflöser",
"MonkeyLoader.GamePacks.Resonite.ReferenceProxySourceTooltipResolver.Description": "Löst die Anfrage für den Tooltip eines Buttons basierend auf der Zielreferenz einer ReferenceProxySource-Komponent auf.<br/>Used for components and fields in inspectors.",

"MonkeyLoader.GamePacks.Resonite.TooltipManager.Name": "Tooltip Manager",
"MonkeyLoader.GamePacks.Resonite.TooltipManager.Description": "Versendet die Tooltip Auflösungsanfragen aus verschiedenen Quellen. Das Tooltipsystem basiert auf dem Tooltippery Mod, der ursprünglich von Psychpsyo erstellt wurde.",

Expand Down
5 changes: 4 additions & 1 deletion MonkeyLoader.Resonite.Integration/Locale/Monkeys/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
"MonkeyLoader.GamePacks.Resonite.SyncMemberEditorBuilderInjector.Name": "Sync Member Editor Builder Injector",
"MonkeyLoader.GamePacks.Resonite.SyncMemberEditorBuilderInjector.Description": "Sends out the various Build Member Editor events to allow monkeys to override the generation of them.",

"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Name": "Button Delegate Tooltip Resolver",
"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Name": "Delegate Tooltip Resolver",
"MonkeyLoader.GamePacks.Resonite.ButtonDelegateTooltipResolver.Description": "Turns the SyncDelegate targeted by a Button into a locale key to display as a tooltip.",

"MonkeyLoader.GamePacks.Resonite.ButtonTooltips.Name": "Button Tooltips",
Expand All @@ -107,6 +107,9 @@
"MonkeyLoader.GamePacks.Resonite.HyperlinkTooltipResolver.Name": "Hyperlink Tooltip Resolver",
"MonkeyLoader.GamePacks.Resonite.HyperlinkTooltipResolver.Description": "Resolves the tooltip for a button based on a Hyperlink component's URL and reason.<br/>They may be added on to another tooltip for the button.",

"MonkeyLoader.GamePacks.Resonite.ReferenceProxySourceTooltipResolver.Name": "Reference Proxy Tooltip Resolver",
"MonkeyLoader.GamePacks.Resonite.ReferenceProxySourceTooltipResolver.Description": "Resolves the tooltip for a button based on a ReferenceProxySource component's target reference.<br/>Used for components and fields in inspectors.",

"MonkeyLoader.GamePacks.Resonite.TooltipManager.Name": "Tooltip Manager",
"MonkeyLoader.GamePacks.Resonite.TooltipManager.Description": "Sends out tooltip resolve requests from different sources. The tooltip system is based on the Tooltippery mod originally created by Psychpsyo.",

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
using EnumerableToolkit;
using FrooxEngine;
using FrooxEngine.UIX;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
using Elements.Core;
using FrooxEngine;
using FrooxEngine;
using FrooxEngine.UIX;
using HarmonyLib;
using MonkeyLoader.Patching;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
using FrooxEngine;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
using Elements.Core;
using FrooxEngine;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
using Elements.Core;
using FrooxEngine;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
internal sealed class ReferenceProxySourceTooltipResolver : ResoniteCancelableEventHandlerMonkey<ReferenceProxySourceTooltipResolver, ResolveTooltipLabelEvent>
{
public override bool CanBeDisabled => true;

public override int Priority => HarmonyLib.Priority.HigherThanNormal + 1;

public override bool SkipCanceled => true;

public static bool TryGetTooltipLabel(IButton button, [NotNullWhen(true)] out LocaleString? label)
{
label = null;

if (button.Slot.GetComponent<ReferenceProxySource>() is not ReferenceProxySource proxySource)
return false;

// Slots, Users, (User)Components, SyncObjects themselves
if (proxySource.Reference.Target is Worker targetWorker)
{
label = $"Tooltip.{string.Join('.', GetAllNestedNames(targetWorker.WorkerType).Reverse())}";
return true;
}

// Any synchronized data owned by Workers
if (proxySource.Reference.Target is not SyncElement targetElement)
return false;

var nesting = 0;

// FieldList are SyncElements with more SyncElements inside
// We want to use the name of the outermost one
// Not sure if there is any deeper nestings than one, but just to be sure...
while (targetElement.Parent is SyncElement parentElement)
{
++nesting;
targetElement = parentElement;
}

// Slots, Users, (User)Components, SyncObjects
if (targetElement.FindNearestParent<Worker>() is not Worker parentWorker)
return false;

if (parentWorker.GetSyncMemberFieldInfo(targetElement.Name) is not FieldInfo targetField)
return false;

label = (nesting is 0
? $"Tooltip.{string.Join('.', GetAllNestedNames(targetField.DeclaringType!).Reverse())}.{targetElement.Name}"
: $"Tooltip.{string.Join('.', GetAllNestedNames(targetField.DeclaringType!).Reverse())}.{targetElement.Name}.{string.Join('.', Enumerable.Repeat("Item", nesting))}"
).AsLocaleKey();

return true;
}

protected override void Handle(ResolveTooltipLabelEvent eventData)
{
if (TryGetTooltipLabel(eventData.Button, out var label))
eventData.Label = label;
}

private static IEnumerable<string> GetAllNestedNames(Type type)
{
yield return type.Name;

while (type.IsNested)
{
type = type.DeclaringType!;
yield return type.Name;
}
}
}
}
6 changes: 0 additions & 6 deletions MonkeyLoader.Resonite.Integration/UI/Tooltips/Tooltip.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
using Elements.Core;
using FrooxEngine;
using FrooxEngine.UIX;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using FrooxEngine;
using MonkeyLoader.Configuration;
using MonkeyLoader.Resonite.Configuration;
using System;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@
using EnumerableToolkit;
using FrooxEngine;
using MonkeyLoader.Events;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace MonkeyLoader.Resonite.UI.Tooltips
{
Expand Down
Loading