diff --git a/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs b/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs index 9341596..ce20ddb 100644 --- a/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs +++ b/MiraAPI.Example/Buttons/Teleporter/TeleportButton.cs @@ -16,6 +16,7 @@ public class TeleportButton : CustomActionButton public override float Cooldown => OptionGroupSingleton.Instance.TeleportCooldown.Value; public override float EffectDuration => OptionGroupSingleton.Instance.TeleportDuration; + public override int MaxUses => 2; public override LoadableAsset Sprite => ExampleAssets.TeleportButton; diff --git a/MiraAPI/Events/Vanilla/Meeting/EjectionEvent.cs b/MiraAPI/Events/Vanilla/Meeting/EjectionEvent.cs index 31b08c1..1d25098 100644 --- a/MiraAPI/Events/Vanilla/Meeting/EjectionEvent.cs +++ b/MiraAPI/Events/Vanilla/Meeting/EjectionEvent.cs @@ -1,15 +1,10 @@ namespace MiraAPI.Events.Vanilla.Meeting; /// -/// The event that is invoked when a player is ejected. +/// The event that is invoked when a player is ejected. Non-cancelable. /// -public class EjectionEvent : MiraCancelableEvent +public class EjectionEvent : MiraEvent { - /// - /// Gets the player that is being ejected. - /// - public PlayerControl? Player { get; } - /// /// Gets the instance of the ExileController. /// @@ -18,11 +13,9 @@ public class EjectionEvent : MiraCancelableEvent /// /// Initializes a new instance of the class. /// - /// The player who is being ejected. /// The exile controller. - public EjectionEvent(PlayerControl player, ExileController controller) + public EjectionEvent(ExileController controller) { - Player = player; ExileController = controller; } } diff --git a/MiraAPI/Hud/CustomActionButton.cs b/MiraAPI/Hud/CustomActionButton.cs index f37f2eb..a1934b3 100644 --- a/MiraAPI/Hud/CustomActionButton.cs +++ b/MiraAPI/Hud/CustomActionButton.cs @@ -344,6 +344,11 @@ public abstract class CustomActionButton { UsesLeft--; Button?.SetUsesRemaining(UsesLeft); + + if (Button != null) + { + Button.usesRemainingSprite.color = UsesLeft == 0 ? Color.red : Color.white; + } } OnClick(); diff --git a/MiraAPI/Hud/CustomButtonManager.cs b/MiraAPI/Hud/CustomButtonManager.cs index 60f2fc6..0133353 100644 --- a/MiraAPI/Hud/CustomButtonManager.cs +++ b/MiraAPI/Hud/CustomButtonManager.cs @@ -1,6 +1,5 @@ using MiraAPI.Events.Mira; using MiraAPI.PluginLoading; -using Reactor.Utilities; using System; using System.Collections.Generic; using System.Reflection; diff --git a/MiraAPI/Modifiers/ModifierComponent.cs b/MiraAPI/Modifiers/ModifierComponent.cs index 8b91d21..7db81f5 100644 --- a/MiraAPI/Modifiers/ModifierComponent.cs +++ b/MiraAPI/Modifiers/ModifierComponent.cs @@ -1,14 +1,14 @@ -using System; +using Il2CppInterop.Runtime.Attributes; +using MiraAPI.Modifiers.Types; +using MiraAPI.Utilities; +using Reactor.Utilities; +using Reactor.Utilities.Attributes; +using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; using System.Linq; using System.Text; -using Il2CppInterop.Runtime.Attributes; -using MiraAPI.Modifiers.Types; -using MiraAPI.Utilities; -using Reactor.Utilities; -using Reactor.Utilities.Attributes; using TMPro; using UnityEngine; @@ -107,7 +107,7 @@ public class ModifierComponent(IntPtr cppPtr) : MonoBehaviour(cppPtr) var baseModifiers = filteredModifiers as BaseModifier[] ?? filteredModifiers.ToArray(); - if (baseModifiers.Length != 0) + if (baseModifiers.Length != 0 && !MeetingHud.Instance) { var stringBuild = new StringBuilder(); foreach (var mod in baseModifiers) diff --git a/MiraAPI/Patches/Roles/EjectionPatches.cs b/MiraAPI/Patches/Roles/EjectionPatches.cs index 3acf228..48d6abb 100644 --- a/MiraAPI/Patches/Roles/EjectionPatches.cs +++ b/MiraAPI/Patches/Roles/EjectionPatches.cs @@ -15,13 +15,9 @@ public static class EjectionPatches [HarmonyPatch(nameof(ExileController.Begin))] public static void BeginPostfix(ExileController __instance) { - var @event = new EjectionEvent(__instance.initData.networkedPlayer.Object, __instance); + var @event = new EjectionEvent(__instance); MiraEventManager.InvokeEvent(@event); - if (@event.IsCancelled) - { - return; - } if (!__instance.initData.networkedPlayer || !__instance.initData.networkedPlayer.Role || __instance.initData.networkedPlayer.Role is not ICustomRole role) { diff --git a/MiraAPI/Utilities/Extensions.cs b/MiraAPI/Utilities/Extensions.cs index afa835b..dc3bba1 100644 --- a/MiraAPI/Utilities/Extensions.cs +++ b/MiraAPI/Utilities/Extensions.cs @@ -328,17 +328,6 @@ public static class Extensions .GetNearestDeadBodies(playerControl.GetTruePosition(), radius, Helpers.CreateFilter(Constants.NotShipMask)) .Find(component => component && !component.Reported); } - - /// - /// Get all living players. - /// - /// A list of alive players. - public static List GetAlivePlayers() - { - return PlayerControl.AllPlayerControls.ToArray().Where(x => !x.Data.IsDead).ToList(); - } - - /// /// Finds the nearest object of a specified type to a player. It will only work if the object has a collider. /// diff --git a/MiraAPI/Utilities/Helpers.cs b/MiraAPI/Utilities/Helpers.cs index cea3bef..29ae10e 100644 --- a/MiraAPI/Utilities/Helpers.cs +++ b/MiraAPI/Utilities/Helpers.cs @@ -1,5 +1,5 @@ -using System.Collections; -using MiraAPI.Roles; +using MiraAPI.Roles; +using System.Collections; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -15,6 +15,15 @@ namespace MiraAPI.Utilities; /// public static class Helpers { + /// + /// Get all living players. + /// + /// A list of alive players. + public static List GetAlivePlayers() + { + return PlayerControl.AllPlayerControls.ToArray().Where(x => !x.Data.IsDead).ToList(); + } + /// /// Returns an empty coroutine. /// @@ -99,14 +108,14 @@ public static class Helpers } return (from player in newList - let vector = player.GetTruePosition() - source - let magnitude = vector.magnitude - where !PhysicsHelpers.AnyNonTriggersBetween( - source, - vector.normalized, - magnitude, - Constants.ShipAndObjectsMask) - select player).ToList(); + let vector = player.GetTruePosition() - source + let magnitude = vector.magnitude + where !PhysicsHelpers.AnyNonTriggersBetween( + source, + vector.normalized, + magnitude, + Constants.ShipAndObjectsMask) + select player).ToList(); } /// @@ -168,7 +177,7 @@ public static class Helpers select playerControl); outputList.Sort( - delegate(PlayerControl a, PlayerControl b) + delegate (PlayerControl a, PlayerControl b) { var magnitude2 = (a.GetTruePosition() - source).magnitude; var magnitude3 = (b.GetTruePosition() - source).magnitude;