Skip to content

Commit bf5c8a5

Browse files
committed
Updates to the debug window, fix for cursor local settings
1 parent 90e2e69 commit bf5c8a5

File tree

4 files changed

+185
-135
lines changed

4 files changed

+185
-135
lines changed

NewMod/Components/ScreenEffects/ShadowFluxEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ShadowFluxEffect(IntPtr ptr) : MonoBehaviour(ptr)
1616
public float darkness = 0.8f;
1717
public Color tint = Color.white;
1818
public static Shader _shader = NewModAsset.ShadowFluxShader.LoadAsset();
19-
private Material _mat;
19+
public Material _mat;
2020

2121
public void OnEnable()
2222
{

NewMod/DebugWindow.cs

Lines changed: 157 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using UnityEngine;
2-
using System.Linq;
32
using System;
43
using MiraAPI.Hud;
54
using MiraAPI.Modifiers;
@@ -18,134 +17,163 @@
1817

1918
namespace NewMod
2019
{
21-
[RegisterInIl2Cpp]
22-
public class DebugWindow(nint ptr) : MonoBehaviour(ptr)
23-
{
24-
[HideFromIl2Cpp] public bool EnableDebugger { get; set; } = false;
25-
public float Zoom = 3f;
26-
public const float ZoomMin = 3f;
27-
public const float ZoomMax = 15f;
28-
public bool ScrollZoomWhileOpen = true;
29-
public static DebugWindow Instance;
30-
31-
public void ApplyZoom(float size)
32-
{
33-
size = Mathf.Clamp(size, ZoomMin, ZoomMax);
34-
if (Camera.main) Camera.main.orthographicSize = size;
35-
foreach (var cam in Camera.allCameras) if (cam) cam.orthographicSize = size;
36-
ResolutionManager.ResolutionChanged.Invoke((float)Screen.width / Screen.height, Screen.width, Screen.height, Screen.fullScreen);
37-
if (HudManager.Instance && HudManager.Instance.ShadowQuad)
38-
{
39-
bool zoomingOut = size > 3f;
40-
HudManager.Instance.ShadowQuad.gameObject.SetActive(!zoomingOut);
41-
}
42-
}
43-
44-
private static bool AllowDebug()
45-
{
46-
return AmongUsClient.Instance && AmongUsClient.Instance.NetworkMode == NetworkModes.FreePlay;
47-
}
48-
49-
public readonly DragWindow DebuggingWindow = new(new Rect(10, 10, 0, 0), "NewMod Debug Window", () =>
50-
{
51-
bool allow = AllowDebug();
52-
53-
GUILayout.BeginVertical(GUI.skin.box);
54-
GUILayout.Label("Camera Zoom");
55-
var newZoom = GUILayout.HorizontalSlider(Instance.Zoom, ZoomMin, ZoomMax, GUILayout.Width(220f));
56-
GUILayout.BeginHorizontal();
57-
if (GUILayout.Button("-", GUILayout.Width(28f)) && allow) newZoom = Mathf.Clamp(Instance.Zoom / 1.25f, ZoomMin, ZoomMax);
58-
if (GUILayout.Button("+", GUILayout.Width(28f)) && allow) newZoom = Mathf.Clamp(Instance.Zoom * 1.25f, ZoomMin, ZoomMax);
59-
if (GUILayout.Button("Reset", GUILayout.Width(64f)) && allow) newZoom = 3f;
60-
Instance.ScrollZoomWhileOpen = GUILayout.Toggle(Instance.ScrollZoomWhileOpen, "Scroll-wheel zoom");
61-
GUILayout.EndHorizontal();
62-
if (!Mathf.Approximately(newZoom, Instance.Zoom) && allow)
63-
{
64-
Instance.Zoom = newZoom;
65-
Instance.ApplyZoom(Instance.Zoom);
66-
}
67-
GUILayout.Label($"Size: {Instance.Zoom:0.00}");
68-
GUILayout.EndVertical();
69-
70-
GUILayout.Space(6);
71-
72-
if (GUILayout.Button("Become Explosive Modifier") && allow) PlayerControl.LocalPlayer.RpcAddModifier<ExplosiveModifier>();
73-
if (GUILayout.Button("Remove Explosive Modifier") && allow) PlayerControl.LocalPlayer.RpcRemoveModifier<ExplosiveModifier>();
74-
if (GUILayout.Button("Become Necromancer") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<NecromancerRole>(), false);
75-
if (GUILayout.Button("Become DoubleAgent") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<DoubleAgent>(), false);
76-
if (GUILayout.Button("Become EnergyThief") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<EnergyThief>(), false);
77-
if (GUILayout.Button("Become SpecialAgent") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<SpecialAgent>(), false);
78-
if (GUILayout.Button("Force Start Game") && allow) if (GameOptionsManager.Instance.CurrentGameOptions.NumImpostors is not 1) AmongUsClient.Instance.StartGame();
79-
if (GUILayout.Button("Increases Uses by 3") && allow) foreach (var button in CustomButtonManager.Buttons) button.SetUses(3);
80-
if (GUILayout.Button("Randomly Cast a Vote") && allow && MeetingHud.Instance)
81-
{
82-
var randPlayer = Utils.GetRandomPlayer(p => !p.Data.IsDead && !p.Data.Disconnected);
83-
MeetingHud.Instance.CmdCastVote(PlayerControl.LocalPlayer.PlayerId, randPlayer.PlayerId);
84-
}
85-
if (GUILayout.Button("End Meeting") && allow && MeetingHud.Instance)
86-
{
87-
MeetingHud.Instance.Close();
88-
}
89-
if (GUILayout.Button("Apply Glitch Effect to Main Camera") && allow)
90-
{
91-
Camera.main.gameObject.AddComponent<GlitchEffect>();
92-
}
93-
if (GUILayout.Button("Apply Earthquake Effect to Main Camera") && allow)
94-
{
95-
Camera.main.gameObject.AddComponent<EarthquakeEffect>();
96-
}
97-
if (GUILayout.Button("Apply Slow Hue Pulse Effect to Main Camera") && allow)
98-
{
99-
Camera.main.gameObject.AddComponent<SlowPulseHueEffect>();
100-
}
101-
if (GUILayout.Button("Apply DistorationWave Effect to Main Camera") && allow)
102-
{
103-
Camera.main.gameObject.AddComponent<DistorationWaveEffect>();
104-
}
105-
if (GUILayout.Button("Apply ShadowFlux Effect to Main Camera") && allow)
106-
{
107-
Camera.main.gameObject.AddComponent<ShadowFluxEffect>();
108-
}
109-
if (GUILayout.Button("Reset Camera Effects") && allow)
110-
{
111-
Coroutines.Start(CoroutinesHelper.RemoveCameraEffect(Camera.main, 1f));
112-
}
113-
if (GUILayout.Button("Show Toast") && LobbyBehaviour.Instance)
114-
{
115-
var toast = Toast.CreateToast();
116-
toast.ShowToast(string.Empty, "NewMod v1.2.6", Color.red, 5f);
117-
}
118-
/*if (GUILayout.Button("Spawn General NPC") && allow)
119-
{
120-
var npc = new GameObject("GeneralNPC").AddComponent<GeneralNPC>();
121-
npc.Initialize(PlayerControl.LocalPlayer);
122-
}*/
123-
});
124-
125-
public void OnGUI()
126-
{
127-
if (EnableDebugger) DebuggingWindow.OnGUI();
128-
}
129-
130-
public void Start()
131-
{
132-
Instance = this;
133-
if (Camera.main) Zoom = Mathf.Clamp(Camera.main.orthographicSize, ZoomMin, ZoomMax);
134-
}
135-
136-
public void Update()
137-
{
138-
if (Input.GetKeyDown(KeyCode.F3)) EnableDebugger = !EnableDebugger;
139-
if (EnableDebugger && ScrollZoomWhileOpen && AllowDebug())
140-
{
141-
float wheel = Input.GetAxis("Mouse ScrollWheel");
142-
if (Mathf.Abs(wheel) > 0.0001f)
20+
[RegisterInIl2Cpp]
21+
public class DebugWindow(nint ptr) : MonoBehaviour(ptr)
22+
{
23+
[HideFromIl2Cpp] public bool EnableDebugger { get; set; } = false;
24+
public float Zoom = 3f;
25+
public const float ZoomMin = 3f;
26+
public const float ZoomMax = 15f;
27+
public bool ScrollZoomWhileOpen = true;
28+
public static DebugWindow Instance;
29+
public int tab;
30+
31+
//ShadowFlux
32+
public float noiseScale = 2f;
33+
public float fluxSpeed = 0.3f;
34+
public float edgeWidth = 0.25f;
35+
public float threshold = 0.55f;
36+
public float opacity = 0.75f;
37+
public float darkness = 0.8f;
38+
39+
//DistorationWave
40+
public float amplitude = 0.05f;
41+
public float frequency = 5f;
42+
public float distoSpeed = 1f;
43+
public float radius = 0.25f;
44+
public float falloff = 1f;
45+
46+
public void ApplyZoom(float size)
47+
{
48+
size = Mathf.Clamp(size, ZoomMin, ZoomMax);
49+
if (Camera.main) Camera.main.orthographicSize = size;
50+
foreach (var cam in Camera.allCameras) if (cam) cam.orthographicSize = size;
51+
ResolutionManager.ResolutionChanged.Invoke((float)Screen.width / Screen.height, Screen.width, Screen.height, Screen.fullScreen);
52+
if (HudManager.Instance && HudManager.Instance.ShadowQuad)
53+
HudManager.Instance.ShadowQuad.gameObject.SetActive(size <= 3f);
54+
}
55+
56+
public static bool AllowDebug() => AmongUsClient.Instance && AmongUsClient.Instance.NetworkMode == NetworkModes.FreePlay;
57+
public readonly DragWindow DebuggingWindow = new(new Rect(10, 10, 0, 0), "NewMod Debug Window", () =>
58+
{
59+
bool allow = AllowDebug();
60+
61+
GUILayout.BeginHorizontal();
62+
if (GUILayout.Toggle(Instance.tab == 0, "Game", GUI.skin.button)) Instance.tab = 0;
63+
if (GUILayout.Toggle(Instance.tab == 1, "Effects", GUI.skin.button)) Instance.tab = 1;
64+
GUILayout.EndHorizontal();
65+
66+
if (Instance.tab == 0)
67+
{
68+
GUILayout.BeginVertical(GUI.skin.box);
69+
GUILayout.Label("Camera Zoom");
70+
var newZoom = GUILayout.HorizontalSlider(Instance.Zoom, ZoomMin, ZoomMax, GUILayout.Width(220f));
71+
if (!Mathf.Approximately(newZoom, Instance.Zoom) && allow)
72+
{
73+
Instance.Zoom = newZoom;
74+
Instance.ApplyZoom(Instance.Zoom);
75+
}
76+
GUILayout.Label($"Size: {Instance.Zoom:0.00}");
77+
GUILayout.EndVertical();
78+
79+
GUILayout.Space(6);
80+
81+
if (GUILayout.Button("Become Necromancer") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<NecromancerRole>(), false);
82+
if (GUILayout.Button("Become DoubleAgent") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<DoubleAgent>(), false);
83+
if (GUILayout.Button("Become EnergyThief") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<EnergyThief>(), false);
84+
if (GUILayout.Button("Become SpecialAgent") && allow) PlayerControl.LocalPlayer.RpcSetRole((RoleTypes)RoleId.Get<SpecialAgent>(), false);
85+
if (GUILayout.Button("Increase Uses by 3") && allow) foreach (var b in CustomButtonManager.Buttons) b.SetUses(3);
86+
if (GUILayout.Button("Random Vote") && allow && MeetingHud.Instance)
87+
{
88+
var p = Utils.GetRandomPlayer(x => !x.Data.IsDead && !x.Data.Disconnected);
89+
MeetingHud.Instance.CmdCastVote(PlayerControl.LocalPlayer.PlayerId, p.PlayerId);
90+
}
91+
if (GUILayout.Button("End Meeting") && allow && MeetingHud.Instance) MeetingHud.Instance.Close();
92+
if (GUILayout.Button("Apply Glitch Effect") && allow) Camera.main.gameObject.AddComponent<GlitchEffect>();
93+
if (GUILayout.Button("Apply Earthquake Effect") && allow) Camera.main.gameObject.AddComponent<EarthquakeEffect>();
94+
if (GUILayout.Button("Apply PulseHue Effect") && allow) Camera.main.gameObject.AddComponent<SlowPulseHueEffect>();
95+
if (GUILayout.Button("Apply DistortionWave Effect") && allow) Camera.main.gameObject.AddComponent<DistorationWaveEffect>();
96+
if (GUILayout.Button("Apply ShadowFlux Effect") && allow) Camera.main.gameObject.AddComponent<ShadowFluxEffect>();
97+
if (GUILayout.Button("Reset Effects") && allow) Coroutines.Start(CoroutinesHelper.RemoveCameraEffect(Camera.main, 1f));
98+
}
99+
100+
if (Instance.tab == 1)
101+
{
102+
var cam = Camera.main;
103+
104+
if (cam.gameObject.TryGetComponent(out ShadowFluxEffect flux) && flux._mat)
105+
{
106+
GUILayout.Label("ShadowFlux");
107+
Instance.noiseScale = Slider("NoiseScale", Instance.noiseScale, 0f, 5f);
108+
Instance.fluxSpeed = Slider("Speed", Instance.fluxSpeed, 0f, 3f);
109+
Instance.edgeWidth = Slider("EdgeWidth", Instance.edgeWidth, 0f, 1f);
110+
Instance.threshold = Slider("Threshold", Instance.threshold, 0f, 1f);
111+
Instance.opacity = Slider("Opacity", Instance.opacity, 0f, 1f);
112+
Instance.darkness = Slider("Darkness", Instance.darkness, 0f, 1f);
113+
114+
var m = flux._mat;
115+
m.SetFloat("_NoiseScale", Instance.noiseScale);
116+
m.SetFloat("_Speed", Instance.fluxSpeed);
117+
m.SetFloat("_EdgeWidth", Instance.edgeWidth);
118+
m.SetFloat("_Threshold", Instance.threshold);
119+
m.SetFloat("_Opacity", Instance.opacity);
120+
m.SetFloat("_Darkness", Instance.darkness);
121+
}
122+
123+
GUILayout.Space(8);
124+
125+
if (cam.gameObject.TryGetComponent(out DistorationWaveEffect disto) && disto._mat)
126+
{
127+
GUILayout.Label("DistortionWave");
128+
Instance.amplitude = Slider("Amplitude", Instance.amplitude, 0f, 1f);
129+
Instance.frequency = Slider("Frequency", Instance.frequency, 0f, 10f);
130+
Instance.distoSpeed = Slider("Speed", Instance.distoSpeed, 0f, 5f);
131+
Instance.radius = Slider("Radius", Instance.radius, 0f, 1f);
132+
Instance.falloff = Slider("Falloff", Instance.falloff, 0f, 5f);
133+
134+
var m = disto._mat;
135+
m.SetFloat("_Amplitude", Instance.amplitude);
136+
m.SetFloat("_Frequency", Instance.frequency);
137+
m.SetFloat("_Speed", Instance.distoSpeed);
138+
m.SetFloat("_Radius", Instance.radius);
139+
m.SetFloat("_Falloff", Instance.falloff);
140+
}
141+
}
142+
});
143+
144+
public static float Slider(string name, float value, float min, float max)
145+
{
146+
GUILayout.BeginHorizontal();
147+
GUILayout.Label(name, GUILayout.Width(100f));
148+
value = GUILayout.HorizontalSlider(value, min, max, GUILayout.Width(200f));
149+
GUILayout.EndHorizontal();
150+
return value;
151+
}
152+
153+
public void OnGUI()
154+
{
155+
if (EnableDebugger) DebuggingWindow.OnGUI();
156+
}
157+
158+
public void Start()
159+
{
160+
Instance = this;
161+
if (Camera.main) Zoom = Mathf.Clamp(Camera.main.orthographicSize, ZoomMin, ZoomMax);
162+
}
163+
164+
public void Update()
165+
{
166+
if (Input.GetKeyDown(KeyCode.F3)) EnableDebugger = !EnableDebugger;
167+
if (EnableDebugger && ScrollZoomWhileOpen && AllowDebug())
143168
{
144-
var factor = wheel > 0 ? 1f / 1.25f : 1.25f;
145-
Zoom = Mathf.Clamp(Zoom * factor, ZoomMin, ZoomMax);
146-
ApplyZoom(Zoom);
169+
float wheel = Input.GetAxis("Mouse ScrollWheel");
170+
if (Mathf.Abs(wheel) > 0.0001f)
171+
{
172+
var factor = wheel > 0 ? 1f / 1.25f : 1.25f;
173+
Zoom = Mathf.Clamp(Zoom * factor, ZoomMin, ZoomMax);
174+
ApplyZoom(Zoom);
175+
}
147176
}
148-
}
149-
}
150-
}
177+
}
178+
}
151179
}

NewMod/DiscordStatus.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using UnityEngine;
77
using UnityEngine.SceneManagement;
88

9-
namespace NewMod.Patches
9+
namespace NewMod
1010
{
1111
[HarmonyPatch]
1212
public static class NewModDiscordPatch
@@ -18,9 +18,8 @@ public static class NewModDiscordPatch
1818
[HarmonyPatch(typeof(DiscordManager), nameof(DiscordManager.Start))]
1919
public static bool StartPrefix(DiscordManager __instance)
2020
{
21-
#if ANDROID
22-
return true;
23-
#else
21+
if (Application.platform == RuntimePlatform.Android) return true;
22+
2423
const long clientId = 1405946628115791933;
2524

2625
discord = new Discord.Discord(clientId, (ulong)CreateFlags.Default);
@@ -37,13 +36,13 @@ public static bool StartPrefix(DiscordManager __instance)
3736
__instance.SetInMenus();
3837

3938
return false;
40-
#endif
4139
}
4240

4341
[HarmonyPrefix]
4442
[HarmonyPatch(typeof(ActivityManager), nameof(ActivityManager.UpdateActivity))]
4543
public static void UpdateActivityPrefix([HarmonyArgument(0)] ref Activity activity)
4644
{
45+
if (Application.platform == RuntimePlatform.Android) return;
4746
if (activity == null) return;
4847

4948
var isBeta = false;

NewMod/LocalSettings/NewModLocalSettings.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using MiraAPI.Hud;
33
using MiraAPI.LocalSettings;
44
using MiraAPI.LocalSettings.Attributes;
5+
using NewMod.Patches;
56
using UnityEngine;
67

78
namespace NewMod.LocalSettings
@@ -56,6 +57,28 @@ public override void OnOptionChanged(ConfigEntryBase configEntry)
5657
btn.SetButtonLocation(ButtonLocation.BottomLeft);
5758
}
5859
}
60+
if (configEntry == EnableCustomCursor)
61+
{
62+
if (EnableCustomCursor.Value)
63+
{
64+
var cur = NewModAsset.CustomCursor.LoadAsset();
65+
var tex = cur?.texture;
66+
67+
if (tex != null)
68+
{
69+
Cursor.SetCursor(tex, Vector2.zero, CursorMode.Auto);
70+
Cursor.visible = true;
71+
Cursor.lockState = CursorLockMode.None;
72+
MainMenuPatch._cachedCursor = tex;
73+
}
74+
}
75+
else
76+
{
77+
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
78+
Cursor.visible = true;
79+
Cursor.lockState = CursorLockMode.None;
80+
}
81+
}
5982
}
6083
}
6184
}

0 commit comments

Comments
 (0)