add set_room_override (#522)

lets you override the displayed room, do set_room_override(-1) in order to get back to normal
This commit is contained in:
Blockyyy 2024-11-28 22:48:19 +01:00 committed by GitHub
parent bea8a3f9e9
commit fa2ec0957b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 1962 additions and 1 deletions

View file

@ -7370,6 +7370,11 @@ function set_mario_interact_hoot_if_in_range(sp0, sp4, sp8)
-- ...
end
--- @param room integer
function set_room_override(room)
-- ...
end
--- @param flags integer
function set_time_stop_flags(flags)
-- ...

View file

@ -7743,6 +7743,26 @@
<br />
## [set_room_override](#set_room_override)
### Lua Example
`set_room_override(room)`
### Parameters
| Field | Type |
| ----- | ---- |
| room | `integer` |
### Returns
- None
### C Prototype
`void set_room_override(s16 room);`
[:arrow_up_small:](#)
<br />
## [set_time_stop_flags](#set_time_stop_flags)
### Lua Example

View file

@ -5310,6 +5310,26 @@
<br />
## [surface_has_force](#surface_has_force)
### Lua Example
`local booleanValue = surface_has_force(surfaceType)`
### Parameters
| Field | Type |
| ----- | ---- |
| surfaceType | `integer` |
### Returns
- `boolean`
### C Prototype
`bool surface_has_force(s16 surfaceType);`
[:arrow_up_small:](#)
<br />
---
[< prev](functions-4.md) | [1](functions.md) | [2](functions-2.md) | [3](functions-3.md) | [4](functions-4.md) | 5]

1887
docs/lua/functions-6.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -1539,6 +1539,7 @@
- [player_performed_grab_escape_action](functions-4.md#player_performed_grab_escape_action)
- [random_f32_around_zero](functions-4.md#random_f32_around_zero)
- [set_mario_interact_hoot_if_in_range](functions-4.md#set_mario_interact_hoot_if_in_range)
- [set_room_override](functions-4.md#set_room_override)
- [set_time_stop_flags](functions-4.md#set_time_stop_flags)
- [set_time_stop_flags_if_alone](functions-4.md#set_time_stop_flags_if_alone)
- [signum_positive](functions-4.md#signum_positive)
@ -1923,6 +1924,7 @@
- [load_area_terrain](functions-5.md#load_area_terrain)
- [load_object_collision_model](functions-5.md#load_object_collision_model)
- [obj_get_surface_from_index](functions-5.md#obj_get_surface_from_index)
- [surface_has_force](functions-5.md#surface_has_force)
<br />

View file

@ -185,6 +185,12 @@ Gfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node) {
return NULL;
}
s16 gRoomOverride = -1;
void set_room_override(s16 room) {
gRoomOverride = room;
}
//! @bug Same issue as geo_switch_anim_state.
#ifdef AVOID_UB
Gfx *geo_switch_area(s32 callContext, struct GraphNode *node, UNUSED void *context) {
@ -198,7 +204,9 @@ Gfx *geo_switch_area(s32 callContext, struct GraphNode *node) {
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
if (callContext == GEO_CONTEXT_RENDER) {
if (gMarioObject == NULL) {
if (gRoomOverride >= 0) {
switchCase->selectedCase = gRoomOverride - 1;
} else if (gMarioObject == NULL) {
switchCase->selectedCase = 0;
} else {
gFindFloorIncludeSurfaceIntangible = TRUE;

View file

@ -27595,6 +27595,24 @@ int smlua_func_set_mario_interact_hoot_if_in_range(lua_State* L) {
return 1;
}
int smlua_func_set_room_override(lua_State* L) {
if (L == NULL) { return 0; }
int top = lua_gettop(L);
if (top != 1) {
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "set_room_override", 1, top);
return 0;
}
s16 room = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_room_override"); return 0; }
extern void set_room_override(s16 room);
set_room_override(room);
return 1;
}
int smlua_func_set_time_stop_flags(lua_State* L) {
if (L == NULL) { return 0; }
@ -34865,6 +34883,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "player_performed_grab_escape_action", smlua_func_player_performed_grab_escape_action);
smlua_bind_function(L, "random_f32_around_zero", smlua_func_random_f32_around_zero);
smlua_bind_function(L, "set_mario_interact_hoot_if_in_range", smlua_func_set_mario_interact_hoot_if_in_range);
smlua_bind_function(L, "set_room_override", smlua_func_set_room_override);
smlua_bind_function(L, "set_time_stop_flags", smlua_func_set_time_stop_flags);
smlua_bind_function(L, "set_time_stop_flags_if_alone", smlua_func_set_time_stop_flags_if_alone);
smlua_bind_function(L, "signum_positive", smlua_func_signum_positive);