diff options
-rw-r--r-- | AnodyneArchipelago/ArchipelagoManager.cs | 7 | ||||
-rw-r--r-- | AnodyneArchipelago/Patches/StatePatches.cs | 24 | ||||
-rw-r--r-- | AnodyneArchipelago/Plugin.cs | 2 |
3 files changed, 32 insertions, 1 deletions
diff --git a/AnodyneArchipelago/ArchipelagoManager.cs b/AnodyneArchipelago/ArchipelagoManager.cs index 4570c39..8ee5584 100644 --- a/AnodyneArchipelago/ArchipelagoManager.cs +++ b/AnodyneArchipelago/ArchipelagoManager.cs | |||
@@ -111,7 +111,12 @@ namespace AnodyneArchipelago | |||
111 | _itemIndex = _session.Items.AllItemsReceived.Count; | 111 | _itemIndex = _session.Items.AllItemsReceived.Count; |
112 | } | 112 | } |
113 | 113 | ||
114 | if (_itemsToCollect.Count > 0 && (GlobalState.Dialogue == null || GlobalState.Dialogue == "") && !GlobalState.ScreenTransition && Plugin.Player != null && GlobalState.black_overlay.alpha == 0f) | 114 | if (_itemsToCollect.Count > 0 && |
115 | (GlobalState.Dialogue == null || GlobalState.Dialogue == "") && | ||
116 | !GlobalState.ScreenTransition && | ||
117 | Plugin.Player != null && | ||
118 | GlobalState.black_overlay.alpha == 0f && | ||
119 | !Plugin.IsGamePaused) | ||
115 | { | 120 | { |
116 | NetworkItem item = _itemsToCollect.Dequeue(); | 121 | NetworkItem item = _itemsToCollect.Dequeue(); |
117 | HandleItem(item); | 122 | HandleItem(item); |
diff --git a/AnodyneArchipelago/Patches/StatePatches.cs b/AnodyneArchipelago/Patches/StatePatches.cs index 40b30fe..31c0aef 100644 --- a/AnodyneArchipelago/Patches/StatePatches.cs +++ b/AnodyneArchipelago/Patches/StatePatches.cs | |||
@@ -9,6 +9,7 @@ using AnodyneSharp.States.MainMenu; | |||
9 | using static AnodyneSharp.AnodyneGame; | 9 | using static AnodyneSharp.AnodyneGame; |
10 | using AnodyneSharp.Drawing; | 10 | using AnodyneSharp.Drawing; |
11 | using System.IO; | 11 | using System.IO; |
12 | using System; | ||
12 | 13 | ||
13 | namespace AnodyneArchipelago.Patches | 14 | namespace AnodyneArchipelago.Patches |
14 | { | 15 | { |
@@ -83,6 +84,8 @@ namespace AnodyneArchipelago.Patches | |||
83 | { | 84 | { |
84 | static void Prefix(PlayState __instance) | 85 | static void Prefix(PlayState __instance) |
85 | { | 86 | { |
87 | Plugin.IsGamePaused = false; | ||
88 | |||
86 | // Get player for later access. | 89 | // Get player for later access. |
87 | FieldInfo playerField = typeof(PlayState).GetField("_player", BindingFlags.NonPublic | BindingFlags.Instance); | 90 | FieldInfo playerField = typeof(PlayState).GetField("_player", BindingFlags.NonPublic | BindingFlags.Instance); |
88 | Plugin.Player = (Player)playerField.GetValue(__instance); | 91 | Plugin.Player = (Player)playerField.GetValue(__instance); |
@@ -93,4 +96,25 @@ namespace AnodyneArchipelago.Patches | |||
93 | GlobalState.events.SetEvent("red_cave_r_ss", 999); | 96 | GlobalState.events.SetEvent("red_cave_r_ss", 999); |
94 | } | 97 | } |
95 | } | 98 | } |
99 | |||
100 | [HarmonyPatch(typeof(PauseState), MethodType.Constructor, new Type[] { })] | ||
101 | class CreatePausePatch | ||
102 | { | ||
103 | static void Postfix() | ||
104 | { | ||
105 | Plugin.IsGamePaused = true; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | [HarmonyPatch(typeof(PauseState), nameof(PauseState.Update))] | ||
110 | class UpdatePausePatch | ||
111 | { | ||
112 | static void Postfix(PauseState __instance) | ||
113 | { | ||
114 | if (__instance.Exit) | ||
115 | { | ||
116 | Plugin.IsGamePaused = false; | ||
117 | } | ||
118 | } | ||
119 | } | ||
96 | } | 120 | } |
diff --git a/AnodyneArchipelago/Plugin.cs b/AnodyneArchipelago/Plugin.cs index 10a30b9..18f0d36 100644 --- a/AnodyneArchipelago/Plugin.cs +++ b/AnodyneArchipelago/Plugin.cs | |||
@@ -12,8 +12,10 @@ namespace AnodyneArchipelago | |||
12 | public class Plugin : BasePlugin | 12 | public class Plugin : BasePlugin |
13 | { | 13 | { |
14 | public static Plugin Instance = null; | 14 | public static Plugin Instance = null; |
15 | |||
15 | public static Player Player = null; | 16 | public static Player Player = null; |
16 | public static ArchipelagoManager ArchipelagoManager = null; | 17 | public static ArchipelagoManager ArchipelagoManager = null; |
18 | public static bool IsGamePaused = false; | ||
17 | 19 | ||
18 | public static string GetVersion() | 20 | public static string GetVersion() |
19 | { | 21 | { |