From 22a24eec040880b8c1672081aa780b6002c7993d Mon Sep 17 00:00:00 2001 From: TheJordan Date: Sat, 7 Mar 2026 02:26:58 +0100 Subject: [PATCH] 0.1.4 | Added: BetterAirport --- CHANGELOG.md | 7 +- src/JordanMod/ConfigHandler.cs | 14 +++ src/JordanMod/JordanMod.csproj | 2 +- .../better_airport/BetterAirportModule.cs | 89 +++++++++++++++++++ 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/JordanMod/modules/better_airport/BetterAirportModule.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index d34e309..d4216e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,4 +17,9 @@ # v0.1.3 | Easy Backpack - Added EasyBackpackModule and EasyBackpackPatch -- EasyBackpackPatch adds a new keybind to open the backpack UI whilst wearing it. \ No newline at end of file +- EasyBackpackPatch adds a new keybind to open the backpack UI whilst wearing it. + +# v0.1.4 | Better Airport + +- Added BetterAirportModule +- BetterAirportModule adds patches to make the airport more enjoyable, such as increasing the conveyor belt speed and making the terminals position at the start. \ No newline at end of file diff --git a/src/JordanMod/ConfigHandler.cs b/src/JordanMod/ConfigHandler.cs index e86ca5b..6e0a6d5 100644 --- a/src/JordanMod/ConfigHandler.cs +++ b/src/JordanMod/ConfigHandler.cs @@ -10,6 +10,9 @@ public static class ConfigHandler // Easy Backpack public static ConfigEntry OpenBackpack { get; private set; } = null!; + // Better Airport + public static ConfigEntry ConveyorSpeedModifier { get; private set; } = null!; + public static void Initialize(ConfigFile configFile) { Config = configFile; @@ -21,6 +24,17 @@ public static class ConfigHandler KeyCode.B, new ConfigDescription("Open Easy Backpack UI") ); + + // Better Airport settings + ConveyorSpeedModifier = Config.Bind( + "Conveyor", + "ConveyorSpeedModifier", + 1.0f, + new ConfigDescription( + "Conveyor Speed Modifier", + new AcceptableValueRange(0.1f, 100f) + ) + ); } } \ No newline at end of file diff --git a/src/JordanMod/JordanMod.csproj b/src/JordanMod/JordanMod.csproj index a3912fb..5ee681a 100644 --- a/src/JordanMod/JordanMod.csproj +++ b/src/JordanMod/JordanMod.csproj @@ -8,7 +8,7 @@ JordanMod - 0.1.3 + 0.1.4 diff --git a/src/JordanMod/modules/better_airport/BetterAirportModule.cs b/src/JordanMod/modules/better_airport/BetterAirportModule.cs new file mode 100644 index 0000000..44fbcf3 --- /dev/null +++ b/src/JordanMod/modules/better_airport/BetterAirportModule.cs @@ -0,0 +1,89 @@ +using System; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace JordanMod.Modules.BetterAirport; + +[Module(Enabled = true)] +class BetterAirportModule : Module +{ + public override string ModuleName => "Better Airport Module"; + + private static readonly float DEFAULT_CONVEYOR_FORCE = 20f; + private static readonly float DEFAULT_MOVEAMOUNT_1 = -0.15f; + private static readonly float DEFAULT_MOVEAMOUNT_2 = -4.5f; + private static readonly float DEFAULT_MOVEAMOUNT_3 = -0.15f; + + public override Type[] GetPatches() + { + return []; + } + + public override void Initialize() + { + base.Initialize(); + SceneManager.sceneLoaded += OnSceneLoaded; + } + + private static void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + if (scene.name.ToLower() == "airport") + { + AirportCheckInKiosk checkinKiosk = UnityEngine.Object.FindFirstObjectByType(); + if (checkinKiosk != null) + { + checkinKiosk.transform.position = new Vector3(-11, 1.5f, 52.5f); + checkinKiosk.transform.eulerAngles = new Vector3(270, 0, 0); + } + AirportInviteFriendsKiosk friendKiosk = UnityEngine.Object.FindFirstObjectByType(); + if (friendKiosk != null) + { + friendKiosk.transform.position = new Vector3(-8, 1.5f, 52.5f); + friendKiosk.transform.eulerAngles = new Vector3(270, 180, 0); + } + + PlayerMoveZone[] conveyors = UnityEngine.Object.FindObjectsByType(FindObjectsSortMode.None); + foreach (PlayerMoveZone conveyor in conveyors) + { + AdjustConveyorSpeed(conveyor); + } + ConfigHandler.ConveyorSpeedModifier.SettingChanged += OnConveyorSpeedChanged; + } + else + { + ConfigHandler.ConveyorSpeedModifier.SettingChanged -= OnConveyorSpeedChanged; + } + } + + private static void OnConveyorSpeedChanged(object? sender, EventArgs e) + { + PlayerMoveZone[] conveyors = UnityEngine.Object.FindObjectsByType(FindObjectsSortMode.None); + foreach (PlayerMoveZone conveyor in conveyors) + { + AdjustConveyorSpeed(conveyor); + } + } + + private static void AdjustConveyorSpeed(PlayerMoveZone zone) + { + float speedMultiplier = ConfigHandler.ConveyorSpeedModifier.Value; + + zone.Force = DEFAULT_CONVEYOR_FORCE * speedMultiplier; + + AdjustConveyorAnimation(zone.transform.parent?.gameObject, speedMultiplier); + Transform? sibling = zone.transform.parent?.Find("conveyor"); + if (sibling != null) AdjustConveyorAnimation(sibling.gameObject, speedMultiplier); + } + + private static void AdjustConveyorAnimation(GameObject? conveyor, float speedMultiplier) + { + if (conveyor == null) return; + if (!conveyor.TryGetComponent(out MeshRenderer? meshRenderer) || meshRenderer == null) return; + Material material = Array.Find(meshRenderer.materials, m => m != null && m.name.StartsWith("M_Conveyer")); + if (material == null) return; + material.SetColor("_MoveAmount1", new Color(0, DEFAULT_MOVEAMOUNT_1 * speedMultiplier, 0, 0)); + material.SetColor("_MoveAmount2", new Color(0, DEFAULT_MOVEAMOUNT_2 * speedMultiplier, 0, 0)); + material.SetColor("_MoveAmount3", new Color(0, DEFAULT_MOVEAMOUNT_3 * speedMultiplier, 0, 0)); + } + +} \ No newline at end of file