Merge branch 'dev' into presets

This commit is contained in:
XtraCube committed 2025-03-30 12:09:32 -04:00
commit 41305ad0e2
7 files changed
+103 -6

No files matched your search

@@ -0,0 +1,12 @@
namespace MiraAPI.Events.Vanilla.Gameplay;
/// <summary>
/// The event that is invoked when the intro cutscene has finished playing.
/// </summary>
public class IntroEndEvent(IntroCutscene introCutscene) : MiraEvent
{
/// <summary>
/// Gets the instance of the IntroCutscene.
/// </summary>
public IntroCutscene IntroCutscene { get; } = introCutscene;
}
@@ -0,0 +1,21 @@
namespace MiraAPI.Events.Vanilla.Gameplay;
/// <summary>
/// Start Round event, invoked on IntroCutscene.OnDestroy and ExileController.WrapUp.
/// </summary>
public class RoundStartEvent : MiraEvent
{
/// <summary>
/// Gets a value indicating whether the event was triggered by the IntroCutscene or ExileController.
/// </summary>
public bool TriggeredByIntro { get; }
/// <summary>
/// Initializes a new instance of the <see cref="RoundStartEvent"/> class.
/// </summary>
/// <param name="triggeredByIntro">Whether the event was triggered by the intro or not.</param>
public RoundStartEvent(bool triggeredByIntro)
{
TriggeredByIntro = triggeredByIntro;
}
}
@@ -0,0 +1,12 @@
namespace MiraAPI.Events.Vanilla.Meeting;
/// <summary>
/// The event that is invoked when the meeting has ended.
/// </summary>
public class EndMeetingEvent(MeetingHud meetingHud) : MiraEvent
{
/// <summary>
/// Gets the MeetingHud instance.
/// </summary>
public MeetingHud MeetingHud { get; } = meetingHud;
}
@@ -0,0 +1,13 @@
namespace MiraAPI.Events.Vanilla.Meeting.Voting;
/// <summary>
/// The event that is invoked when the voting phase of a meeting is complete.
/// </summary>
/// <param name="meetingHud">The MeetingHud instance.</param>
public class VotingCompleteEvent(MeetingHud meetingHud) : MiraEvent
{
/// <summary>
/// Gets the MeetingHud instance.
/// </summary>
public MeetingHud MeetingHud { get; } = meetingHud;
}
+4 -4
View File
@@ -56,11 +56,11 @@ public static class IntroCutscenePatches
} }
} }
/*
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(nameof(IntroCutscene.OnDestroy))] [HarmonyPatch(nameof(IntroCutscene.OnDestroy))]
public static void GameBeginPatch() public static void GameBeginPatch(IntroCutscene __instance)
{ {
CustomGameModeManager.ActiveMode?.Initialize(); MiraEventManager.InvokeEvent(new IntroEndEvent(__instance));
}*/ MiraEventManager.InvokeEvent(new RoundStartEvent(true));
}
} }
+24 -1
View File
@@ -1,5 +1,8 @@
using HarmonyLib; using System.Collections.Generic;
using System.Reflection;
using HarmonyLib;
using MiraAPI.Events; using MiraAPI.Events;
using MiraAPI.Events.Vanilla.Gameplay;
using MiraAPI.Events.Vanilla.Meeting; using MiraAPI.Events.Vanilla.Meeting;
using MiraAPI.Roles; using MiraAPI.Roles;
@@ -31,4 +34,24 @@ public static class EjectionPatches
__instance.completeString = role.GetCustomEjectionMessage(__instance.initData.networkedPlayer); __instance.completeString = role.GetCustomEjectionMessage(__instance.initData.networkedPlayer);
} }
[HarmonyPatch]
internal static class WrapUpPatch
{
public static IEnumerable<MethodBase> TargetMethods()
{
yield return AccessTools.Method(typeof(ExileController), nameof(ExileController.WrapUp));
yield return AccessTools.Method(typeof(AirshipExileController), nameof(AirshipExileController.WrapUpAndSpawn));
if (AccessTools.TypeByName("Submerged.ExileCutscene.SubmergedExileController") is { } type)
{
yield return AccessTools.Method(type, "WrapUpAndSpawn");
}
}
public static void Postfix()
{
var @event = new RoundStartEvent(false);
MiraEventManager.InvokeEvent(@event);
}
}
} }
+17 -1
View File
@@ -1,4 +1,5 @@
using System.Linq; using System.Diagnostics.CodeAnalysis;
using System.Linq;
using HarmonyLib; using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppInterop.Runtime.InteropTypes.Arrays;
using MiraAPI.Events; using MiraAPI.Events;
@@ -10,6 +11,7 @@ using MiraAPI.Voting;
namespace MiraAPI.Patches.Voting; namespace MiraAPI.Patches.Voting;
[HarmonyPatch(typeof(MeetingHud))] [HarmonyPatch(typeof(MeetingHud))]
[SuppressMessage("ReSharper", "InconsistentNaming", Justification = "Harmony Convention")]
internal static class MeetingHudPatches internal static class MeetingHudPatches
{ {
[HarmonyPostfix] [HarmonyPostfix]
@@ -31,6 +33,20 @@ internal static class MeetingHudPatches
MiraEventManager.InvokeEvent(@event); MiraEventManager.InvokeEvent(@event);
} }
[HarmonyPostfix]
[HarmonyPatch(nameof(MeetingHud.OnDestroy))]
public static void MeetingHudOnDestroyPatch(MeetingHud __instance)
{
MiraEventManager.InvokeEvent(new EndMeetingEvent(__instance));
}
[HarmonyPostfix]
[HarmonyPatch(nameof(MeetingHud.VotingComplete))]
public static void MeetingHudVotingCompletePatch(MeetingHud __instance)
{
MiraEventManager.InvokeEvent(new VotingCompleteEvent(__instance));
}
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(nameof(MeetingHud.Select))] [HarmonyPatch(nameof(MeetingHud.Select))]
public static bool SelectPatch(MeetingHud __instance, int suspectStateIdx) public static bool SelectPatch(MeetingHud __instance, int suspectStateIdx)