mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
Add ExtendedPassiveButton for touch support
This commit is contained in:
1 parent
c876c01c04
commit
be0d03e9e3
35 files changed
+202
-83
No files matched your search
@@ -1,7 +1,7 @@
|
||||
using AmongUs.GameOptions;
|
||||
using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.Player;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using InnerNet;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Cpp2IL.Core.Extensions;
|
||||
using TMPro;
|
||||
|
||||
@@ -4,7 +4,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.AntiCheat;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Network;
|
||||
using BetterAmongUs.Structs;
|
||||
using HarmonyLib;
|
||||
|
||||
@@ -6,7 +6,7 @@ using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.AntiCheat.RPCHandlers.NetObjectHandlers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Network;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -5,7 +5,7 @@ using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using BetterAmongUs.Attributes;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
|
||||
namespace BetterAmongUs.Modules.AntiCheat.RPCHandlers;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using BetterAmongUs.Attributes;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
|
||||
namespace BetterAmongUs.Modules.AntiCheat.RPCHandlers;
|
||||
|
||||
@@ -2,7 +2,7 @@ using AmongUs.GameOptions;
|
||||
using BetterAmongUs.Attributes;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
using InnerNet;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using BetterAmongUs.Attributes;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using Hazel;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using BetterAmongUs.Attributes;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
|
||||
namespace BetterAmongUs.Modules.AntiCheat.RPCHandlers;
|
||||
|
||||
@@ -3,7 +3,7 @@ using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Network;
|
||||
using Hazel;
|
||||
using Il2CppInterop.Runtime.Attributes;
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
using BetterAmongUs.Modules;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BetterAmongUs.Mono.Extended;
|
||||
|
||||
/// <summary>
|
||||
/// Extends PassiveButton with hold and shift-click functionality.
|
||||
/// </summary>
|
||||
internal class ExtendedPassiveButton : MonoBehaviour, IMonoExtension<PassiveButton>
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the base PassiveButton instance.
|
||||
/// </summary>
|
||||
public PassiveButton? BaseMono { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Triggered when the button has been held down for the duration specified by <see cref="HoldTriggerTime"/>.
|
||||
/// </summary>
|
||||
public Action? OnHold = null;
|
||||
|
||||
/// <summary>
|
||||
/// Triggered either when the button is held (after hold trigger time) OR when shift-clicking.
|
||||
/// </summary>
|
||||
public Action? OnHoldOrShiftClick = null;
|
||||
|
||||
/// <summary>
|
||||
/// Triggered when shift-clicking the button (LeftShift + click).
|
||||
/// </summary>
|
||||
public Action? OnShiftClick = null;
|
||||
|
||||
/// <summary>
|
||||
/// Time in seconds the button must be held to trigger hold events.
|
||||
/// </summary>
|
||||
public float HoldTriggerTime = 0.5f;
|
||||
|
||||
private bool m_isHolding;
|
||||
private float m_holdTimer;
|
||||
private bool m_suppressClick;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (!this.RegisterExtension())
|
||||
return;
|
||||
|
||||
BaseMono.OnDown = true;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
this.UnregisterExtension();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (m_isHolding)
|
||||
{
|
||||
m_holdTimer += Time.deltaTime;
|
||||
if (m_holdTimer >= HoldTriggerTime)
|
||||
{
|
||||
BaseMono.ReceiveClickUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when the button is pressed down to start tracking hold state.
|
||||
/// </summary>
|
||||
public void TriggerClickDown()
|
||||
{
|
||||
m_isHolding = true;
|
||||
m_suppressClick = false;
|
||||
m_holdTimer = 0f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when the button is released. Determines whether to trigger hold end, shift-click, or the base click event.
|
||||
/// </summary>
|
||||
public void TriggerClickUp()
|
||||
{
|
||||
if (m_holdTimer >= HoldTriggerTime)
|
||||
{
|
||||
OnHold?.Invoke();
|
||||
OnHoldOrShiftClick?.Invoke();
|
||||
m_suppressClick = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_suppressClick)
|
||||
{
|
||||
m_suppressClick = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) && (OnShiftClick != null || OnHoldOrShiftClick != null))
|
||||
{
|
||||
OnShiftClick?.Invoke();
|
||||
OnHoldOrShiftClick?.Invoke();
|
||||
}
|
||||
else if (BaseMono.OnClick != null)
|
||||
{
|
||||
BaseMono.OnClick.Invoke();
|
||||
SoundManager.instance.PlaySound(BaseMono.ClickSound, false, 1);
|
||||
}
|
||||
}
|
||||
|
||||
m_isHolding = false;
|
||||
m_holdTimer = 0f;
|
||||
}
|
||||
|
||||
[HarmonyPatch]
|
||||
private static class ExtendedPassiveButtonPatch
|
||||
{
|
||||
[HarmonyPatch(typeof(PassiveButton), nameof(PassiveButton.ReceiveClickDown))]
|
||||
[HarmonyPrefix]
|
||||
private static bool PassiveButton_ReceiveClickDown_Prefix(PassiveButton __instance)
|
||||
{
|
||||
var ext = MonoExtensionManager.Get<ExtendedPassiveButton>(__instance);
|
||||
if (ext != null)
|
||||
{
|
||||
ext.TriggerClickDown();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(PassiveButton), nameof(PassiveButton.ReceiveClickUp))]
|
||||
[HarmonyPrefix]
|
||||
private static bool PassiveButton_ReceiveClickUp_Prefix(PassiveButton __instance)
|
||||
{
|
||||
var ext = MonoExtensionManager.Get<ExtendedPassiveButton>(__instance);
|
||||
if (ext != null)
|
||||
{
|
||||
ext.TriggerClickUp();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ using Il2CppInterop.Runtime.Attributes;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BetterAmongUs.Mono;
|
||||
namespace BetterAmongUs.Mono.Extended;
|
||||
|
||||
/// <summary>
|
||||
/// Extends PlayerControl with additional functionality.
|
||||
@@ -6,7 +6,7 @@ using Il2CppInterop.Runtime.Attributes;
|
||||
using InnerNet;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BetterAmongUs.Mono;
|
||||
namespace BetterAmongUs.Mono.Extended;
|
||||
|
||||
/// <summary>
|
||||
/// Extended player information with additional data and anti-cheat features.
|
||||
@@ -2,6 +2,7 @@
|
||||
using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Il2CppInterop.Runtime.Attributes;
|
||||
using System.Text;
|
||||
using TMPro;
|
||||
|
||||
@@ -4,6 +4,7 @@ using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using HarmonyLib;
|
||||
using Il2CppInterop.Runtime.Attributes;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
using BetterAmongUs.Enums;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using Hazel;
|
||||
|
||||
namespace BetterAmongUs.Network;
|
||||
|
||||
@@ -4,7 +4,7 @@ using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Chat;
|
||||
using HarmonyLib;
|
||||
|
||||
@@ -3,7 +3,7 @@ using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Managers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
using InnerNet;
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.OptionItems;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -69,17 +70,27 @@ internal static class LobbyPatch
|
||||
{
|
||||
lobbyTimer = 600f; // Reset timer
|
||||
|
||||
var extendedPassiveButton = __instance.StartButton.gameObject.AddComponent<ExtendedPassiveButton>();
|
||||
extendedPassiveButton.OnHoldOrShiftClick += () =>
|
||||
{
|
||||
if (__instance.startState == GameStartManager.StartingStates.NotStarting)
|
||||
{
|
||||
__instance.startState = GameStartManager.StartingStates.Countdown;
|
||||
__instance.FinallyBegin();
|
||||
}
|
||||
};
|
||||
|
||||
// Apply UI colors to buttons
|
||||
__instance.StartButton?.gameObject?.SetUIColors("Icon");
|
||||
__instance.EditButton?.gameObject?.SetUIColors("Icon");
|
||||
__instance.ClientViewButton?.gameObject?.SetUIColors("Icon");
|
||||
__instance.HostViewButton?.gameObject?.SetUIColors("Icon");
|
||||
__instance.StartButton.gameObject.SetUIColors("Icon");
|
||||
__instance.EditButton.gameObject.SetUIColors("Icon");
|
||||
__instance.ClientViewButton.gameObject.SetUIColors("Icon");
|
||||
__instance.HostViewButton.gameObject.SetUIColors("Icon");
|
||||
|
||||
// Move start buttons to host panel if ping tracker not disabled
|
||||
if (!BAUModdedSupportFlags.HasFlag(BAUModdedSupportFlags.Disable_BetterPingTracker))
|
||||
{
|
||||
__instance.StartButton?.transform?.SetParent(__instance.HostInfoPanel?.transform);
|
||||
__instance.StartButtonClient?.transform?.SetParent(__instance.HostInfoPanel?.transform);
|
||||
__instance.StartButton.transform.SetParent(__instance.HostInfoPanel?.transform);
|
||||
__instance.StartButtonClient.transform.SetParent(__instance.HostInfoPanel?.transform);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +125,7 @@ internal static class LobbyPatch
|
||||
__instance.GameStartTextParent.SetActive(false);
|
||||
__instance.StartButton.gameObject.SetActive(true);
|
||||
|
||||
if (__instance.startState == global::GameStartManager.StartingStates.Countdown)
|
||||
if (__instance.startState == GameStartManager.StartingStates.Countdown)
|
||||
{
|
||||
// Show cancel button with countdown
|
||||
__instance.StartButton.buttonText.text = string.Format("{0}: {1}", Translator.GetString(StringNames.Cancel), (int)__instance.countDownTimer + 1);
|
||||
@@ -133,21 +144,13 @@ internal static class LobbyPatch
|
||||
if (BAUModdedSupportFlags.HasFlag(BAUModdedSupportFlags.Disable_CancelStartingGame)) return true;
|
||||
|
||||
// If countdown is active, clicking cancels the start
|
||||
if (__instance.startState == global::GameStartManager.StartingStates.Countdown)
|
||||
if (__instance.startState == GameStartManager.StartingStates.Countdown)
|
||||
{
|
||||
SoundManager.instance.StopSound(__instance.gameStartSound);
|
||||
__instance.ResetStartState();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Shift+click starts game immediately (bypasses countdown)
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
{
|
||||
__instance.startState = global::GameStartManager.StartingStates.Countdown;
|
||||
__instance.FinallyBegin();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using HarmonyLib;
|
||||
using Hazel;
|
||||
|
||||
@@ -4,7 +4,7 @@ using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.OptionItems;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -2,7 +2,7 @@ using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Settings;
|
||||
using HarmonyLib;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
|
||||
namespace BetterAmongUs.Patches.Gameplay;
|
||||
|
||||
@@ -3,7 +3,7 @@ using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
using System.Text;
|
||||
using TMPro;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Modules.Support;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using HarmonyLib;
|
||||
using System.Text;
|
||||
using TMPro;
|
||||
|
||||
@@ -2,6 +2,7 @@ using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Modules;
|
||||
using BetterAmongUs.Mono;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Gameplay.UI.Chat;
|
||||
using HarmonyLib;
|
||||
using TMPro;
|
||||
|
||||
@@ -3,6 +3,7 @@ using BetterAmongUs.Data;
|
||||
using BetterAmongUs.Data.Config;
|
||||
using BetterAmongUs.Data.Json;
|
||||
using BetterAmongUs.Helpers;
|
||||
using BetterAmongUs.Mono.Extended;
|
||||
using BetterAmongUs.Patches.Client.Managers;
|
||||
using HarmonyLib;
|
||||
using TMPro;
|
||||
@@ -110,50 +111,20 @@ internal static class PlayerTabPatch
|
||||
var colorChip = playerTab.ColorChips[i];
|
||||
|
||||
// Override click behavior
|
||||
colorChip.Button.OnClick = new();
|
||||
colorChip.Button.OnClick.AddListener(() =>
|
||||
var extendedPassiveButton = colorChip.Button.gameObject.AddComponent<ExtendedPassiveButton>();
|
||||
extendedPassiveButton.OnHoldOrShiftClick += () =>
|
||||
{
|
||||
if (ActiveInputManager.currentControlType == ActiveInputManager.InputType.Keyboard)
|
||||
if (BAUConfigs.FavoriteColor.Value == index)
|
||||
{
|
||||
// Shift+Click to toggle favorite
|
||||
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
|
||||
{
|
||||
if (BAUConfigs.FavoriteColor.Value == index)
|
||||
{
|
||||
BAUConfigs.FavoriteColor.Value = -1; // Remove favorite
|
||||
}
|
||||
else
|
||||
{
|
||||
BAUConfigs.FavoriteColor.Value = index; // Set favorite
|
||||
}
|
||||
|
||||
UpdateFavorite();
|
||||
return;
|
||||
}
|
||||
|
||||
playerTab.ClickEquip();
|
||||
BAUConfigs.FavoriteColor.Value = -1; // Remove favorite
|
||||
}
|
||||
else
|
||||
{
|
||||
// Click Color to toggle favorite if color is already taken
|
||||
if (DataManager.Player.Customization.Color == index || !playerTab.AvailableColors.Contains(index))
|
||||
{
|
||||
if (BAUConfigs.FavoriteColor.Value == index)
|
||||
{
|
||||
BAUConfigs.FavoriteColor.Value = -1; // Remove favorite
|
||||
}
|
||||
else
|
||||
{
|
||||
BAUConfigs.FavoriteColor.Value = index; // Set favorite
|
||||
}
|
||||
|
||||
UpdateFavorite();
|
||||
return;
|
||||
}
|
||||
|
||||
playerTab.SelectColor(index);
|
||||
BAUConfigs.FavoriteColor.Value = index; // Set favorite
|
||||
}
|
||||
});
|
||||
|
||||
UpdateFavorite();
|
||||
};
|
||||
|
||||
// Add favorite star indicator
|
||||
var checkBox = colorChip.PlayerEquippedForeground.transform.Find("CheckMark").GetComponentInChildren<SpriteRenderer>();
|
||||
|
||||
Reference in new issue
Block a user