From 092a5fab32b94666ef6935dfd48974052fe9070b Mon Sep 17 00:00:00 2001 From: Agent X <44549182+Agent-11@users.noreply.github.com> Date: Sun, 19 Nov 2023 22:24:07 -0500 Subject: [PATCH] Make chat & console disallow mouse look --- src/game/bettercamera.inc.h | 2 +- src/game/first_person_cam.c | 5 ++--- src/pc/controller/controller_sdl1.c | 3 ++- src/pc/controller/controller_sdl2.c | 7 ++++--- src/pc/djui/djui.c | 1 - src/pc/djui/djui.h | 1 + src/pc/djui/djui_interactable.c | 1 - 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index d0acf32d..30aecfef 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -412,7 +412,7 @@ static void newcam_rotate_button(void) { newcam_tilt_acc -= (newcam_tilt_acc*((f32)newcam_degrade/100)); } - if ((newcam_mouse == 1) && !gDjuiInMainMenu) { + if ((newcam_mouse == 1) && !gDjuiInMainMenu && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) { newcam_yaw += ivrt(0) * mouse_x * 16; newcam_tilt += ivrt(1) * mouse_y * 16; } diff --git a/src/game/first_person_cam.c b/src/game/first_person_cam.c index 4119114f..3b46cc6b 100644 --- a/src/game/first_person_cam.c +++ b/src/game/first_person_cam.c @@ -10,6 +10,7 @@ #include "engine/math_util.h" #include "pc/controller/controller_mouse.h" +#include "pc/djui/djui.h" #include "pc/djui/djui_hud_utils.h" #include "pc/lua/utils/smlua_misc_utils.h" #include "pc/lua/smlua_hooks.h" @@ -62,7 +63,7 @@ void first_person_camera_update(void) { u8 invX = camera_config_is_x_inverted() ? 1 : -1; u8 invY = camera_config_is_y_inverted() ? 1 : -1; - if (gMenuMode == -1) { + if (gMenuMode == -1 && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) { // update pitch gFirstPersonCamera.pitch -= sensY * (invY * m->controller->extStickY - 1.5f * mouse_y); gFirstPersonCamera.pitch = CLAMP(gFirstPersonCamera.pitch, -0x3F00, 0x3F00); @@ -154,8 +155,6 @@ void first_person_update(void) { m->area->camera->mode = CAMERA_MODE_FREE_ROAM; } - gDjuiHudLockMouse = gMenuMode == -1; - m->marioBodyState->modelState = 0x100; if (m->heldObj) { Vec3f camDir = { diff --git a/src/pc/controller/controller_sdl1.c b/src/pc/controller/controller_sdl1.c index 7b2899ac..36cf450f 100644 --- a/src/pc/controller/controller_sdl1.c +++ b/src/pc/controller/controller_sdl1.c @@ -147,10 +147,11 @@ static inline int16_t get_axis(const int i) { return 0; } +extern s16 gMenuMode; static void controller_sdl_read(OSContPad *pad) { if (!init_ok) return; - if (newcam_mouse == 1 && sCurrPlayMode != 2) + if (newcam_mouse == 1 && gMenuMode == -1 && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) SDL_WM_GrabInput(SDL_GRAB_ON); else SDL_WM_GrabInput(SDL_GRAB_OFF); diff --git a/src/pc/controller/controller_sdl2.c b/src/pc/controller/controller_sdl2.c index 21d0b097..56748f63 100644 --- a/src/pc/controller/controller_sdl2.c +++ b/src/pc/controller/controller_sdl2.c @@ -169,14 +169,15 @@ static inline void update_button(const int i, const bool new) { } } -u8 ignore_lock = FALSE; +extern s16 gMenuMode; +bool ignore_lock = false; static void controller_sdl_read(OSContPad *pad) { if (!init_ok) { return; } if (!gDjuiHudLockMouse) { - if (newcam_mouse == 1 && (!is_game_paused() || sCurrPlayMode != 2) && !gDjuiInMainMenu) { + if (newcam_mouse == 1 && gMenuMode == -1 && !gDjuiInMainMenu && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) { SDL_SetRelativeMouseMode(SDL_TRUE); ignore_lock = true; } else { @@ -196,7 +197,7 @@ static void controller_sdl_read(OSContPad *pad) { last_mouse = (mouse_buttons ^ mouse) & mouse; mouse_buttons = mouse; - if (!ignore_lock && (!is_game_paused() || sCurrPlayMode != 2) && !gDjuiInMainMenu) { + if (!ignore_lock && gMenuMode == -1 && !gDjuiInMainMenu && !gDjuiChatBoxFocus && !gDjuiConsoleFocus) { SDL_SetRelativeMouseMode(gDjuiHudLockMouse ? SDL_TRUE : SDL_FALSE); } diff --git a/src/pc/djui/djui.c b/src/pc/djui/djui.c index 9ac8c997..fabd5a55 100644 --- a/src/pc/djui/djui.c +++ b/src/pc/djui/djui.c @@ -5,7 +5,6 @@ #include "djui_panel_pause.h" #include "djui_panel_join.h" #include "djui_panel_join_message.h" -#include "djui_console.h" #include "../debuglog.h" #include "pc/cliopts.h" #include "game/level_update.h" diff --git a/src/pc/djui/djui.h b/src/pc/djui/djui.h index 2275b96e..09f6d9ec 100644 --- a/src/pc/djui/djui.h +++ b/src/pc/djui/djui.h @@ -33,6 +33,7 @@ #include "djui_popup.h" #include "djui_chat_box.h" #include "djui_chat_message.h" +#include "djui_console.h" #include "djui_paginated.h" extern struct DjuiRoot* gDjuiRoot; diff --git a/src/pc/djui/djui_interactable.c b/src/pc/djui/djui_interactable.c index 72c2efe0..c0627e53 100644 --- a/src/pc/djui/djui_interactable.c +++ b/src/pc/djui/djui_interactable.c @@ -4,7 +4,6 @@ #include "djui_panel_pause.h" #include "djui_panel_modlist.h" #include "djui_panel_playerlist.h" -#include "djui_console.h" #include "src/pc/controller/controller_sdl.h" #include "src/pc/controller/controller_mouse.h"