Platform DIsplacement on demand (#739)
Some checks are pending
Build coop / build-ubuntu (push) Waiting to run
Build coop / build-windows (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run

+ two other functions that pipocalio asked for
This commit is contained in:
Cooliokid956 2025-04-11 22:37:57 -05:00 committed by GitHub
parent e6bcf050b3
commit f22855d21e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 177 additions and 1 deletions

View file

@ -58,6 +58,7 @@ in_files = [
"src/game/object_helpers.c", "src/game/object_helpers.c",
"src/game/obj_behaviors.c", "src/game/obj_behaviors.c",
"src/game/obj_behaviors_2.c", "src/game/obj_behaviors_2.c",
"src/game/platform_displacement.h",
"src/game/spawn_sound.h", "src/game/spawn_sound.h",
"src/game/object_list_processor.h", "src/game/object_list_processor.h",
"src/game/behavior_actions.h", "src/game/behavior_actions.h",
@ -80,9 +81,10 @@ override_allowed_functions = {
"src/pc/djui/djui_popup.h": [ "create" ], "src/pc/djui/djui_popup.h": [ "create" ],
"src/pc/djui/djui_language.h": [ "djui_language_get" ], "src/pc/djui/djui_language.h": [ "djui_language_get" ],
"src/pc/djui/djui_panel_menu.h": [ "djui_menu_get_rainbow_string_color" ], "src/pc/djui/djui_panel_menu.h": [ "djui_menu_get_rainbow_string_color" ],
"src/game/save_file.h": [ "save_file_get_", "save_file_set_flags", "save_file_clear_flags", "save_file_reload", "save_file_erase_current_backup_save", "save_file_set_star_flags", "save_file_is_cannon_unlocked", "touch_coin_score_age", "save_file_set_course_coin_score", "save_file_do_save", "save_file_remove_star_flags", "save_file_erase" ], "src/game/save_file.h": [ "get_level_", "save_file_get_", "save_file_set_flags", "save_file_clear_flags", "save_file_reload", "save_file_erase_current_backup_save", "save_file_set_star_flags", "save_file_is_cannon_unlocked", "touch_coin_score_age", "save_file_set_course_coin_score", "save_file_do_save", "save_file_remove_star_flags", "save_file_erase" ],
"src/pc/lua/utils/smlua_model_utils.h": [ "smlua_model_util_get_id" ], "src/pc/lua/utils/smlua_model_utils.h": [ "smlua_model_util_get_id" ],
"src/game/object_list_processor.h": [ "set_object_respawn_info_bits" ], "src/game/object_list_processor.h": [ "set_object_respawn_info_bits" ],
"src/game/platform_displacement.h": [ "apply_platform_displacement" ],
"src/game/mario_misc.h": [ "bhv_toad.*", "bhv_unlock_door.*", "geo_get_.*_state" ], "src/game/mario_misc.h": [ "bhv_toad.*", "bhv_unlock_door.*", "geo_get_.*_state" ],
"src/game/level_update.h": [ "level_trigger_warp", "get_painting_warp_node", "initiate_painting_warp", "warp_special", "lvl_set_current_level", "level_control_timer_running", "fade_into_special_warp", "get_instant_warp" ], "src/game/level_update.h": [ "level_trigger_warp", "get_painting_warp_node", "initiate_painting_warp", "warp_special", "lvl_set_current_level", "level_control_timer_running", "fade_into_special_warp", "get_instant_warp" ],
"src/game/area.h": [ "area_get_warp_node" ], "src/game/area.h": [ "area_get_warp_node" ],

View file

@ -8734,6 +8734,13 @@ function set_object_respawn_info_bits(obj, bits)
-- ... -- ...
end end
--- @param playerIndex integer
--- @param platform Object
--- Apply one frame of platform rotation to Mario (player index) or an object (-1) using the given platform
function apply_platform_displacement(playerIndex, platform)
-- ...
end
--- @param a0 integer --- @param a0 integer
--- @param a1 integer --- @param a1 integer
--- Queues rumble data --- Queues rumble data
@ -8770,6 +8777,20 @@ function reset_rumble_timers_2(m, a0)
-- ... -- ...
end end
--- @param courseNum integer
--- @return integer
--- Gets the course number's corresponding level number
function get_level_num_from_course_num(courseNum)
-- ...
end
--- @param levelNum integer
--- @return integer
--- Gets the level number's corresponding course number
function get_level_course_num(levelNum)
-- ...
end
--- @param fileIndex integer --- @param fileIndex integer
--- @param courseIndex integer --- @param courseIndex integer
--- Marks the coin score for a specific course as the newest among all save files. Adjusts the age of other scores to reflect the update. Useful for leaderboard tracking or displaying recent progress --- Marks the coin score for a specific course as the newest among all save files. Adjusts the age of other scores to reflect the update. Useful for leaderboard tracking or displaying recent progress

View file

@ -5539,6 +5539,36 @@ Runs an OR operator on the `obj`'s respawn info with `bits` << 8. If `bits` is 0
<br /> <br />
---
# functions from platform_displacement.h
<br />
## [apply_platform_displacement](#apply_platform_displacement)
### Description
Apply one frame of platform rotation to Mario (player index) or an object (-1) using the given platform
### Lua Example
`apply_platform_displacement(playerIndex, platform)`
### Parameters
| Field | Type |
| ----- | ---- |
| playerIndex | `integer` |
| platform | [Object](structs.md#Object) |
### Returns
- None
### C Prototype
`void apply_platform_displacement(u32 playerIndex, struct Object *platform);`
[:arrow_up_small:](#)
<br />
--- ---
# functions from rumble_init.h # functions from rumble_init.h
@ -5672,6 +5702,52 @@ Resets rumble timers and sets a field based on `a0`
<br /> <br />
## [get_level_num_from_course_num](#get_level_num_from_course_num)
### Description
Gets the course number's corresponding level number
### Lua Example
`local integerValue = get_level_num_from_course_num(courseNum)`
### Parameters
| Field | Type |
| ----- | ---- |
| courseNum | `integer` |
### Returns
- `integer`
### C Prototype
`s8 get_level_num_from_course_num(s16 courseNum);`
[:arrow_up_small:](#)
<br />
## [get_level_course_num](#get_level_course_num)
### Description
Gets the level number's corresponding course number
### Lua Example
`local integerValue = get_level_course_num(levelNum)`
### Parameters
| Field | Type |
| ----- | ---- |
| levelNum | `integer` |
### Returns
- `integer`
### C Prototype
`s8 get_level_course_num(s16 levelNum);`
[:arrow_up_small:](#)
<br />
## [touch_coin_score_age](#touch_coin_score_age) ## [touch_coin_score_age](#touch_coin_score_age)
### Description ### Description

View file

@ -1608,6 +1608,11 @@
<br /> <br />
- platform_displacement.h
- [apply_platform_displacement](functions-5.md#apply_platform_displacement)
<br />
- rumble_init.h - rumble_init.h
- [queue_rumble_data](functions-5.md#queue_rumble_data) - [queue_rumble_data](functions-5.md#queue_rumble_data)
- [queue_rumble_data_object](functions-5.md#queue_rumble_data_object) - [queue_rumble_data_object](functions-5.md#queue_rumble_data_object)
@ -1618,6 +1623,8 @@
<br /> <br />
- save_file.h - save_file.h
- [get_level_num_from_course_num](functions-5.md#get_level_num_from_course_num)
- [get_level_course_num](functions-5.md#get_level_course_num)
- [touch_coin_score_age](functions-5.md#touch_coin_score_age) - [touch_coin_score_age](functions-5.md#touch_coin_score_age)
- [save_file_do_save](functions-5.md#save_file_do_save) - [save_file_do_save](functions-5.md#save_file_do_save)
- [save_file_erase](functions-5.md#save_file_erase) - [save_file_erase](functions-5.md#save_file_erase)

View file

@ -8,7 +8,10 @@
void update_mario_platform(void); void update_mario_platform(void);
void get_mario_pos(struct MarioState* m, f32 *x, f32 *y, f32 *z); void get_mario_pos(struct MarioState* m, f32 *x, f32 *y, f32 *z);
void set_mario_pos(struct MarioState* m, f32 x, f32 y, f32 z); void set_mario_pos(struct MarioState* m, f32 x, f32 y, f32 z);
/* |description|Apply one frame of platform rotation to Mario (player index) or an object (-1) using the given platform|descriptionEnd| */
void apply_platform_displacement(u32 playerIndex, struct Object *platform); void apply_platform_displacement(u32 playerIndex, struct Object *platform);
void apply_mario_platform_displacement(void); void apply_mario_platform_displacement(void);
#ifndef VERSION_JP #ifndef VERSION_JP
void clear_mario_platform(void); void clear_mario_platform(void);

View file

@ -128,7 +128,10 @@ extern struct WarpCheckpoint gWarpCheckpoint;
extern s8 gMainMenuDataModified; extern s8 gMainMenuDataModified;
extern s8 gSaveFileModified; extern s8 gSaveFileModified;
/* |description|Gets the course number's corresponding level number|descriptionEnd| */
s8 get_level_num_from_course_num(s16 courseNum); s8 get_level_num_from_course_num(s16 courseNum);
/* |description|Gets the level number's corresponding course number|descriptionEnd| */
s8 get_level_course_num(s16 levelNum); s8 get_level_course_num(s16 levelNum);
/* |description| /* |description|

View file

@ -38,6 +38,7 @@
#include "src/pc/lua/utils/smlua_level_utils.h" #include "src/pc/lua/utils/smlua_level_utils.h"
#include "src/pc/lua/utils/smlua_anim_utils.h" #include "src/pc/lua/utils/smlua_anim_utils.h"
#include "src/pc/lua/utils/smlua_deprecated.h" #include "src/pc/lua/utils/smlua_deprecated.h"
#include "src/game/platform_displacement.h"
#include "src/game/spawn_sound.h" #include "src/game/spawn_sound.h"
#include "src/game/object_list_processor.h" #include "src/game/object_list_processor.h"
#include "src/game/behavior_actions.h" #include "src/game/behavior_actions.h"
@ -27518,6 +27519,30 @@ int smlua_func_set_object_respawn_info_bits(lua_State* L) {
return 1; return 1;
} }
/////////////////////////////
// platform_displacement.h //
/////////////////////////////
int smlua_func_apply_platform_displacement(lua_State* L) {
if (L == NULL) { return 0; }
int top = lua_gettop(L);
if (top != 2) {
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "apply_platform_displacement", 2, top);
return 0;
}
u32 playerIndex = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "apply_platform_displacement"); return 0; }
if (lua_isnil(L, 2)) { return 0; }
struct Object* platform = (struct Object*)smlua_to_cobject(L, 2, LOT_OBJECT);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "apply_platform_displacement"); return 0; }
apply_platform_displacement(playerIndex, platform);
return 1;
}
/////////////////// ///////////////////
// rumble_init.h // // rumble_init.h //
/////////////////// ///////////////////
@ -27627,6 +27652,40 @@ int smlua_func_reset_rumble_timers_2(lua_State* L) {
// save_file.h // // save_file.h //
///////////////// /////////////////
int smlua_func_get_level_num_from_course_num(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", "get_level_num_from_course_num", 1, top);
return 0;
}
s16 courseNum = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "get_level_num_from_course_num"); return 0; }
lua_pushinteger(L, get_level_num_from_course_num(courseNum));
return 1;
}
int smlua_func_get_level_course_num(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", "get_level_course_num", 1, top);
return 0;
}
s16 levelNum = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "get_level_course_num"); return 0; }
lua_pushinteger(L, get_level_course_num(levelNum));
return 1;
}
int smlua_func_touch_coin_score_age(lua_State* L) { int smlua_func_touch_coin_score_age(lua_State* L) {
if (L == NULL) { return 0; } if (L == NULL) { return 0; }
@ -35383,6 +35442,9 @@ void smlua_bind_functions_autogen(void) {
// object_list_processor.h // object_list_processor.h
smlua_bind_function(L, "set_object_respawn_info_bits", smlua_func_set_object_respawn_info_bits); smlua_bind_function(L, "set_object_respawn_info_bits", smlua_func_set_object_respawn_info_bits);
// platform_displacement.h
smlua_bind_function(L, "apply_platform_displacement", smlua_func_apply_platform_displacement);
// rumble_init.h // rumble_init.h
smlua_bind_function(L, "queue_rumble_data", smlua_func_queue_rumble_data); smlua_bind_function(L, "queue_rumble_data", smlua_func_queue_rumble_data);
smlua_bind_function(L, "queue_rumble_data_object", smlua_func_queue_rumble_data_object); smlua_bind_function(L, "queue_rumble_data_object", smlua_func_queue_rumble_data_object);
@ -35391,6 +35453,8 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "reset_rumble_timers_2", smlua_func_reset_rumble_timers_2); smlua_bind_function(L, "reset_rumble_timers_2", smlua_func_reset_rumble_timers_2);
// save_file.h // save_file.h
smlua_bind_function(L, "get_level_num_from_course_num", smlua_func_get_level_num_from_course_num);
smlua_bind_function(L, "get_level_course_num", smlua_func_get_level_course_num);
smlua_bind_function(L, "touch_coin_score_age", smlua_func_touch_coin_score_age); smlua_bind_function(L, "touch_coin_score_age", smlua_func_touch_coin_score_age);
smlua_bind_function(L, "save_file_do_save", smlua_func_save_file_do_save); smlua_bind_function(L, "save_file_do_save", smlua_func_save_file_do_save);
smlua_bind_function(L, "save_file_erase", smlua_func_save_file_erase); smlua_bind_function(L, "save_file_erase", smlua_func_save_file_erase);