djui_hud_is_mouse_locked() (#986)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled

* djui_hud_get_mouse_locked()

Adds a total of 1 function:
# `bool djui_hud_get_mouse_locked()`
Returns the DJUI mouse lock status

Tip: This won't return the true state of mouse lock, so make sure to use `get_first_person_enabled()` and `camera_config_is_mouse_look_enabled()` as well

---
This also fills in some descriptions left out by Isaac in his viewport/scissor functions

* djui_hud_is_mouse_locked()

Same as before but is

* this is better imo
This commit is contained in:
Cooliokid956 2025-10-29 12:41:27 -05:00 committed by GitHub
parent 9f7ad0f93e
commit 5fd55ffac1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 82 additions and 32 deletions

View file

@ -3914,8 +3914,14 @@ function djui_hud_get_raw_mouse_y()
-- ...
end
--- @return boolean
--- Checks if the cursor is locked to the window
function djui_hud_is_mouse_locked()
-- ...
end
--- @param locked boolean
--- Sets if the cursor is hidden and constrainted to the window
--- Locks (or unlocks) the cursor to the window
function djui_hud_set_mouse_locked(locked)
-- ...
end
@ -3954,12 +3960,12 @@ end
--- @param y number
--- @param width number
--- @param height number
--- Sets the viewport to the specified position and size, this will resize
--- Sets the viewport to the specified position and size, this will resize any subsequent DJUI graphics
function djui_hud_set_viewport(x, y, width, height)
-- ...
end
--- put the description here
--- Resets the viewport to a fullscreen state
function djui_hud_reset_viewport()
-- ...
end
@ -3968,12 +3974,12 @@ end
--- @param y number
--- @param width number
--- @param height number
--- put the description here
--- Sets the scissor rectangle to the specified position and size, this will cut off any subsequent DJUI graphics not within the rectangle
function djui_hud_set_scissor(x, y, width, height)
-- ...
end
--- put the description here
--- Resets the scissor rectangle to a fullscreen state
function djui_hud_reset_scissor()
-- ...
end
@ -6443,14 +6449,14 @@ end
--- @param m MarioState
--- @return integer
--- Performs a full Mario stationary physics step (4 substeps) and returns an `GROUND_STEP_*` result
--- Performs a full Mario stationary physics step (4 substeps) and returns a `GROUND_STEP_*` result
function stationary_ground_step(m)
-- ...
end
--- @param m MarioState
--- @return integer
--- Performs a full Mario ground physics step (4 substeps) and returns an `GROUND_STEP_*` result
--- Performs a full Mario ground physics step (4 substeps) and returns a `GROUND_STEP_*` result
function perform_ground_step(m)
-- ...
end
@ -10029,7 +10035,7 @@ end
--- @param player integer
--- @return integer
--- Gets the tempo of `player`
--- Gets the `tempo` of `player`
function sequence_player_get_tempo(player)
-- ...
end
@ -10043,7 +10049,7 @@ end
--- @param player integer
--- @return integer
--- Gets the tempoAcc (tempo accumulation) of `player`
--- Gets the `tempoAcc` (tempo accumulation) of `player`
function sequence_player_get_tempo_acc(player)
-- ...
end
@ -10057,7 +10063,7 @@ end
--- @param player integer
--- @return integer
--- Gets the transposition (pitch) of `player`
--- Gets the `transposition` (pitch) of `player`
function sequence_player_get_transposition(player)
-- ...
end

View file

@ -3140,10 +3140,31 @@ Returns the y coordinate of the mouse relative to the screen
<br />
## [djui_hud_is_mouse_locked](#djui_hud_is_mouse_locked)
### Description
Checks if the cursor is locked to the window
### Lua Example
`local booleanValue = djui_hud_is_mouse_locked()`
### Parameters
- None
### Returns
- `boolean`
### C Prototype
`bool djui_hud_is_mouse_locked(void);`
[:arrow_up_small:](#)
<br />
## [djui_hud_set_mouse_locked](#djui_hud_set_mouse_locked)
### Description
Sets if the cursor is hidden and constrainted to the window
Locks (or unlocks) the cursor to the window
### Lua Example
`djui_hud_set_mouse_locked(locked)`
@ -3271,7 +3292,7 @@ Returns the amount scrolled vertically (-down/up+)
## [djui_hud_set_viewport](#djui_hud_set_viewport)
### Description
Sets the viewport to the specified position and size, this will resize
Sets the viewport to the specified position and size, this will resize any subsequent DJUI graphics
### Lua Example
`djui_hud_set_viewport(x, y, width, height)`
@ -3297,7 +3318,7 @@ Sets the viewport to the specified position and size, this will resize
## [djui_hud_reset_viewport](#djui_hud_reset_viewport)
### Description
put the description here
Resets the viewport to a fullscreen state
### Lua Example
`djui_hud_reset_viewport()`
@ -3318,7 +3339,7 @@ put the description here
## [djui_hud_set_scissor](#djui_hud_set_scissor)
### Description
put the description here
Sets the scissor rectangle to the specified position and size, this will cut off any subsequent DJUI graphics not within the rectangle
### Lua Example
`djui_hud_set_scissor(x, y, width, height)`
@ -3344,7 +3365,7 @@ put the description here
## [djui_hud_reset_scissor](#djui_hud_reset_scissor)
### Description
put the description here
Resets the scissor rectangle to a fullscreen state
### Lua Example
`djui_hud_reset_scissor()`

View file

@ -4070,7 +4070,7 @@ Sets all of Mario's velocity variables to 0 and sets his Y position to the floor
## [stationary_ground_step](#stationary_ground_step)
### Description
Performs a full Mario stationary physics step (4 substeps) and returns an `GROUND_STEP_*` result
Performs a full Mario stationary physics step (4 substeps) and returns a `GROUND_STEP_*` result
### Lua Example
`local integerValue = stationary_ground_step(m)`
@ -4093,7 +4093,7 @@ Performs a full Mario stationary physics step (4 substeps) and returns an `GROUN
## [perform_ground_step](#perform_ground_step)
### Description
Performs a full Mario ground physics step (4 substeps) and returns an `GROUND_STEP_*` result
Performs a full Mario ground physics step (4 substeps) and returns a `GROUND_STEP_*` result
### Lua Example
`local integerValue = perform_ground_step(m)`

View file

@ -5276,7 +5276,7 @@ Returns the current sound mode (e.g., stereo, mono) stored in the save file. Use
## [sequence_player_get_tempo](#sequence_player_get_tempo)
### Description
Gets the tempo of `player`
Gets the `tempo` of `player`
### Lua Example
`local integerValue = sequence_player_get_tempo(player)`
@ -5323,7 +5323,7 @@ Sets the `tempo` of `player`. Resets when another sequence is played
## [sequence_player_get_tempo_acc](#sequence_player_get_tempo_acc)
### Description
Gets the tempoAcc (tempo accumulation) of `player`
Gets the `tempoAcc` (tempo accumulation) of `player`
### Lua Example
`local integerValue = sequence_player_get_tempo_acc(player)`
@ -5370,7 +5370,7 @@ Sets the `tempoAcc` (tempo accumulation) of `player`. Resets when another sequen
## [sequence_player_get_transposition](#sequence_player_get_transposition)
### Description
Gets the transposition (pitch) of `player`
Gets the `transposition` (pitch) of `player`
### Lua Example
`local integerValue = sequence_player_get_transposition(player)`

View file

@ -770,6 +770,7 @@
- [djui_hud_get_mouse_y](functions-3.md#djui_hud_get_mouse_y)
- [djui_hud_get_raw_mouse_x](functions-3.md#djui_hud_get_raw_mouse_x)
- [djui_hud_get_raw_mouse_y](functions-3.md#djui_hud_get_raw_mouse_y)
- [djui_hud_is_mouse_locked](functions-3.md#djui_hud_is_mouse_locked)
- [djui_hud_set_mouse_locked](functions-3.md#djui_hud_set_mouse_locked)
- [djui_hud_get_mouse_buttons_down](functions-3.md#djui_hud_get_mouse_buttons_down)
- [djui_hud_get_mouse_buttons_pressed](functions-3.md#djui_hud_get_mouse_buttons_pressed)

View file

@ -15,15 +15,15 @@ void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume);
void process_sequences(s32 iterationsRemaining);
void init_sequence_player(u32 player);
void init_sequence_players(void);
/* |description|Gets the tempo of `player`|descriptionEnd| */
/* |description|Gets the `tempo` of `player`|descriptionEnd| */
u16 sequence_player_get_tempo(u8 player);
/* |description|Sets the `tempo` of `player`. Resets when another sequence is played|descriptionEnd| */
void sequence_player_set_tempo(u8 player, u16 tempo);
/* |description|Gets the tempoAcc (tempo accumulation) of `player`|descriptionEnd| */
/* |description|Gets the `tempoAcc` (tempo accumulation) of `player`|descriptionEnd| */
u16 sequence_player_get_tempo_acc(u8 player);
/* |description|Sets the `tempoAcc` (tempo accumulation) of `player`. Resets when another sequence is played|descriptionEnd| */
void sequence_player_set_tempo_acc(u8 player, u16 tempoAcc);
/* |description|Gets the transposition (pitch) of `player`|descriptionEnd| */
/* |description|Gets the `transposition` (pitch) of `player`|descriptionEnd| */
u16 sequence_player_get_transposition(u8 player);
/* |description|Sets the `transposition` (pitch) of `player`. Resets when another sequence is played|descriptionEnd| */
void sequence_player_set_transposition(u8 player, u16 transposition);

View file

@ -36,9 +36,9 @@ u32 mario_update_moving_sand(struct MarioState *m);
u32 mario_update_windy_ground(struct MarioState *m);
/* |description|Sets all of Mario's velocity variables to 0 and sets his Y position to the floor height|descriptionEnd| */
void stop_and_set_height_to_floor(struct MarioState *m);
/* |description|Performs a full Mario stationary physics step (4 substeps) and returns an `GROUND_STEP_*` result|descriptionEnd| */
/* |description|Performs a full Mario stationary physics step (4 substeps) and returns a `GROUND_STEP_*` result|descriptionEnd| */
s32 stationary_ground_step(struct MarioState *m);
/* |description|Performs a full Mario ground physics step (4 substeps) and returns an `GROUND_STEP_*` result|descriptionEnd| */
/* |description|Performs a full Mario ground physics step (4 substeps) and returns a `GROUND_STEP_*` result|descriptionEnd| */
s32 perform_ground_step(struct MarioState *m);
/* |description|Performs a full Mario air physics step (4 substeps) and returns an `AIR_STEP_*` result|descriptionEnd| */
s32 perform_air_step(struct MarioState *m, u32 stepArg);

View file

@ -33,7 +33,7 @@ static struct DjuiColor sRefColor = { 255, 255, 255, 255 };
static bool sLegacy = false;
f32 gDjuiHudUtilsZ = 0;
u8 gDjuiHudLockMouse = false;
bool gDjuiHudLockMouse = false;
extern ALIGNED8 const u8 texture_hud_char_camera[];
extern ALIGNED8 const u8 texture_hud_char_lakitu[];
@ -297,6 +297,10 @@ f32 djui_hud_get_raw_mouse_y(void) {
return mouse_y;
}
bool djui_hud_is_mouse_locked(void) {
return gDjuiHudLockMouse;
}
void djui_hud_set_mouse_locked(bool locked) {
gDjuiHudLockMouse = locked;
}

View file

@ -52,7 +52,7 @@ struct GlobalTextures {
extern struct GlobalTextures gGlobalTextures;
extern f32 gDjuiHudUtilsZ;
extern u8 gDjuiHudLockMouse;
extern bool gDjuiHudLockMouse;
/* |description|Gets the current DJUI HUD resolution|descriptionEnd| */
u8 djui_hud_get_resolution(void);
@ -92,7 +92,9 @@ f32 djui_hud_get_mouse_y(void);
f32 djui_hud_get_raw_mouse_x(void);
/* |description|Returns the y coordinate of the mouse relative to the screen|descriptionEnd| */
f32 djui_hud_get_raw_mouse_y(void);
/* |description|Sets if the cursor is hidden and constrainted to the window|descriptionEnd| */
/* |description|Checks if the cursor is locked to the window|descriptionEnd| */
bool djui_hud_is_mouse_locked(void);
/* |description|Locks (or unlocks) the cursor to the window|descriptionEnd| */
void djui_hud_set_mouse_locked(bool locked);
/* |description|Returns the flags of the mouse buttons held down|descriptionEnd| */
u8 djui_hud_get_mouse_buttons_down(void);
@ -104,13 +106,13 @@ u8 djui_hud_get_mouse_buttons_released(void);
f32 djui_hud_get_mouse_scroll_x(void);
/* |description|Returns the amount scrolled vertically (-down/up+)|descriptionEnd| */
f32 djui_hud_get_mouse_scroll_y(void);
/* |description|Sets the viewport to the specified position and size, this will resize |descriptionEnd| */
/* |description|Sets the viewport to the specified position and size, this will resize any subsequent DJUI graphics|descriptionEnd| */
void djui_hud_set_viewport(f32 x, f32 y, f32 width, f32 height);
/* |description|put the description here|descriptionEnd| */
/* |description|Resets the viewport to a fullscreen state|descriptionEnd| */
void djui_hud_reset_viewport(void);
/* |description|put the description here|descriptionEnd| */
/* |description|Sets the scissor rectangle to the specified position and size, this will cut off any subsequent DJUI graphics not within the rectangle|descriptionEnd| */
void djui_hud_set_scissor(f32 x, f32 y, f32 width, f32 height);
/* |description|put the description here|descriptionEnd| */
/* |description|Resets the scissor rectangle to a fullscreen state|descriptionEnd| */
void djui_hud_reset_scissor(void);
/* |description|Measures the length of `message` in the current font|descriptionEnd| */

View file

@ -12698,6 +12698,21 @@ int smlua_func_djui_hud_get_raw_mouse_y(UNUSED lua_State* L) {
return 1;
}
int smlua_func_djui_hud_is_mouse_locked(UNUSED lua_State* L) {
if (L == NULL) { return 0; }
int top = lua_gettop(L);
if (top != 0) {
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_hud_is_mouse_locked", 0, top);
return 0;
}
lua_pushboolean(L, djui_hud_is_mouse_locked());
return 1;
}
int smlua_func_djui_hud_set_mouse_locked(lua_State* L) {
if (L == NULL) { return 0; }
@ -37431,6 +37446,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "djui_hud_get_mouse_y", smlua_func_djui_hud_get_mouse_y);
smlua_bind_function(L, "djui_hud_get_raw_mouse_x", smlua_func_djui_hud_get_raw_mouse_x);
smlua_bind_function(L, "djui_hud_get_raw_mouse_y", smlua_func_djui_hud_get_raw_mouse_y);
smlua_bind_function(L, "djui_hud_is_mouse_locked", smlua_func_djui_hud_is_mouse_locked);
smlua_bind_function(L, "djui_hud_set_mouse_locked", smlua_func_djui_hud_set_mouse_locked);
smlua_bind_function(L, "djui_hud_get_mouse_buttons_down", smlua_func_djui_hud_get_mouse_buttons_down);
smlua_bind_function(L, "djui_hud_get_mouse_buttons_pressed", smlua_func_djui_hud_get_mouse_buttons_pressed);