Updated for client version 0.14.1.2.29197
This commit is contained in:
parent
e4c0280a09
commit
ab9ca14b93
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.CustomInteractions.Prepatch</AssemblyName>
|
||||
<Version>1.3.1</Version>
|
||||
<Version>1.4.0</Version>
|
||||
<RootNamespace>IcyClawz.CustomInteractions</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -10,8 +10,7 @@ public static class Prepatch
|
||||
|
||||
public static void Patch(AssemblyDefinition assembly)
|
||||
{
|
||||
TypeDefinition type = assembly.MainModule.GetType("GClass2816"); // DynamicInteraction
|
||||
type.IsSealed = false;
|
||||
TypeDefinition type = assembly.MainModule.GetType("DynamicInteractionClass");
|
||||
FieldDefinition field = type.Fields.SingleOrDefault(c => c.Name is "action_0");
|
||||
field.IsFamily = true;
|
||||
field.IsInitOnly = false;
|
||||
|
@ -1,3 +1,4 @@
|
||||
using Comfort.Common;
|
||||
using EFT.InventoryLogic;
|
||||
using EFT.UI;
|
||||
using JetBrains.Annotations;
|
||||
@ -8,8 +9,7 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
using DynamicInteraction = GClass2816;
|
||||
using EmptyInteractions = GClass2817<System.Enum>;
|
||||
using EmptyInteractionsAbstractClass = GClass3039;
|
||||
|
||||
namespace IcyClawz.CustomInteractions;
|
||||
|
||||
@ -34,7 +34,7 @@ public static class CustomInteractionsManager
|
||||
|
||||
public class CustomInteraction()
|
||||
{
|
||||
internal readonly CustomInteractionImpl Impl = new();
|
||||
internal readonly CustomInteractionImpl Impl = new(UnityEngine.Random.Range(0, int.MaxValue).ToString("x4"));
|
||||
|
||||
public Func<string> Caption { get => Impl.Caption; set => Impl.Caption = value; }
|
||||
public Func<Sprite> Icon { get => Impl.Icon; set => Impl.Icon = value; }
|
||||
@ -44,8 +44,7 @@ public class CustomInteraction()
|
||||
public Func<string> Error { get => Impl.Error; set => Impl.Error = value; }
|
||||
}
|
||||
|
||||
internal sealed class CustomInteractionImpl()
|
||||
: DynamicInteraction(UnityEngine.Random.Range(0, int.MaxValue).ToString("x4"))
|
||||
internal sealed class CustomInteractionImpl(string id) : DynamicInteractionClass(id, id)
|
||||
{
|
||||
public Func<string> Caption { get; set; }
|
||||
public new Func<Sprite> Icon { get; set; }
|
||||
@ -71,32 +70,27 @@ public abstract class CustomSubInteractions(ItemUiContext uiContext)
|
||||
public void AddRange(IEnumerable<CustomInteraction> interactions) => interactions.ExecuteForEach(Impl.AddCustomInteraction);
|
||||
public void Remove(CustomInteraction interaction) => Impl.RemoveCustomInteraction(interaction);
|
||||
public void RemoveRange(IEnumerable<CustomInteraction> interactions) => interactions.ExecuteForEach(Impl.RemoveCustomInteraction);
|
||||
public void CallRedraw() => Impl.CallRedraw();
|
||||
public void CallRedraw(string templateId) => Impl.CallRedraw(templateId);
|
||||
}
|
||||
|
||||
internal sealed class CustomSubInteractionsImpl(ItemUiContext uiContext)
|
||||
: EmptyInteractions(uiContext)
|
||||
internal sealed class CustomSubInteractionsImpl(ItemUiContext uiContext) : EmptyInteractionsAbstractClass(uiContext)
|
||||
{
|
||||
public IEnumerable<CustomInteractionImpl> CustomInteractions => DynamicInteractions.OfType<CustomInteractionImpl>();
|
||||
|
||||
public bool ExaminationRequiredInternal { get; set; } = true;
|
||||
public override bool ExaminationRequired => ExaminationRequiredInternal;
|
||||
public override bool HasIcons => CustomInteractions.Any(interaction => interaction.Icon is not null);
|
||||
|
||||
public void CallRedraw() => itemUiContext_0.RedrawContextMenus(null);
|
||||
}
|
||||
|
||||
internal static class AbstractInteractionsExtensions
|
||||
{
|
||||
private static Dictionary<string, DynamicInteraction> GetDynamicInteractions<T>(this GClass2817<T> instance) where T : Enum =>
|
||||
typeof(GClass2817<T>).GetField("dictionary_1", BindingFlags.NonPublic | BindingFlags.Instance)
|
||||
.GetValue(instance) as Dictionary<string, DynamicInteraction>;
|
||||
private static Dictionary<string, DynamicInteractionClass> GetDynamicInteractions<T>(this ItemInfoInteractionsAbstractClass<T> instance) where T : struct, Enum =>
|
||||
typeof(ItemInfoInteractionsAbstractClass<T>).GetField("dictionary_0", BindingFlags.NonPublic | BindingFlags.Instance)
|
||||
.GetValue(instance) as Dictionary<string, DynamicInteractionClass>;
|
||||
|
||||
public static void AddCustomInteraction<T>(this GClass2817<T> instance, CustomInteraction interaction) where T : Enum =>
|
||||
public static void AddCustomInteraction<T>(this ItemInfoInteractionsAbstractClass<T> instance, CustomInteraction interaction) where T : struct, Enum =>
|
||||
instance.GetDynamicInteractions()[interaction.Impl.Key] = interaction.Impl;
|
||||
|
||||
public static void RemoveCustomInteraction<T>(this GClass2817<T> instance, CustomInteraction interaction) where T : Enum =>
|
||||
public static void RemoveCustomInteraction<T>(this ItemInfoInteractionsAbstractClass<T> instance, CustomInteraction interaction) where T : struct, Enum =>
|
||||
instance.GetDynamicInteractions().Remove(interaction.Impl.Key);
|
||||
}
|
||||
|
||||
@ -121,7 +115,7 @@ internal static class InteractionButtonsContainerExtensions
|
||||
CurrentButtonField.SetValue(instance, button);
|
||||
|
||||
private static readonly MethodInfo CreateButtonMethod =
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_1", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_1", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
private static SimpleContextMenuButton CreateButton(this InteractionButtonsContainer instance,
|
||||
string key, string caption, SimpleContextMenuButton template, RectTransform container,
|
||||
@ -132,13 +126,13 @@ internal static class InteractionButtonsContainerExtensions
|
||||
]);
|
||||
|
||||
private static readonly MethodInfo CloseSubMenuMethod =
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_4", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_4", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
private static void CloseSubMenu(this InteractionButtonsContainer instance) =>
|
||||
CloseSubMenuMethod.Invoke(instance, null);
|
||||
|
||||
private static readonly MethodInfo AddButtonMethod =
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_5", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_5", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
private static void AddButton(this InteractionButtonsContainer instance, SimpleContextMenuButton button) =>
|
||||
AddButtonMethod.Invoke(instance, [button]);
|
||||
@ -173,7 +167,7 @@ internal static class InteractionButtonsContainerExtensions
|
||||
false
|
||||
);
|
||||
button.SetButtonInteraction(
|
||||
(isInteractive, impl.Error?.Invoke() ?? "")
|
||||
isInteractive ? SuccessfulResult.New : new FailedResult(impl.Error?.Invoke() ?? "", 0)
|
||||
);
|
||||
instance.AddButton(button);
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.CustomInteractions</AssemblyName>
|
||||
<Version>1.3.1</Version>
|
||||
<Version>1.4.0</Version>
|
||||
<RootNamespace>IcyClawz.CustomInteractions</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
@ -18,6 +18,9 @@
|
||||
<Reference Include="BepInEx">
|
||||
<HintPath>..\Shared\BepInEx.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Comfort">
|
||||
<HintPath>..\Shared\Comfort.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Sirenix.Serialization">
|
||||
<HintPath>..\Shared\Sirenix.Serialization.dll</HintPath>
|
||||
</Reference>
|
||||
|
@ -4,13 +4,9 @@ using EFT.UI;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
using DynamicInteraction = GClass2816;
|
||||
using ItemContext = GClass2623;
|
||||
using ItemInfoInteractions = GClass2817<EFT.InventoryLogic.EItemInfoButton>;
|
||||
|
||||
namespace IcyClawz.CustomInteractions;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.CustomInteractions", "IcyClawz.CustomInteractions", "1.3.1")]
|
||||
[BepInPlugin("com.IcyClawz.CustomInteractions", "IcyClawz.CustomInteractions", "1.4.0")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
private void Awake()
|
||||
@ -26,7 +22,8 @@ internal class ItemUiContextPatch : ModulePatch
|
||||
typeof(ItemUiContext).GetMethod("GetItemContextInteractions", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
[PatchPostfix]
|
||||
private static void Postfix(ref ItemInfoInteractions __result, ref ItemUiContext __instance, ItemContext itemContext)
|
||||
private static void Postfix(ref ItemInfoInteractionsAbstractClass<EFT.InventoryLogic.EItemInfoButton> __result,
|
||||
ref ItemUiContext __instance, ItemContextClass itemContext)
|
||||
{
|
||||
foreach (var provider in CustomInteractionsManager.Providers.OfType<IItemCustomInteractionsProvider>())
|
||||
{
|
||||
@ -42,10 +39,10 @@ internal class ItemUiContextPatch : ModulePatch
|
||||
internal class InteractionButtonsContainerPatch : ModulePatch
|
||||
{
|
||||
protected override MethodBase GetTargetMethod() =>
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_3", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
typeof(InteractionButtonsContainer).GetMethod("method_3", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
[PatchPrefix]
|
||||
private static bool Prefix(ref InteractionButtonsContainer __instance, DynamicInteraction interaction)
|
||||
private static bool Prefix(ref InteractionButtonsContainer __instance, DynamicInteractionClass interaction)
|
||||
{
|
||||
if (interaction is CustomInteractionImpl impl)
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.ItemAttributeFix</AssemblyName>
|
||||
<Version>1.2.0</Version>
|
||||
<Version>1.3.0</Version>
|
||||
<RootNamespace>IcyClawz.ItemAttributeFix</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -5,7 +5,7 @@ using System.Reflection;
|
||||
|
||||
namespace IcyClawz.ItemAttributeFix;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.ItemAttributeFix", "IcyClawz.ItemAttributeFix", "1.2.0")]
|
||||
[BepInPlugin("com.IcyClawz.ItemAttributeFix", "IcyClawz.ItemAttributeFix", "1.3.0")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
private void Awake() =>
|
||||
|
@ -8,8 +8,8 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
using ILightTemplate = GInterface246;
|
||||
using ResourceCache = GClass1977;
|
||||
using ILightTemplate = GInterface295;
|
||||
using GlobalEvents = GClass3019;
|
||||
|
||||
namespace IcyClawz.ItemContextMenuExt;
|
||||
|
||||
@ -60,12 +60,12 @@ internal sealed class CustomInteractionsProvider : IItemCustomInteractionsProvid
|
||||
yield return new()
|
||||
{
|
||||
Caption = () => (lightComponent.IsActive ? "TurnOff" : "TurnOn").Localized(),
|
||||
Icon = () => ResourceCache.Pop<Sprite>(IconsPrefix + (lightComponent.IsActive ? "TurnOff" : "TurnOn")),
|
||||
Icon = () => CacheResourcesPopAbstractClass.Pop<Sprite>(IconsPrefix + (lightComponent.IsActive ? "TurnOff" : "TurnOn")),
|
||||
Action = () =>
|
||||
{
|
||||
Singleton<GUISounds>.Instance.PlayUISound(EUISoundType.MenuContextMenu);
|
||||
ComponentUtils.SetLightState(lightComponent, !lightComponent.IsActive, lightComponent.SelectedMode);
|
||||
uiContext.RedrawContextMenus([item.TemplateId]);
|
||||
GlobalEvents.RequestGlobalRedraw();
|
||||
}
|
||||
};
|
||||
// Switch mode
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.ItemContextMenuExt</AssemblyName>
|
||||
<Version>1.2.1</Version>
|
||||
<Version>1.4.0</Version>
|
||||
<RootNamespace>IcyClawz.ItemContextMenuExt</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -3,7 +3,7 @@ using IcyClawz.CustomInteractions;
|
||||
|
||||
namespace IcyClawz.ItemContextMenuExt;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.ItemContextMenuExt", "IcyClawz.ItemContextMenuExt", "1.2.1")]
|
||||
[BepInPlugin("com.IcyClawz.ItemContextMenuExt", "IcyClawz.ItemContextMenuExt", "1.4.0")]
|
||||
[BepInDependency("com.IcyClawz.CustomInteractions")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
|
@ -8,7 +8,7 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
using CurrencyUtil = GClass2334;
|
||||
using CurrencyUtil = GClass2517;
|
||||
|
||||
namespace IcyClawz.ItemSellPrice;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.ItemSellPrice</AssemblyName>
|
||||
<Version>1.2.1</Version>
|
||||
<Version>1.3.0</Version>
|
||||
<RootNamespace>IcyClawz.ItemSellPrice</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -5,7 +5,7 @@ using System.Reflection;
|
||||
|
||||
namespace IcyClawz.ItemSellPrice;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.ItemSellPrice", "IcyClawz.ItemSellPrice", "1.2.1")]
|
||||
[BepInPlugin("com.IcyClawz.ItemSellPrice", "IcyClawz.ItemSellPrice", "1.3.0")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
private void Awake()
|
||||
|
@ -7,7 +7,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
using InGameStatus = GClass1716;
|
||||
using InGameStatus = GClass1849;
|
||||
|
||||
namespace IcyClawz.MagazineInspector;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.MagazineInspector</AssemblyName>
|
||||
<Version>1.2.1</Version>
|
||||
<Version>1.3.0</Version>
|
||||
<RootNamespace>IcyClawz.MagazineInspector</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -4,7 +4,7 @@ using System.Reflection;
|
||||
|
||||
namespace IcyClawz.MagazineInspector;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.MagazineInspector", "IcyClawz.MagazineInspector", "1.2.1")]
|
||||
[BepInPlugin("com.IcyClawz.MagazineInspector", "IcyClawz.MagazineInspector", "1.3.0")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
private void Awake() =>
|
||||
|
@ -39,7 +39,7 @@ internal sealed class ConfigurationManagerAttributes
|
||||
/// Custom setting editor (OnGUI code that replaces the default editor provided by ConfigurationManager).
|
||||
/// See below for a deeper explanation. Using a custom drawer will cause many of the other fields to do nothing.
|
||||
/// </summary>
|
||||
public System.Action<BepInEx.Configuration.ConfigEntryBase> CustomDrawer;
|
||||
public System.Action<ConfigEntryBase> CustomDrawer;
|
||||
|
||||
/// <summary>
|
||||
/// Show this setting in the settings screen at all? If false, don't show.
|
||||
|
@ -3,7 +3,7 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<AssemblyName>IcyClawz.MunitionsExpert</AssemblyName>
|
||||
<Version>1.2.1</Version>
|
||||
<Version>1.3.0</Version>
|
||||
<RootNamespace>IcyClawz.MunitionsExpert</RootNamespace>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
@ -13,7 +13,7 @@ using UnityEngine.UI;
|
||||
|
||||
namespace IcyClawz.MunitionsExpert;
|
||||
|
||||
[BepInPlugin("com.IcyClawz.MunitionsExpert", "IcyClawz.MunitionsExpert", "1.2.1")]
|
||||
[BepInPlugin("com.IcyClawz.MunitionsExpert", "IcyClawz.MunitionsExpert", "1.3.0")]
|
||||
public class Plugin : BaseUnityPlugin
|
||||
{
|
||||
private static ConfigEntry<bool> ColorizeSwitch { get; set; }
|
||||
@ -82,7 +82,7 @@ internal class ItemViewPatch : ModulePatch
|
||||
typeof(ItemView).GetField("BackgroundColor", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
|
||||
protected override MethodBase GetTargetMethod() =>
|
||||
typeof(ItemView).GetMethod("UpdateColor", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
typeof(ItemView).GetMethod("UpdateColor", BindingFlags.Public | BindingFlags.Instance);
|
||||
|
||||
[PatchPrefix]
|
||||
private static void PatchPrefix(ref ItemView __instance)
|
||||
|
Loading…
x
Reference in New Issue
Block a user