From 39ec493325b6ca3381cc3f5d8733cbef94490b95 Mon Sep 17 00:00:00 2001 From: Tom Grobbe <31419184+TomGrobbe@users.noreply.github.com> Date: Fri, 9 Mar 2018 22:04:50 +0100 Subject: [PATCH 1/2] Actually fix the scroll speed bug properly this time --- NativeUI.dll | Bin 129024 -> 118784 bytes vMenu/MainMenu.cs | 200 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 190 insertions(+), 10 deletions(-) diff --git a/NativeUI.dll b/NativeUI.dll index 9cbf7231526a1fccf4b3a789ef60e667b2f40c9f..5b866a7cf80c539796ed52cf1325c6165e3b830b 100644 GIT binary patch delta 37809 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 H;u!x2ID_aa delta 48852 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 {HFL~F2 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 diff --git a/vMenu/MainMenu.cs b/vMenu/MainMenu.cs index afe2ce6a..41812ae5 100644 --- a/vMenu/MainMenu.cs +++ b/vMenu/MainMenu.cs @@ -76,7 +76,8 @@ public MainMenu() else { Tick += OnTick; - Tick += ProcessMenus; + Tick += ProcessMainButtons; + Tick += ProcessDirectionalButtons; } } @@ -101,7 +102,11 @@ public static void SetPermissions(dynamic dict) permissionsSetupDone = true; } #endregion - + #region set settings + ///

