From a4a6c349b4ed69ccbbd30616d4f254c813c9410e Mon Sep 17 00:00:00 2001 From: JugadorXEI Date: Sat, 26 Oct 2024 17:59:05 +0200 Subject: [PATCH] Expose K_KartGetItemResult to Lua --- src/k_roulette.c | 14 +++----------- src/k_roulette.h | 18 ++++++++++++++++++ src/lua_baselib.c | 15 +++++++++++++++ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/k_roulette.c b/src/k_roulette.c index 9604347e0..b1d69c796 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -1845,19 +1845,11 @@ fixed_t K_GetSlotOffset(itemroulette_t *const roulette, fixed_t renderDelta, UIN } /*-------------------------------------------------- - static void K_KartGetItemResult(player_t *const player, kartitems_t getitem) + void K_KartGetItemResult(player_t *const player, kartitems_t getitem) - Initializes a player's item to what was - received from the roulette. - - Input Arguments:- - player - The player receiving the item. - getitem - The item to give to the player. - - Return:- - N/A + See header file for description. --------------------------------------------------*/ -static void K_KartGetItemResult(player_t *const player, kartitems_t getitem) +void K_KartGetItemResult(player_t *const player, kartitems_t getitem) { if (K_ItemSingularity(getitem) == true) { diff --git a/src/k_roulette.h b/src/k_roulette.h index fba9ef9f6..22c1bf273 100644 --- a/src/k_roulette.h +++ b/src/k_roulette.h @@ -260,6 +260,24 @@ fixed_t K_GetSlotOffset(itemroulette_t *const roulette, fixed_t renderDelta, UIN void K_KartItemRoulette(player_t *const player, ticcmd_t *cmd); +/*-------------------------------------------------- + void K_CreateAndShuffleItemReel(player_t *const player, itemroulette_t *const roulette, const boolean freeplay); + + Adds items to the item reel based on the RNG seed, + item odds or whether it's free play or not. + + Input Arguments:- + player - The player to add items to their reel to. + roulette - The player's roulette. + freeplay - Whether we should create the free play + roulette instead or not. + + Return:- + N/A +--------------------------------------------------*/ + +void K_KartGetItemResult(player_t *const player, kartitems_t getitem); + UINT32 K_GetItemRouletteDistance(const player_t *player, UINT8 numPlayers); #ifdef __cplusplus diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 0d8d4d404..8ec941871 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -4305,6 +4305,20 @@ static int lib_kStopRoulette(lua_State *L) return 0; } +static int lib_kKartGetItemResult(lua_State *L) +{ + player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); + kartitems_t item = luaL_checkinteger(L, 2); + + NOHUD + INLEVEL + if (!player) + return LUA_ErrInvalid(L, "player_t"); + + K_KartGetItemResult(player, item); + return 0; +} + static int lib_getTimeMicros(lua_State *L) { lua_pushinteger(L, I_GetPreciseTime() / (I_GetPrecisePrecision() / 1000000)); @@ -4606,6 +4620,7 @@ static luaL_Reg lib[] = { {"K_StartItemRoulette", lib_kStartItemRoulette}, {"K_StartEggmanRoulette", lib_kStartEggmanRoulette}, {"K_StopRoulette", lib_kStopRoulette}, + {"K_KartGetItemResult", lib_kKartGetItemResult}, // hu_stuff technically? {"HU_DoTitlecardCEcho", lib_startTitlecardCecho},