diff --git a/autogen/convert_constants.py b/autogen/convert_constants.py index 11b4aacb0..7f6681284 100644 --- a/autogen/convert_constants.py +++ b/autogen/convert_constants.py @@ -45,7 +45,8 @@ in_files = [ "src/pc/mods/mod_storage.h", "src/game/first_person_cam.h", "src/pc/djui/djui_console.h", - "src/game/player_palette.h" + "src/game/player_palette.h", + "src/pc/network/lag_compensation.h" ] exclude_constants = { diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py index 5e321d6b8..dd4ed5cbf 100644 --- a/autogen/convert_functions.py +++ b/autogen/convert_functions.py @@ -121,7 +121,7 @@ override_disallowed_functions = { "src/pc/lua/utils/smlua_level_utils.h": [ "smlua_level_util_reset" ], "src/pc/lua/utils/smlua_text_utils.h": [ "smlua_text_utils_init", "smlua_text_utils_shutdown", "smlua_text_utils_reset_all" ], "src/pc/lua/utils/smlua_anim_utils.h": [ "smlua_anim_util_reset", "smlua_anim_util_register_animation" ], - "src/pc/network/lag_compensation.h": [ "lag_compensation_clear", "lag_compensation_store" ], + "src/pc/network/lag_compensation.h": [ "lag_compensation_clear" ], "src/game/first_person_cam.h": [ "first_person_update" ], "src/pc/lua/utils/smlua_collision_utils.h": [ "collision_find_surface_on_ray" ], "src/engine/behavior_script.h": [ "stub_behavior_script_2", "cur_obj_update" ] diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 8252aad22..923dd8df6 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -3817,6 +3817,9 @@ INTERACT_IGLOO_BARRIER = (1 << 30) --- @type InteractionType INTERACT_PLAYER = (1 << 31) +--- @type integer +MAX_LOCAL_STATE_HISTORY = 30 + --- @type integer WARP_CHECKPOINT = 0x80 diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index ab9ecac75..27c0253f5 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -3850,6 +3850,20 @@ function lag_compensation_get_local_state(otherNp) -- ... end +--- @return integer +function lag_compensation_get_local_state_index() + -- ... +end + +--- @return boolean +function lag_compensation_get_local_state_ready() + -- ... +end + +function lag_compensation_store() + -- ... +end + --- @param courseNum integer --- @param levelNum integer --- @param areaIndex integer diff --git a/docs/lua/constants.md b/docs/lua/constants.md index 73d016e68..9d6a058df 100644 --- a/docs/lua/constants.md +++ b/docs/lua/constants.md @@ -27,6 +27,7 @@ - [interaction.h](#interactionh) - [enum InteractionFlag](#enum-InteractionFlag) - [enum InteractionType](#enum-InteractionType) +- [lag_compensation.h](#lag_compensationh) - [level_commands.h](#level_commandsh) - [level_defines.h](#level_definesh) - [enum LevelNum](#enum-LevelNum) @@ -1355,6 +1356,13 @@
+## [lag_compensation.h](#lag_compensation.h) +- MAX_LOCAL_STATE_HISTORY + +[:arrow_up_small:](#) + +
+ ## [level_commands.h](#level_commands.h) - WARP_CHECKPOINT - WARP_NO_CHECKPOINT diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md index 5f35b6140..6212573b7 100644 --- a/docs/lua/functions-3.md +++ b/docs/lua/functions-3.md @@ -4757,6 +4757,60 @@
+## [lag_compensation_get_local_state_index](#lag_compensation_get_local_state_index) + +### Lua Example +`local integerValue = lag_compensation_get_local_state_index()` + +### Parameters +- None + +### Returns +- `integer` + +### C Prototype +`u32 lag_compensation_get_local_state_index(void);` + +[:arrow_up_small:](#) + +
+ +## [lag_compensation_get_local_state_ready](#lag_compensation_get_local_state_ready) + +### Lua Example +`local booleanValue = lag_compensation_get_local_state_ready()` + +### Parameters +- None + +### Returns +- `boolean` + +### C Prototype +`bool lag_compensation_get_local_state_ready(void);` + +[:arrow_up_small:](#) + +
+ +## [lag_compensation_store](#lag_compensation_store) + +### Lua Example +`lag_compensation_store()` + +### Parameters +- None + +### Returns +- None + +### C Prototype +`void lag_compensation_store(void);` + +[:arrow_up_small:](#) + +
+ --- # functions from level_info.h diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 065afaa74..2591dc0a7 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -900,6 +900,9 @@ - lag_compensation.h - [lag_compensation_get_local_state](functions-3.md#lag_compensation_get_local_state) + - [lag_compensation_get_local_state_index](functions-3.md#lag_compensation_get_local_state_index) + - [lag_compensation_get_local_state_ready](functions-3.md#lag_compensation_get_local_state_ready) + - [lag_compensation_store](functions-3.md#lag_compensation_store)
diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index 6711a35c9..d29db2d41 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -1465,6 +1465,7 @@ char gSmluaConstants[] = "" "INT_STATUS_HIT_MINE = (1 << 21)\n" "INT_STATUS_STOP_RIDING = (1 << 22)\n" "INT_STATUS_TOUCHED_BOB_OMB = (1 << 23)\n" +"MAX_LOCAL_STATE_HISTORY = 30\n" "WARP_CHECKPOINT = 0x80\n" "WARP_NO_CHECKPOINT = 0x00\n" "LEVEL_NONE = 0\n" diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index 8ee2d90ff..2b28692e3 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -14642,6 +14642,51 @@ int smlua_func_lag_compensation_get_local_state(lua_State* L) { return 1; } +int smlua_func_lag_compensation_get_local_state_index(UNUSED lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 0) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "lag_compensation_get_local_state_index", 0, top); + return 0; + } + + + lua_pushinteger(L, lag_compensation_get_local_state_index()); + + return 1; +} + +int smlua_func_lag_compensation_get_local_state_ready(UNUSED lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 0) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "lag_compensation_get_local_state_ready", 0, top); + return 0; + } + + + lua_pushboolean(L, lag_compensation_get_local_state_ready()); + + return 1; +} + +int smlua_func_lag_compensation_store(UNUSED lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 0) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "lag_compensation_store", 0, top); + return 0; + } + + + lag_compensation_store(); + + return 1; +} + ////////////////// // level_info.h // ////////////////// @@ -34254,6 +34299,9 @@ void smlua_bind_functions_autogen(void) { // lag_compensation.h smlua_bind_function(L, "lag_compensation_get_local_state", smlua_func_lag_compensation_get_local_state); + smlua_bind_function(L, "lag_compensation_get_local_state_index", smlua_func_lag_compensation_get_local_state_index); + smlua_bind_function(L, "lag_compensation_get_local_state_ready", smlua_func_lag_compensation_get_local_state_ready); + smlua_bind_function(L, "lag_compensation_store", smlua_func_lag_compensation_store); // level_info.h smlua_bind_function(L, "get_level_name", smlua_func_get_level_name); diff --git a/src/pc/network/lag_compensation.c b/src/pc/network/lag_compensation.c index f0e5246fd..5a44274c4 100644 --- a/src/pc/network/lag_compensation.c +++ b/src/pc/network/lag_compensation.c @@ -6,7 +6,6 @@ #include "behavior_table.h" #include "model_ids.h" -#define MAX_LOCAL_STATE_HISTORY 30 struct StateHistory { struct MarioState m; struct Object marioObj; @@ -57,3 +56,11 @@ struct MarioState* lag_compensation_get_local_state(struct NetworkPlayer* otherN return &sLocalStateHistory[index].m; } + +bool lag_compensation_get_local_state_ready(void) { + return sLocalStateHistoryReady; +} + +u32 lag_compensation_get_local_state_index(void) { + return sLocalStateHistoryIndex; +} diff --git a/src/pc/network/lag_compensation.h b/src/pc/network/lag_compensation.h index 427ed1123..44ae27d14 100644 --- a/src/pc/network/lag_compensation.h +++ b/src/pc/network/lag_compensation.h @@ -1,8 +1,12 @@ #ifndef NETWORK_LAG_COMPENSATION_H #define NETWORK_LAG_COMPENSATION_H +#define MAX_LOCAL_STATE_HISTORY 30 + void lag_compensation_clear(void); void lag_compensation_store(void); struct MarioState* lag_compensation_get_local_state(struct NetworkPlayer* otherNp); +bool lag_compensation_get_local_state_ready(void); +u32 lag_compensation_get_local_state_index(void); #endif \ No newline at end of file