+ /// Sets the settings received from the server. + /// + /// public static void SetOptions(dynamic options) { MenuOptions = new Dictionary(); @@ -116,19 +121,193 @@ public static void SetOptions(dynamic options) MenuToggleKey = int.Parse(MenuOptions["menuKey"].ToString()); optionsSetupDone = true; } + #endregion + #region Process Menu Buttons /// - /// This has to be separated from the "draw" function to fix the fast scrolling bug. + /// Process the select & go back/cancel buttons. /// /// - private async Task ProcessMenus() + private async Task ProcessMainButtons() { - await Mp.ProcessControlAsync(); - Mp.WidthOffset = 50; + UIMenu currentMenu = Cf.GetOpenMenu(); + if (currentMenu != null) + { + // Select / Enter + if (Game.IsDisabledControlJustPressed(0, Control.FrontendAccept) || Game.IsControlJustPressed(0, Control.FrontendAccept)) + { + currentMenu.SelectItem(); + if (DebugMode) + { + Subtitle.Custom("select"); + } + } + // Cancel / Go Back + else if (Game.IsDisabledControlJustPressed(0, Control.PhoneCancel)) + { + currentMenu.GoBack(); + if (DebugMode) + { + Subtitle.Custom("cancel"); + } + } + } + else + { + await Delay(0); + } + } + + /// + /// Process left/right/up/down buttons (also holding down buttons will speed up after 3 iterations) + /// + /// + private async Task ProcessDirectionalButtons() + { + // Get the currently open menu. + UIMenu currentMenu = Cf.GetOpenMenu(); + // If it exists. + if (currentMenu != null) + { + // Check if the Go Up controls are pressed. + if (Game.IsDisabledControlJustPressed(0, Control.Phone) || Game.IsControlJustPressed(0, Control.SniperZoomInSecondary)) + { + // Update the currently selected item to the new one. + currentMenu.GoUp(); + currentMenu.GoUpOverflow(); + + // Get the current game time. + var time = GetGameTimer(); + var times = 0; + var delay = 200; + + // Do the following as long as the controls are being pressed. + while (Game.IsDisabledControlPressed(0, Control.Phone) && Cf.GetOpenMenu() != null) + { + // Update the current menu. + currentMenu = Cf.GetOpenMenu(); + + // Check if the game time has changed by "delay" amount. + if (GetGameTimer() - time > delay) + { + // Increment the "changed indexes" counter + times++; + + // If the controls are still being held down after moving 3 indexes, reduce the delay between index changes. + if (times > 2) + { + delay = 150; + } + + // Update the currently selected item to the new one. + currentMenu.GoUp(); + currentMenu.GoUpOverflow(); + + // Reset the time to the current game timer. + time = GetGameTimer(); + } + + // Wait for the next game tick. + await Delay(0); + } + // If debugging is enabled, a subtitle will be shown when this control is pressed. + if (DebugMode) + { + Subtitle.Custom("up"); + } + } + + // Check if the Go Left controls are pressed. + else if (Game.IsDisabledControlJustPressed(0, Control.PhoneLeft)) + { + currentMenu.GoLeft(); + var time = GetGameTimer(); + var times = 0; + var delay = 200; + while (Game.IsDisabledControlPressed(0, Control.PhoneLeft) && Cf.GetOpenMenu() != null) + { + currentMenu = Cf.GetOpenMenu(); + if (GetGameTimer() - time > delay) + { + times++; + if (times > 2) + { + delay = 150; + } + currentMenu.GoLeft(); + time = GetGameTimer(); + } + await Delay(0); + } + if (DebugMode) + { + Subtitle.Custom("left"); + } + } + + // Check if the Go Right controls are pressed. + else if (Game.IsDisabledControlJustPressed(0, Control.PhoneRight)) + { + currentMenu.GoRight(); + var time = GetGameTimer(); + var times = 0; + var delay = 200; + while (Game.IsDisabledControlPressed(0, Control.PhoneRight) && Cf.GetOpenMenu() != null) + { + currentMenu = Cf.GetOpenMenu(); + if (GetGameTimer() - time > delay) + { + times++; + if (times > 2) + { + delay = 150; + } + currentMenu.GoRight(); + time = GetGameTimer(); + } + await Delay(0); + } + if (DebugMode) + { + Subtitle.Custom("right"); + } + } + + // Check if the Go Down controls are pressed. + else if (Game.IsDisabledControlJustPressed(0, Control.PhoneDown) || Game.IsControlJustPressed(0, Control.SniperZoomOutSecondary)) + { + currentMenu.GoDown(); + currentMenu.GoDownOverflow(); + var time = GetGameTimer(); + var times = 0; + var delay = 200; + while (Game.IsDisabledControlPressed(0, Control.PhoneDown) && Cf.GetOpenMenu() != null) + { + currentMenu = Cf.GetOpenMenu(); + if (GetGameTimer() - time > delay) + { + times++; + if (times > 2) + { + delay = 150; + } + currentMenu.GoDown(); + currentMenu.GoDownOverflow(); + time = GetGameTimer(); + } + await Delay(0); + } + if (DebugMode) + { + Subtitle.Custom("down"); + } + } + } } + #endregion /// - /// OnTick runs every game tick. + /// Main OnTick task runs every game tick and handles all the menu stuff. /// /// private async Task OnTick() @@ -171,7 +350,7 @@ private async Task OnTick() #endregion // If the setup (permissions) is done, and it's not the first tick, then do this: - if (permissionsSetupDone && !firstTick) + if (permissionsSetupDone && optionsSetupDone && !firstTick) { #region Handle Opening/Closing of the menu. // If menus can be opened. @@ -296,12 +475,13 @@ private async Task OnTick() } } #endregion - // Only draw the menu each frame, control handling is done in another Tick task because that needs delays. + + // Process the menu. Draw it and reset the menu width offset to make sure any newly generated menus always have the right width offset. + Mp.WidthOffset = 50; Mp.Draw(); } } - #region Add Menu Function /// /// Add the menu to the menu pool and set it up correctly. From 41bc5e60ab846c3fe3ea807d70cb89c7b63279a4 Mon Sep 17 00:00:00 2001 From: Tom Grobbe <31419184+TomGrobbe@users.noreply.github.com> Date: Fri, 9 Mar 2018 22:16:38 +0100 Subject: [PATCH 2/2] Added correct timer to menu open button on controller & fixed cinematic camera not being disabled when pressing "b" on controller to close a menu. --- vMenu/MainMenu.cs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/vMenu/MainMenu.cs b/vMenu/MainMenu.cs index 41812ae5..d0408449 100644 --- a/vMenu/MainMenu.cs +++ b/vMenu/MainMenu.cs @@ -134,7 +134,7 @@ private async Task ProcessMainButtons() if (currentMenu != null) { // Select / Enter - if (Game.IsDisabledControlJustPressed(0, Control.FrontendAccept) || Game.IsControlJustPressed(0, Control.FrontendAccept)) + if (Game.IsDisabledControlJustReleased(0, Control.FrontendAccept) || Game.IsControlJustReleased(0, Control.FrontendAccept)) { currentMenu.SelectItem(); if (DebugMode) @@ -143,11 +143,14 @@ private async Task ProcessMainButtons() } } // Cancel / Go Back - else if (Game.IsDisabledControlJustPressed(0, Control.PhoneCancel)) - { + else if (Game.IsDisabledControlJustReleased(0, Control.PhoneCancel)) + { + // Wait for the next frame to make sure the "cinematic camera" button doesn't get "re-enabled" before the menu gets closed. + await Delay(0); currentMenu.GoBack(); if (DebugMode) { + Subtitle.Custom("cancel"); } } @@ -375,25 +378,23 @@ private async Task OnTick() else if (!Mp.IsAnyMenuOpen() && Game.CurrentInputMode == InputMode.GamePad) { // Create a timer and set it to 0. - float timer = 0f; + //float timer = 0f; + int timer = GetGameTimer(); // While (and only if) the player keeps using only the controller, and keeps holding down the interactionmenu button (select on controller). while (Game.CurrentInputMode == InputMode.GamePad && Game.IsControlPressed(0, Control.InteractionMenu)) { - // Increment the timer. - timer++; - // If debugging is enabled, show the progress using a timerbar. if (DebugMode) { bt.Draw(0); - float percent = (timer / 60f); + float percent = ((GetGameTimer() - timer) / 900f); bt.Percentage = percent; - Subtitle.Success(percent.ToString(), 0, true, "Progress:"); + //Subtitle.Success(percent.ToString(), 0, true, "Progress:"); } - // If the timer has reached 60, open the menu. (60 is +/- 1 second, so the player is holding down the button for at least 1 second). - if (timer > 59) + // If 900ms in real time have passed. + if (GetGameTimer() - timer > 900) { Menu.Visible = !Mp.IsAnyMenuOpen(); // Break the loop (resetting the timer). @@ -467,7 +468,7 @@ private async Task OnTick() Game.DisableControlThisFrame(0, (Control)MenuToggleKey); // When in a vehicle - if (IsPedInAnyVehicle(PlayerPedId(), false)) + //if (IsPedInAnyVehicle(PlayerPedId(), false)) { Game.DisableControlThisFrame(0, Control.VehicleSelectNextWeapon); Game.DisableControlThisFrame(0, Control.VehicleSelectPrevWeapon);