This commit is contained in:
Gurge44 committed 2026-04-09 13:27:22 +02:00
1 parent 5b36c0130a
commit 16bf7a097f
3 files changed
+86 -85

No files matched your search

+1 -1
View File
@@ -142,7 +142,7 @@ public static class KingOfTheZones
.SetGameMode(gameMode)
.SetColor(color);
AllZonesMoveAtOnce = new BooleanOptionItem(id++, "KingOfTheZones.AllZonesMoveAtOnce", true, TabGroup.GameSettings)
AllZonesMoveAtOnce = new BooleanOptionItem(id++, "KingOfTheZones.AllZonesMoveAtOnce", false, TabGroup.GameSettings)
.SetParent(ZonesMove)
.SetGameMode(gameMode)
.SetColor(color);
+20 -34
View File
@@ -16,12 +16,7 @@ public class ClientControlGUI : MonoBehaviour
/// Whether the panel is currently visible or should be visible
/// </summary>
public bool IsOpen;
/// <summary>
/// The value of <see cref="IsOpen"/> in the last frame
/// </summary>
private bool _lastOpenState;
/// <summary>
/// Current scroll position inside the panel
/// </summary>
@@ -284,13 +279,6 @@ public class ClientControlGUI : MonoBehaviour
{
if (!HudManager.InstanceExists) return;
// Disable movement when GUI is open
if (_lastOpenState != IsOpen)
{
if (PlayerControl.LocalPlayer) KillAnimation.SetMovement(PlayerControl.LocalPlayer, !IsOpen);
_lastOpenState = IsOpen;
}
if (!_windowInitialized) InitWindowRect();
// Rebuild styles only when screen scale changes; HideAndDontSave keeps textures alive across scene transitions
@@ -470,13 +458,12 @@ public class ClientControlGUI : MonoBehaviour
InGameRoleInfoMenu.Show();
}
});
Section(ref y, "Camera");
if (inLobby || (inGame && !inMeeting && canMove && (!localAlive || GameStates.IsFreePlay || DebugModeManager.AmDebugger)))
if (Zoom.CanZoom)
{
Section(ref y, "Camera");
// Sync slider to actual camera value so external changes (scroll wheel, touch pinch) are reflected
// Camera.main is read inline each frame - caching it across scene loads causes the zoom to drift
if (_cam) _zoomValue = _cam.orthographicSize;
float newZoom = Slider(ref y, $"Zoom {_zoomValue:F1}x", _zoomValue, 3.0f, 18.0f, w);
@@ -494,27 +481,26 @@ public class ClientControlGUI : MonoBehaviour
_zoomValue = 3.0f;
}
y += ButtonHeight + Padding * 0.7f;
}
bool canNoclip = canMove && (!AmongUsClient.Instance.IsGameStarted || !GameStates.IsOnlineGame);
if (canNoclip)
if (canMove && (!AmongUsClient.Instance.IsGameStarted || !GameStates.IsOnlineGame))
{
// Reads live state every frame for correct label/colour; lambda also reads it on click to avoid stale values
bool noclipOn = ControllerManagerUpdatePatch.NoClipEnabled;
Btn(ref y, noclipOn ? "No-clip: ON" : "No-clip: OFF", noclipOn ? _sHost : _sAction, () =>
{
// Reads live state every frame for correct label/colour; lambda also reads it on click to avoid stale values
bool noclipOn = ControllerManagerUpdatePatch.NoClipEnabled;
Btn(ref y, noclipOn ? "No-clip: ON" : "No-clip: OFF", noclipOn ? _sHost : _sAction, () =>
{
ControllerManagerUpdatePatch.NoClipEnabled = canNoclip && !ControllerManagerUpdatePatch.NoClipEnabled;
if (OperatingSystem.IsAndroid()) PlayerControl.LocalPlayer.Collider.offset = ControllerManagerUpdatePatch.NoClipEnabled ? new Vector2(0f, 127f) : new Vector2(0f, -0.3636f);
});
}
Btn(ref y, _hudHidden ? "Show HUD" : "Hide HUD", _hudHidden ? _sHost : _sAction, () =>
{
_hudHidden = !_hudHidden;
if (HudManager.InstanceExists)
HudManager.Instance.gameObject.SetActive(!_hudHidden);
ControllerManagerUpdatePatch.NoClipEnabled = !ControllerManagerUpdatePatch.NoClipEnabled;
if (OperatingSystem.IsAndroid()) PlayerControl.LocalPlayer.Collider.offset = ControllerManagerUpdatePatch.NoClipEnabled ? new Vector2(0f, 127f) : new Vector2(0f, -0.3636f);
});
}
else if (OperatingSystem.IsAndroid()) PlayerControl.LocalPlayer.Collider.offset = new Vector2(0f, -0.3636f);
Btn(ref y, _hudHidden ? "Show HUD" : "Hide HUD", _hudHidden ? _sHost : _sAction, () =>
{
_hudHidden = !_hudHidden;
if (HudManager.InstanceExists)
HudManager.Instance.gameObject.SetActive(!_hudHidden);
});
if (inLobby)
{
+65 -50
View File
@@ -12,6 +12,8 @@ public static class Zoom
private static bool ResetButtons;
private static Camera Main;
public static bool CanZoom => ((GameStates.IsShip && !GameStates.IsMeeting && GameStates.IsCanMove && !PlayerControl.LocalPlayer.IsAlive()) || (GameStates.IsLobby && GameStates.IsCanMove)) && !InGameRoleInfoMenu.Showing;
public static void Postfix()
{
try
@@ -19,68 +21,71 @@ public static class Zoom
if (!Main) Main = Camera.main;
if (!Main) return;
if (((GameStates.IsShip && !GameStates.IsMeeting && GameStates.IsCanMove && !PlayerControl.LocalPlayer.IsAlive()) || (GameStates.IsLobby && GameStates.IsCanMove)) && !InGameRoleInfoMenu.Showing && !ClientControlGUI.Instance.IsOpen)
if (CanZoom)
{
if (Main.orthographicSize > 3.0f) ResetButtons = true;
if (Input.touchSupported && !MapBehaviour.Instance.IsOpen)
if (!ClientControlGUI.Instance.IsOpen)
{
if (Input.touchCount == 2)
if (Main.orthographicSize > 3.0f) ResetButtons = true;
if (Input.touchSupported && !MapBehaviour.Instance.IsOpen)
{
Touch touch0 = Input.GetTouch(0);
Touch touch1 = Input.GetTouch(1);
Vector2 touch0PrevPos = touch0.position - touch0.deltaPosition;
Vector2 touch1PrevPos = touch1.position - touch1.deltaPosition;
float prevTouchDeltaMag = (touch0PrevPos - touch1PrevPos).magnitude;
float currentTouchDeltaMag = (touch0.position - touch1.position).magnitude;
float deltaMagnitudeDiff = currentTouchDeltaMag - prevTouchDeltaMag;
switch (deltaMagnitudeDiff)
if (Input.touchCount == 2)
{
case > 0:
{
if (Main.orthographicSize > 3.0f)
SetZoomSize();
Touch touch0 = Input.GetTouch(0);
Touch touch1 = Input.GetTouch(1);
break;
}
case < 0:
Vector2 touch0PrevPos = touch0.position - touch0.deltaPosition;
Vector2 touch1PrevPos = touch1.position - touch1.deltaPosition;
float prevTouchDeltaMag = (touch0PrevPos - touch1PrevPos).magnitude;
float currentTouchDeltaMag = (touch0.position - touch1.position).magnitude;
float deltaMagnitudeDiff = currentTouchDeltaMag - prevTouchDeltaMag;
switch (deltaMagnitudeDiff)
{
if (GameStates.IsDead || GameStates.IsFreePlay || DebugModeManager.AmDebugger || GameStates.IsLobby)
case > 0:
{
if (Main.orthographicSize < 18.0f)
SetZoomSize(true);
}
if (Main.orthographicSize > 3.0f)
SetZoomSize();
break;
break;
}
case < 0:
{
if (GameStates.IsDead || GameStates.IsFreePlay || DebugModeManager.AmDebugger || GameStates.IsLobby)
{
if (Main.orthographicSize < 18.0f)
SetZoomSize(true);
}
break;
}
}
}
}
}
switch (Input.mouseScrollDelta.y)
{
case > 0:
switch (Input.mouseScrollDelta.y)
{
if (Main.orthographicSize > 3.0f)
SetZoomSize();
break;
}
case < 0:
{
if (GameStates.IsDead || GameStates.IsFreePlay || DebugModeManager.AmDebugger || GameStates.IsLobby)
case > 0:
{
if (Main.orthographicSize < 18.0f)
SetZoomSize(true);
}
if (Main.orthographicSize > 3.0f)
SetZoomSize();
break;
break;
}
case < 0:
{
if (GameStates.IsDead || GameStates.IsFreePlay || DebugModeManager.AmDebugger || GameStates.IsLobby)
{
if (Main.orthographicSize < 18.0f)
SetZoomSize(true);
}
break;
}
}
Flag.NewFlag("Zoom");
}
Flag.NewFlag("Zoom");
}
else
Flag.Run(() => SetZoomSize(reset: true), "Zoom");
@@ -97,24 +102,34 @@ public static class Zoom
if (reset)
{
Main.orthographicSize = 3.0f;
HudManager.Instance.UICamera.orthographicSize = 3.0f;
HudManager.Instance.Chat.transform.localScale = Vector3.one;
if (GameStates.IsMeeting) MeetingHud.Instance.transform.localScale = Vector3.one;
Reset();
}
else
{
Main.orthographicSize *= size;
HudManager.Instance.UICamera.orthographicSize *= size;
if (Main.orthographicSize < 3.0f || HudManager.Instance.UICamera.orthographicSize < 3.0f)
Reset();
}
HudManager.Instance?.ShadowQuad?.gameObject.SetActive((reset || Mathf.Approximately(Main.orthographicSize, 3.0f)) && PlayerControl.LocalPlayer.IsAlive());
HudManager.Instance.ShadowQuad?.gameObject.SetActive((reset || Mathf.Approximately(Main.orthographicSize, 3.0f)) && PlayerControl.LocalPlayer.IsAlive());
if (ResetButtons)
{
ResolutionManager.ResolutionChanged.Invoke((float)Screen.width / Screen.height, Screen.width, Screen.height, Screen.fullScreen);
ResetButtons = false;
}
return;
static void Reset()
{
Main.orthographicSize = 3.0f;
HudManager.Instance.UICamera.orthographicSize = 3.0f;
HudManager.Instance.Chat.transform.localScale = Vector3.one;
if (GameStates.IsMeeting) MeetingHud.Instance.transform.localScale = Vector3.one;
}
}
public static void OnFixedUpdate()