mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-04-06 18:26:28 +00:00
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:
parent
bea8a3f9e9
commit
fa2ec0957b
7 changed files with 1962 additions and 1 deletions
|
|
@ -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)
|
||||
-- ...
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
1887
docs/lua/functions-6.md
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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 />
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue