mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
added HOOK_ON_INTERACTIONS
this is called after mario's interactions are processed
This commit is contained in:
parent
2526109484
commit
9a13c298ad
10 changed files with 58 additions and 47 deletions
|
|
@ -9187,7 +9187,10 @@ HOOK_ON_GEO_PROCESS_CHILDREN = 50
|
||||||
HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS = 51
|
HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS = 51
|
||||||
|
|
||||||
--- @type LuaHookedEventType
|
--- @type LuaHookedEventType
|
||||||
HOOK_MAX = 52
|
HOOK_ON_INTERACTIONS = 52
|
||||||
|
|
||||||
|
--- @type LuaHookedEventType
|
||||||
|
HOOK_MAX = 53
|
||||||
|
|
||||||
--- @class LuaModMenuElementType
|
--- @class LuaModMenuElementType
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4214,11 +4214,6 @@ function set_first_person_enabled(enable)
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @param state integer
|
|
||||||
function set_dialog_box_state(state)
|
|
||||||
-- ...
|
|
||||||
end
|
|
||||||
|
|
||||||
--- @param dialog integer
|
--- @param dialog integer
|
||||||
function create_dialog_box(dialog)
|
function create_dialog_box(dialog)
|
||||||
-- ...
|
-- ...
|
||||||
|
|
@ -4252,6 +4247,11 @@ function reset_dialog_render_state()
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param state integer
|
||||||
|
function set_dialog_box_state(state)
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @param bgR integer
|
--- @param bgR integer
|
||||||
--- @param bgG integer
|
--- @param bgG integer
|
||||||
--- @param bgB integer
|
--- @param bgB integer
|
||||||
|
|
|
||||||
|
|
@ -3349,7 +3349,8 @@
|
||||||
| HOOK_BEFORE_GEO_PROCESS | 49 |
|
| HOOK_BEFORE_GEO_PROCESS | 49 |
|
||||||
| HOOK_ON_GEO_PROCESS_CHILDREN | 50 |
|
| HOOK_ON_GEO_PROCESS_CHILDREN | 50 |
|
||||||
| HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS | 51 |
|
| HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS | 51 |
|
||||||
| HOOK_MAX | 52 |
|
| HOOK_ON_INTERACTIONS | 52 |
|
||||||
|
| HOOK_MAX | 53 |
|
||||||
|
|
||||||
### [enum LuaModMenuElementType](#LuaModMenuElementType)
|
### [enum LuaModMenuElementType](#LuaModMenuElementType)
|
||||||
| Identifier | Value |
|
| Identifier | Value |
|
||||||
|
|
|
||||||
|
|
@ -4356,26 +4356,6 @@ Sets if first person is enabled
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
|
||||||
## [set_dialog_box_state](#set_dialog_box_state)
|
|
||||||
|
|
||||||
### Lua Example
|
|
||||||
`set_dialog_box_state(state)`
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
| Field | Type |
|
|
||||||
| ----- | ---- |
|
|
||||||
| state | `integer` |
|
|
||||||
|
|
||||||
### Returns
|
|
||||||
- None
|
|
||||||
|
|
||||||
### C Prototype
|
|
||||||
`void set_dialog_box_state(u8 state);`
|
|
||||||
|
|
||||||
[:arrow_up_small:](#)
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
## [create_dialog_box](#create_dialog_box)
|
## [create_dialog_box](#create_dialog_box)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
@ -4511,6 +4491,26 @@ Sets if first person is enabled
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
## [set_dialog_box_state](#set_dialog_box_state)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`set_dialog_box_state(state)`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
| Field | Type |
|
||||||
|
| ----- | ---- |
|
||||||
|
| state | `integer` |
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- None
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`void set_dialog_box_state(u8 state);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## [set_dialog_override_color](#set_dialog_override_color)
|
## [set_dialog_override_color](#set_dialog_override_color)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
|
||||||
|
|
@ -842,7 +842,6 @@
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
- ingame_menu.h
|
- ingame_menu.h
|
||||||
- [set_dialog_box_state](functions-3.md#set_dialog_box_state)
|
|
||||||
- [create_dialog_box](functions-3.md#create_dialog_box)
|
- [create_dialog_box](functions-3.md#create_dialog_box)
|
||||||
- [create_dialog_box_with_response](functions-3.md#create_dialog_box_with_response)
|
- [create_dialog_box_with_response](functions-3.md#create_dialog_box_with_response)
|
||||||
- [create_dialog_box_with_var](functions-3.md#create_dialog_box_with_var)
|
- [create_dialog_box_with_var](functions-3.md#create_dialog_box_with_var)
|
||||||
|
|
@ -850,6 +849,7 @@
|
||||||
- [reset_dialog_override_color](functions-3.md#reset_dialog_override_color)
|
- [reset_dialog_override_color](functions-3.md#reset_dialog_override_color)
|
||||||
- [reset_dialog_override_pos](functions-3.md#reset_dialog_override_pos)
|
- [reset_dialog_override_pos](functions-3.md#reset_dialog_override_pos)
|
||||||
- [reset_dialog_render_state](functions-3.md#reset_dialog_render_state)
|
- [reset_dialog_render_state](functions-3.md#reset_dialog_render_state)
|
||||||
|
- [set_dialog_box_state](functions-3.md#set_dialog_box_state)
|
||||||
- [set_dialog_override_color](functions-3.md#set_dialog_override_color)
|
- [set_dialog_override_color](functions-3.md#set_dialog_override_color)
|
||||||
- [set_dialog_override_pos](functions-3.md#set_dialog_override_pos)
|
- [set_dialog_override_pos](functions-3.md#set_dialog_override_pos)
|
||||||
- [set_menu_mode](functions-3.md#set_menu_mode)
|
- [set_menu_mode](functions-3.md#set_menu_mode)
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,7 @@ The lua functions sent to `hook_event()` will be automatically called by SM64 wh
|
||||||
| HOOK_ON_GEO_PROCESS | Called when a GeoLayout is processed **Note:** You must set the `hookProcess` field of the graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
| HOOK_ON_GEO_PROCESS | Called when a GeoLayout is processed **Note:** You must set the `hookProcess` field of the graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
||||||
| HOOK_BEFORE_GEO_PROCESS | Called before a GeoLayout is processed **Note:** You must set the `hookProcess` field of the graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
| HOOK_BEFORE_GEO_PROCESS | Called before a GeoLayout is processed **Note:** You must set the `hookProcess` field of the graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
||||||
| HOOK_ON_GEO_PROCESS_CHILDREN | Called when the children of a GeoLayout node is processed **Note:** You must set the `hookProcess` field of the parent graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
| HOOK_ON_GEO_PROCESS_CHILDREN | Called when the children of a GeoLayout node is processed **Note:** You must set the `hookProcess` field of the parent graph node to a non-zero value | [GraphNode](../structs.md#GraphNode) graphNode, `integer` matStackIndex |
|
||||||
|
| HOOK_ON_INTERACTIONS | Called when the Mario interactions are processed | [MarioState](../structs.md#MarioState) mario |
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2349,6 +2349,8 @@ void mario_process_interactions(struct MarioState *m) {
|
||||||
m->invincTimer -= 1;
|
m->invincTimer -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
smlua_call_event_hooks_mario_param(HOOK_ON_INTERACTIONS, m);
|
||||||
|
|
||||||
//! If the kick/punch flags are set and an object collision changes Mario's
|
//! If the kick/punch flags are set and an object collision changes Mario's
|
||||||
// action, he will get the kick/punch wall speed anyway.
|
// action, he will get the kick/punch wall speed anyway.
|
||||||
check_kick_or_punch_wall(m);
|
check_kick_or_punch_wall(m);
|
||||||
|
|
|
||||||
|
|
@ -3211,7 +3211,8 @@ char gSmluaConstants[] = ""
|
||||||
"HOOK_BEFORE_GEO_PROCESS = 49\n"
|
"HOOK_BEFORE_GEO_PROCESS = 49\n"
|
||||||
"HOOK_ON_GEO_PROCESS_CHILDREN = 50\n"
|
"HOOK_ON_GEO_PROCESS_CHILDREN = 50\n"
|
||||||
"HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS = 51\n"
|
"HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS = 51\n"
|
||||||
"HOOK_MAX = 52\n"
|
"HOOK_ON_INTERACTIONS = 52\n"
|
||||||
|
"HOOK_MAX = 53\n"
|
||||||
"ACTION_HOOK_EVERY_FRAME = 0\n"
|
"ACTION_HOOK_EVERY_FRAME = 0\n"
|
||||||
"ACTION_HOOK_GRAVITY = 1\n"
|
"ACTION_HOOK_GRAVITY = 1\n"
|
||||||
"ACTION_HOOK_MAX = 2\n"
|
"ACTION_HOOK_MAX = 2\n"
|
||||||
|
|
|
||||||
|
|
@ -13388,23 +13388,6 @@ int smlua_func_set_first_person_enabled(lua_State* L) {
|
||||||
// ingame_menu.h //
|
// ingame_menu.h //
|
||||||
///////////////////
|
///////////////////
|
||||||
|
|
||||||
int smlua_func_set_dialog_box_state(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_dialog_box_state", 1, top);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 state = smlua_to_integer(L, 1);
|
|
||||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_dialog_box_state"); return 0; }
|
|
||||||
|
|
||||||
set_dialog_box_state(state);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int smlua_func_create_dialog_box(lua_State* L) {
|
int smlua_func_create_dialog_box(lua_State* L) {
|
||||||
if (L == NULL) { return 0; }
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
|
@ -13520,6 +13503,23 @@ int smlua_func_reset_dialog_render_state(UNUSED lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int smlua_func_set_dialog_box_state(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_dialog_box_state", 1, top);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 state = smlua_to_integer(L, 1);
|
||||||
|
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_dialog_box_state"); return 0; }
|
||||||
|
|
||||||
|
set_dialog_box_state(state);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int smlua_func_set_dialog_override_color(lua_State* L) {
|
int smlua_func_set_dialog_override_color(lua_State* L) {
|
||||||
if (L == NULL) { return 0; }
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
|
@ -32822,7 +32822,6 @@ void smlua_bind_functions_autogen(void) {
|
||||||
smlua_bind_function(L, "set_first_person_enabled", smlua_func_set_first_person_enabled);
|
smlua_bind_function(L, "set_first_person_enabled", smlua_func_set_first_person_enabled);
|
||||||
|
|
||||||
// ingame_menu.h
|
// ingame_menu.h
|
||||||
smlua_bind_function(L, "set_dialog_box_state", smlua_func_set_dialog_box_state);
|
|
||||||
smlua_bind_function(L, "create_dialog_box", smlua_func_create_dialog_box);
|
smlua_bind_function(L, "create_dialog_box", smlua_func_create_dialog_box);
|
||||||
smlua_bind_function(L, "create_dialog_box_with_response", smlua_func_create_dialog_box_with_response);
|
smlua_bind_function(L, "create_dialog_box_with_response", smlua_func_create_dialog_box_with_response);
|
||||||
smlua_bind_function(L, "create_dialog_box_with_var", smlua_func_create_dialog_box_with_var);
|
smlua_bind_function(L, "create_dialog_box_with_var", smlua_func_create_dialog_box_with_var);
|
||||||
|
|
@ -32830,6 +32829,7 @@ void smlua_bind_functions_autogen(void) {
|
||||||
smlua_bind_function(L, "reset_dialog_override_color", smlua_func_reset_dialog_override_color);
|
smlua_bind_function(L, "reset_dialog_override_color", smlua_func_reset_dialog_override_color);
|
||||||
smlua_bind_function(L, "reset_dialog_override_pos", smlua_func_reset_dialog_override_pos);
|
smlua_bind_function(L, "reset_dialog_override_pos", smlua_func_reset_dialog_override_pos);
|
||||||
smlua_bind_function(L, "reset_dialog_render_state", smlua_func_reset_dialog_render_state);
|
smlua_bind_function(L, "reset_dialog_render_state", smlua_func_reset_dialog_render_state);
|
||||||
|
smlua_bind_function(L, "set_dialog_box_state", smlua_func_set_dialog_box_state);
|
||||||
smlua_bind_function(L, "set_dialog_override_color", smlua_func_set_dialog_override_color);
|
smlua_bind_function(L, "set_dialog_override_color", smlua_func_set_dialog_override_color);
|
||||||
smlua_bind_function(L, "set_dialog_override_pos", smlua_func_set_dialog_override_pos);
|
smlua_bind_function(L, "set_dialog_override_pos", smlua_func_set_dialog_override_pos);
|
||||||
smlua_bind_function(L, "set_menu_mode", smlua_func_set_menu_mode);
|
smlua_bind_function(L, "set_menu_mode", smlua_func_set_menu_mode);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
// forward declare
|
// forward declare
|
||||||
struct Camera;
|
struct Camera;
|
||||||
|
|
||||||
|
// ! Hooks must be added at the end
|
||||||
enum LuaHookedEventType {
|
enum LuaHookedEventType {
|
||||||
HOOK_UPDATE,
|
HOOK_UPDATE,
|
||||||
HOOK_MARIO_UPDATE,
|
HOOK_MARIO_UPDATE,
|
||||||
|
|
@ -63,6 +64,7 @@ enum LuaHookedEventType {
|
||||||
HOOK_BEFORE_GEO_PROCESS,
|
HOOK_BEFORE_GEO_PROCESS,
|
||||||
HOOK_ON_GEO_PROCESS_CHILDREN,
|
HOOK_ON_GEO_PROCESS_CHILDREN,
|
||||||
HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS,
|
HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS,
|
||||||
|
HOOK_ON_INTERACTIONS,
|
||||||
HOOK_MAX,
|
HOOK_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -119,6 +121,7 @@ static const char* LuaHookedEventTypeName[] = {
|
||||||
"HOOK_BEFORE_GEO_PROCESS",
|
"HOOK_BEFORE_GEO_PROCESS",
|
||||||
"HOOK_ON_GEO_PROCESS_CHILDREN",
|
"HOOK_ON_GEO_PROCESS_CHILDREN",
|
||||||
"HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS",
|
"HOOK_MARIO_OVERRIDE_GEOMETRY_INPUTS",
|
||||||
|
"HOOK_ON_INTERACTIONS",
|
||||||
"HOOK_MAX"
|
"HOOK_MAX"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue