mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Platform DIsplacement on demand (#739)
+ two other functions that pipocalio asked for
This commit is contained in:
parent
e6bcf050b3
commit
f22855d21e
7 changed files with 177 additions and 1 deletions
|
|
@ -58,6 +58,7 @@ in_files = [
|
|||
"src/game/object_helpers.c",
|
||||
"src/game/obj_behaviors.c",
|
||||
"src/game/obj_behaviors_2.c",
|
||||
"src/game/platform_displacement.h",
|
||||
"src/game/spawn_sound.h",
|
||||
"src/game/object_list_processor.h",
|
||||
"src/game/behavior_actions.h",
|
||||
|
|
@ -80,9 +81,10 @@ override_allowed_functions = {
|
|||
"src/pc/djui/djui_popup.h": [ "create" ],
|
||||
"src/pc/djui/djui_language.h": [ "djui_language_get" ],
|
||||
"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/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/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" ],
|
||||
|
|
|
|||
|
|
@ -8734,6 +8734,13 @@ function set_object_respawn_info_bits(obj, bits)
|
|||
-- ...
|
||||
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 a1 integer
|
||||
--- Queues rumble data
|
||||
|
|
@ -8770,6 +8777,20 @@ function reset_rumble_timers_2(m, a0)
|
|||
-- ...
|
||||
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 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
|
||||
|
|
|
|||
|
|
@ -5539,6 +5539,36 @@ Runs an OR operator on the `obj`'s respawn info with `bits` << 8. If `bits` is 0
|
|||
|
||||
<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
|
||||
|
||||
|
|
@ -5672,6 +5702,52 @@ Resets rumble timers and sets a field based on `a0`
|
|||
<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)
|
||||
|
||||
### Description
|
||||
|
|
|
|||
|
|
@ -1608,6 +1608,11 @@
|
|||
|
||||
<br />
|
||||
|
||||
- platform_displacement.h
|
||||
- [apply_platform_displacement](functions-5.md#apply_platform_displacement)
|
||||
|
||||
<br />
|
||||
|
||||
- rumble_init.h
|
||||
- [queue_rumble_data](functions-5.md#queue_rumble_data)
|
||||
- [queue_rumble_data_object](functions-5.md#queue_rumble_data_object)
|
||||
|
|
@ -1618,6 +1623,8 @@
|
|||
<br />
|
||||
|
||||
- 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)
|
||||
- [save_file_do_save](functions-5.md#save_file_do_save)
|
||||
- [save_file_erase](functions-5.md#save_file_erase)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@
|
|||
void update_mario_platform(void);
|
||||
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);
|
||||
|
||||
/* |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_mario_platform_displacement(void);
|
||||
#ifndef VERSION_JP
|
||||
void clear_mario_platform(void);
|
||||
|
|
|
|||
|
|
@ -128,7 +128,10 @@ extern struct WarpCheckpoint gWarpCheckpoint;
|
|||
extern s8 gMainMenuDataModified;
|
||||
extern s8 gSaveFileModified;
|
||||
|
||||
/* |description|Gets the course number's corresponding level number|descriptionEnd| */
|
||||
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);
|
||||
|
||||
/* |description|
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "src/pc/lua/utils/smlua_level_utils.h"
|
||||
#include "src/pc/lua/utils/smlua_anim_utils.h"
|
||||
#include "src/pc/lua/utils/smlua_deprecated.h"
|
||||
#include "src/game/platform_displacement.h"
|
||||
#include "src/game/spawn_sound.h"
|
||||
#include "src/game/object_list_processor.h"
|
||||
#include "src/game/behavior_actions.h"
|
||||
|
|
@ -27518,6 +27519,30 @@ int smlua_func_set_object_respawn_info_bits(lua_State* L) {
|
|||
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 //
|
||||
///////////////////
|
||||
|
|
@ -27627,6 +27652,40 @@ int smlua_func_reset_rumble_timers_2(lua_State* L) {
|
|||
// 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) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
|
@ -35383,6 +35442,9 @@ void smlua_bind_functions_autogen(void) {
|
|||
// object_list_processor.h
|
||||
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
|
||||
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);
|
||||
|
|
@ -35391,6 +35453,8 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "reset_rumble_timers_2", smlua_func_reset_rumble_timers_2);
|
||||
|
||||
// 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, "save_file_do_save", smlua_func_save_file_do_save);
|
||||
smlua_bind_function(L, "save_file_erase", smlua_func_save_file_erase);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue