diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py index 78bb2c99a..3a7cc9159 100644 --- a/autogen/convert_functions.py +++ b/autogen/convert_functions.py @@ -128,7 +128,7 @@ override_disallowed_functions = { "src/game/camera.h": [ "update_camera", "init_camera", "stub_camera", "^reset_camera", "move_point_along_spline", "romhack_camera_init_settings", "romhack_camera_reset_settings" ], "src/game/behavior_actions.h": [ "bhv_dust_smoke_loop", "bhv_init_room" ], "src/pc/lua/utils/smlua_audio_utils.h": [ "smlua_audio_utils_override", "audio_custom_shutdown", "smlua_audio_custom_deinit", "audio_sample_destroy_pending_copies", "audio_custom_update_volume" ], - "src/pc/djui/djui_hud_utils.h": [ "djui_hud_render_texture", "djui_hud_render_texture_raw", "djui_hud_render_texture_tile", "djui_hud_render_texture_tile_raw" ], + "src/pc/djui/djui_hud_utils.h": [ "djui_hud_render_texture_raw", "djui_hud_render_texture_tile_raw" ], "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" ], "src/pc/lua/utils/smlua_anim_utils.h": [ "smlua_anim_util_reset", "smlua_anim_util_register_animation" ], @@ -212,10 +212,6 @@ manual_index_documentation = """ - [network_send_to](#network_send_to) - [network_send](#network_send) - [get_texture_info](#get_texture_info) - - [djui_hud_render_texture](#djui_hud_render_texture) - - [djui_hud_render_texture_tile](#djui_hud_render_texture_tile) - - [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated) - - [djui_hud_render_texture_tile_interpolated](#djui_hud_render_texture_tile_interpolated) - [texture_override_set](#texture_override_set) - [texture_override_reset](#texture_override_reset) - [smlua_anim_util_register_animation](#smlua_anim_util_register_animation) @@ -372,96 +368,6 @@ Retrieves a texture by name.
-## [djui_hud_render_texture](#djui_hud_render_texture) - -Renders a texture to the screen. - -### Lua Example -`djui_hud_render_texture(texInfo, 0, 0, 1, 1)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH);` - -[:arrow_up_small:](#) - -
- -## [djui_hud_render_texture_tile](#djui_hud_render_texture_tile) - -Renders a tile of a texture to the screen. - -### Lua Example -`djui_hud_render_texture_tile(texInfo, 0, 0, 1, 1, 0, 0, 16, 16)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | -| tileX | `number` | -| tileY | `number` | -| tileW | `number` | -| tileH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture_tile(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` - -[:arrow_up_small:](#) - -
- -## [djui_hud_render_texture_tile_interpolated](#djui_hud_render_texture_tile_interpolated) - -Renders an interpolated tile of a texture to the screen. - -### Lua Example -`djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, 0, 0, 1, 1, 0, 0, 16, 16)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| prevX | `number` | -| prevY | `number` | -| prevScaleW | `number` | -| prevScaleH | `number` | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | -| tileX | `number` | -| tileY | `number` | -| tileW | `number` | -| tileH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture_tile_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` - -[:arrow_up_small:](#) - -
- ## [texture_override_reset](#texture_override_reset) Resets an overridden texture. @@ -870,6 +776,9 @@ def build_param(fid, param, i): ptype = alter_type(param['type']) pid = param['identifier'] + if param.get('texinfo', False): + return ' struct TextureInfo *texInfo = get_texture_info_from_lua(L);\n' + if ptype in VEC_TYPES: if ptype == "Vec3f" and fid in SOUND_FUNCTIONS: return vec3f_sound_before.replace('$[IDENTIFIER]', str(pid)).replace('$[INDEX]', str(i)) @@ -1108,6 +1017,10 @@ def process_function(fname, line, description): param['out'] = True param_str = param_str[len('OUT'):].strip() + if param_str.startswith('TEXINFO '): + param['texinfo'] = True + param_str = param_str[len('TEXINFO'):].strip() + if param_str.endswith('*') or ' ' not in param_str: param['type'] = normalize_type(param_str) param['identifier'] = 'arg%d' % param_index diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index 4dba7ed0f..7b891e8c7 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -4003,6 +4003,62 @@ function djui_hud_print_text_interpolated(message, prevX, prevY, prevScale, x, y -- ... end +--- @param texInfo TextureInfo +--- @param x number +--- @param y number +--- @param scaleW number +--- @param scaleH number +--- Renders a DJUI HUD texture onto the screen +function djui_hud_render_texture(texInfo, x, y, scaleW, scaleH) + -- ... +end + +--- @param texInfo TextureInfo +--- @param x number +--- @param y number +--- @param scaleW number +--- @param scaleH number +--- @param tileX integer +--- @param tileY integer +--- @param tileW integer +--- @param tileH integer +--- Renders a DJUI HUD texture tile onto the screen +function djui_hud_render_texture_tile(texInfo, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH) + -- ... +end + +--- @param texInfo TextureInfo +--- @param prevX number +--- @param prevY number +--- @param prevScaleW number +--- @param prevScaleH number +--- @param x number +--- @param y number +--- @param scaleW number +--- @param scaleH number +--- Renders an interpolated DJUI HUD texture onto the screen +function djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH) + -- ... +end + +--- @param texInfo TextureInfo +--- @param prevX number +--- @param prevY number +--- @param prevScaleW number +--- @param prevScaleH number +--- @param x number +--- @param y number +--- @param scaleW number +--- @param scaleH number +--- @param tileX integer +--- @param tileY integer +--- @param tileW integer +--- @param tileH integer +--- Renders an interpolated DJUI HUD texture tile onto the screen +function djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH) + -- ... +end + --- @param x number --- @param y number --- @param width number diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md index 651ec0b62..1ea37753b 100644 --- a/docs/lua/functions-3.md +++ b/docs/lua/functions-3.md @@ -3346,6 +3346,130 @@ Prints interpolated DJUI HUD text onto the screen
+## [djui_hud_render_texture](#djui_hud_render_texture) + +### Description +Renders a DJUI HUD texture onto the screen + +### Lua Example +`djui_hud_render_texture(texInfo, x, y, scaleW, scaleH)` + +### Parameters +| Field | Type | +| ----- | ---- | +| texInfo | [TextureInfo](structs.md#TextureInfo) | +| x | `number` | +| y | `number` | +| scaleW | `number` | +| scaleH | `number` | + +### Returns +- None + +### C Prototype +`void djui_hud_render_texture(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH);` + +[:arrow_up_small:](#) + +
+ +## [djui_hud_render_texture_tile](#djui_hud_render_texture_tile) + +### Description +Renders a DJUI HUD texture tile onto the screen + +### Lua Example +`djui_hud_render_texture_tile(texInfo, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH)` + +### Parameters +| Field | Type | +| ----- | ---- | +| texInfo | [TextureInfo](structs.md#TextureInfo) | +| x | `number` | +| y | `number` | +| scaleW | `number` | +| scaleH | `number` | +| tileX | `integer` | +| tileY | `integer` | +| tileW | `integer` | +| tileH | `integer` | + +### Returns +- None + +### C Prototype +`void djui_hud_render_texture_tile(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` + +[:arrow_up_small:](#) + +
+ +## [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated) + +### Description +Renders an interpolated DJUI HUD texture onto the screen + +### Lua Example +`djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH)` + +### Parameters +| Field | Type | +| ----- | ---- | +| texInfo | [TextureInfo](structs.md#TextureInfo) | +| prevX | `number` | +| prevY | `number` | +| prevScaleW | `number` | +| prevScaleH | `number` | +| x | `number` | +| y | `number` | +| scaleW | `number` | +| scaleH | `number` | + +### Returns +- None + +### C Prototype +`void djui_hud_render_texture_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH);` + +[:arrow_up_small:](#) + +
+ +## [djui_hud_render_texture_tile_interpolated](#djui_hud_render_texture_tile_interpolated) + +### Description +Renders an interpolated DJUI HUD texture tile onto the screen + +### Lua Example +`djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH)` + +### Parameters +| Field | Type | +| ----- | ---- | +| texInfo | [TextureInfo](structs.md#TextureInfo) | +| prevX | `number` | +| prevY | `number` | +| prevScaleW | `number` | +| prevScaleH | `number` | +| x | `number` | +| y | `number` | +| scaleW | `number` | +| scaleH | `number` | +| tileX | `integer` | +| tileY | `integer` | +| tileW | `integer` | +| tileH | `integer` | + +### Returns +- None + +### C Prototype +`void djui_hud_render_texture_tile_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` + +[:arrow_up_small:](#) + +
+ ## [djui_hud_render_rect](#djui_hud_render_rect) ### Description diff --git a/docs/lua/functions.md b/docs/lua/functions.md index d6f5ac591..327b08d98 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -15,10 +15,6 @@ - [network_send_to](#network_send_to) - [network_send](#network_send) - [get_texture_info](#get_texture_info) - - [djui_hud_render_texture](#djui_hud_render_texture) - - [djui_hud_render_texture_tile](#djui_hud_render_texture_tile) - - [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated) - - [djui_hud_render_texture_tile_interpolated](#djui_hud_render_texture_tile_interpolated) - [texture_override_set](#texture_override_set) - [texture_override_reset](#texture_override_reset) - [smlua_anim_util_register_animation](#smlua_anim_util_register_animation) @@ -785,6 +781,10 @@ - [djui_hud_measure_text](functions-3.md#djui_hud_measure_text) - [djui_hud_print_text](functions-3.md#djui_hud_print_text) - [djui_hud_print_text_interpolated](functions-3.md#djui_hud_print_text_interpolated) + - [djui_hud_render_texture](functions-3.md#djui_hud_render_texture) + - [djui_hud_render_texture_tile](functions-3.md#djui_hud_render_texture_tile) + - [djui_hud_render_texture_interpolated](functions-3.md#djui_hud_render_texture_interpolated) + - [djui_hud_render_texture_tile_interpolated](functions-3.md#djui_hud_render_texture_tile_interpolated) - [djui_hud_render_rect](functions-3.md#djui_hud_render_rect) - [djui_hud_render_rect_interpolated](functions-3.md#djui_hud_render_rect_interpolated) - [get_current_fov](functions-3.md#get_current_fov) @@ -2267,96 +2267,6 @@ Retrieves a texture by name.
-## [djui_hud_render_texture](#djui_hud_render_texture) - -Renders a texture to the screen. - -### Lua Example -`djui_hud_render_texture(texInfo, 0, 0, 1, 1)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH);` - -[:arrow_up_small:](#) - -
- -## [djui_hud_render_texture_tile](#djui_hud_render_texture_tile) - -Renders a tile of a texture to the screen. - -### Lua Example -`djui_hud_render_texture_tile(texInfo, 0, 0, 1, 1, 0, 0, 16, 16)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | -| tileX | `number` | -| tileY | `number` | -| tileW | `number` | -| tileH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture_tile(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` - -[:arrow_up_small:](#) - -
- -## [djui_hud_render_texture_tile_interpolated](#djui_hud_render_texture_tile_interpolated) - -Renders an interpolated tile of a texture to the screen. - -### Lua Example -`djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, 0, 0, 1, 1, 0, 0, 16, 16)` - -### Parameters -| Field | Type | -| ----- | ---- | -| texInfo | [TextureInfo](structs.md#TextureInfo) | -| prevX | `number` | -| prevY | `number` | -| prevScaleW | `number` | -| prevScaleH | `number` | -| x | `number` | -| y | `number` | -| scaleW | `number` | -| scaleH | `number` | -| tileX | `number` | -| tileY | `number` | -| tileW | `number` | -| tileH | `number` | - -### Returns -- None - -### C Prototype -`void djui_hud_render_texture_tile_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH);` - -[:arrow_up_small:](#) - -
- ## [texture_override_reset](#texture_override_reset) Resets an overridden texture. diff --git a/src/pc/djui/djui_hud_utils.c b/src/pc/djui/djui_hud_utils.c index 6500fa269..ae9b8d15f 100644 --- a/src/pc/djui/djui_hud_utils.c +++ b/src/pc/djui/djui_hud_utils.c @@ -512,15 +512,15 @@ void djui_hud_render_texture_tile_raw(const u8* texture, u32 bitSize, u32 width, gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); } -void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH) { +void djui_hud_render_texture(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH) { djui_hud_render_texture_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, x, y, scaleW, scaleH); } -void djui_hud_render_texture_tile(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH) { +void djui_hud_render_texture_tile(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH) { djui_hud_render_texture_tile_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH); } -void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH) { +void djui_hud_render_texture_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH) { Gfx* savedHeadPos = gDisplayListHead; f32 savedZ = gDjuiHudUtilsZ; @@ -544,7 +544,7 @@ void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX interp->rotation = sRotation; } -void djui_hud_render_texture_tile_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH) { +void djui_hud_render_texture_tile_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH) { Gfx* savedHeadPos = gDisplayListHead; f32 savedZ = gDjuiHudUtilsZ; diff --git a/src/pc/djui/djui_hud_utils.h b/src/pc/djui/djui_hud_utils.h index 47bd8ff69..7b36d21b8 100644 --- a/src/pc/djui/djui_hud_utils.h +++ b/src/pc/djui/djui_hud_utils.h @@ -1,6 +1,8 @@ #ifndef DJUI_HUD_UTILS_H #define DJUI_HUD_UTILS_H +#define TEXINFO + enum HudUtilsResolution { RESOLUTION_DJUI, RESOLUTION_N64, @@ -112,15 +114,15 @@ void djui_hud_print_text(const char* message, f32 x, f32 y, f32 scale); /* |description|Prints interpolated DJUI HUD text onto the screen|descriptionEnd| */ void djui_hud_print_text_interpolated(const char* message, f32 prevX, f32 prevY, f32 prevScale, f32 x, f32 y, f32 scale); /* |description|Renders a DJUI HUD texture onto the screen|descriptionEnd| */ -void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH); +void djui_hud_render_texture(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH); void djui_hud_render_texture_raw(const u8* texture, u32 bitSize, u32 width, u32 height, f32 x, f32 y, f32 scaleW, f32 scaleH); /* |description|Renders a DJUI HUD texture tile onto the screen|descriptionEnd| */ -void djui_hud_render_texture_tile(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH); +void djui_hud_render_texture_tile(TEXINFO struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH); void djui_hud_render_texture_tile_raw(const u8* texture, u32 bitSize, u32 width, u32 height, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH); /* |description|Renders an interpolated DJUI HUD texture onto the screen|descriptionEnd| */ -void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH); +void djui_hud_render_texture_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH); /* |description|Renders an interpolated DJUI HUD texture tile onto the screen|descriptionEnd| */ -void djui_hud_render_texture_tile_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH); +void djui_hud_render_texture_tile_interpolated(TEXINFO struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH, u32 tileX, u32 tileY, u32 tileW, u32 tileH); /* |description|Renders a DJUI HUD rect onto the screen|descriptionEnd| */ void djui_hud_render_rect(f32 x, f32 y, f32 width, f32 height); /* |description|Renders an interpolated DJUI HUD rect onto the screen|descriptionEnd| */ diff --git a/src/pc/lua/smlua_functions.c b/src/pc/lua/smlua_functions.c index 134e0de8f..e153c58e5 100644 --- a/src/pc/lua/smlua_functions.c +++ b/src/pc/lua/smlua_functions.c @@ -444,266 +444,14 @@ int smlua_func_get_texture_info(lua_State* L) { return 1; } -int smlua_func_djui_hud_render_texture(lua_State* L) { - if(!smlua_functions_valid_param_count(L, 5)) { return 0; } - - struct TextureInfo tmpTexInfo = { 0 }; - struct TextureInfo* texInfo = &tmpTexInfo; - - if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) { - texInfo = (struct TextureInfo*)smlua_to_cobject(L, 1, LOT_TEXTUREINFO); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1"); return 0; } - } else { - int top = lua_gettop(L); - lua_pushvalue(L, 1); - - lua_pushstring(L, "texture"); - lua_gettable(L, top+1); - tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); - lua_pop(L, 1); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1's 'texture' field"); return 0; } - - tmpTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1's 'bitSize' field"); return 0; } - - tmpTexInfo.width = smlua_get_integer_field(top+1, "width"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1's 'width' field"); return 0; } - - tmpTexInfo.height = smlua_get_integer_field(top+1, "height"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1's 'height' field"); return 0; } - - tmpTexInfo.name = smlua_get_string_field(top+1, "name"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 1's 'name' field"); return 0; } - - lua_settop(L, top); - } - - f32 x = smlua_to_number(L, 2); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 2"); return 0; } - f32 y = smlua_to_number(L, 3); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 3"); return 0; } - f32 scaleW = smlua_to_number(L, 4); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 4"); return 0; } - f32 scaleH = smlua_to_number(L, 5); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture: Failed to convert parameter 5"); return 0; } - - djui_hud_render_texture_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, x, y, scaleW, scaleH); - - return 1; -} - -int smlua_func_djui_hud_render_texture_tile(lua_State* L) { - if(!smlua_functions_valid_param_count(L, 9)) { return 0; } - - struct TextureInfo tmpTexInfo = { 0 }; - struct TextureInfo* texInfo = &tmpTexInfo; - - if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) { - texInfo = (struct TextureInfo*)smlua_to_cobject(L, 1, LOT_TEXTUREINFO); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1"); return 0; } - } else { - int top = lua_gettop(L); - lua_pushvalue(L, 1); - - lua_pushstring(L, "texture"); - lua_gettable(L, top+1); - tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); - lua_pop(L, 1); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1's 'texture' field"); return 0; } - - tmpTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1's 'bitSize' field"); return 0; } - - tmpTexInfo.width = smlua_get_integer_field(top+1, "width"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1's 'width' field"); return 0; } - - tmpTexInfo.height = smlua_get_integer_field(top+1, "height"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1's 'height' field"); return 0; } - - tmpTexInfo.name = smlua_get_string_field(top+1, "name"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 1's 'name' field"); return 0; } - - lua_settop(L, top); - } - - f32 x = smlua_to_number(L, 2); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 2"); return 0; } - f32 y = smlua_to_number(L, 3); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 3"); return 0; } - f32 scaleW = smlua_to_number(L, 4); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 4"); return 0; } - f32 scaleH = smlua_to_number(L, 5); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 5"); return 0; } - f32 tileX = smlua_to_number(L, 6); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 6"); return 0; } - f32 tileY = smlua_to_number(L, 7); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 7"); return 0; } - f32 tileW = smlua_to_number(L, 8); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 8"); return 0; } - f32 tileH = smlua_to_number(L, 9); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile: Failed to convert parameter 9"); return 0; } - - djui_hud_render_texture_tile_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH); - - return 1; -} - -int smlua_func_djui_hud_render_texture_interpolated(lua_State* L) { - if(!smlua_functions_valid_param_count(L, 9)) { return 0; } - - struct TextureInfo tmpTexInfo = { 0 }; - struct TextureInfo* texInfo = &tmpTexInfo; - - if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) { - texInfo = (struct TextureInfo*)smlua_to_cobject(L, 1, LOT_TEXTUREINFO); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1"); return 0; } - } else { - int top = lua_gettop(L); - lua_pushvalue(L, 1); - - lua_pushstring(L, "texture"); - lua_gettable(L, top+1); - tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); - lua_pop(L, 1); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1's 'texture' field"); return 0; } - - tmpTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1's 'bitSize' field"); return 0; } - - tmpTexInfo.width = smlua_get_integer_field(top+1, "width"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1's 'width' field"); return 0; } - - tmpTexInfo.height = smlua_get_integer_field(top+1, "height"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1's 'height' field"); return 0; } - - tmpTexInfo.name = smlua_get_string_field(top+1, "name"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 1's 'name' field"); return 0; } - - lua_settop(L, top); - } - - f32 prevX = smlua_to_number(L, 2); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 2"); return 0; } - f32 prevY = smlua_to_number(L, 3); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 3"); return 0; } - f32 prevScaleW = smlua_to_number(L, 4); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 4"); return 0; } - f32 prevScaleH = smlua_to_number(L, 5); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 5"); return 0; } - f32 x = smlua_to_number(L, 6); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 6"); return 0; } - f32 y = smlua_to_number(L, 7); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 7"); return 0; } - f32 scaleW = smlua_to_number(L, 8); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 8"); return 0; } - f32 scaleH = smlua_to_number(L, 9); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_interpolated: Failed to convert parameter 9"); return 0; } - - djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH); - - return 1; -} - -int smlua_func_djui_hud_render_texture_tile_interpolated(lua_State* L) { - if(!smlua_functions_valid_param_count(L, 13)) { return 0; } - - struct TextureInfo tmpTexInfo = { 0 }; - struct TextureInfo* texInfo = &tmpTexInfo; - - if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) { - texInfo = (struct TextureInfo*)smlua_to_cobject(L, 1, LOT_TEXTUREINFO); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1"); return 0; } - } else { - int top = lua_gettop(L); - lua_pushvalue(L, 1); - - lua_pushstring(L, "texture"); - lua_gettable(L, top+1); - tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); - lua_pop(L, 1); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1's 'texture' field"); return 0; } - - tmpTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1's 'bitSize' field"); return 0; } - - tmpTexInfo.width = smlua_get_integer_field(top+1, "width"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1's 'width' field"); return 0; } - - tmpTexInfo.height = smlua_get_integer_field(top+1, "height"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1's 'height' field"); return 0; } - - tmpTexInfo.name = smlua_get_string_field(top+1, "name"); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 1's 'name' field"); return 0; } - - lua_settop(L, top); - } - - f32 prevX = smlua_to_number(L, 2); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 2"); return 0; } - f32 prevY = smlua_to_number(L, 3); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 3"); return 0; } - f32 prevScaleW = smlua_to_number(L, 4); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 4"); return 0; } - f32 prevScaleH = smlua_to_number(L, 5); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 5"); return 0; } - f32 x = smlua_to_number(L, 6); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 6"); return 0; } - f32 y = smlua_to_number(L, 7); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 7"); return 0; } - f32 scaleW = smlua_to_number(L, 8); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 8"); return 0; } - f32 scaleH = smlua_to_number(L, 9); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 9"); return 0; } - f32 tileX = smlua_to_number(L, 10); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 10"); return 0; } - f32 tileY = smlua_to_number(L, 11); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 11"); return 0; } - f32 tileW = smlua_to_number(L, 12); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 12"); return 0; } - f32 tileH = smlua_to_number(L, 13); - if (!gSmLuaConvertSuccess) { LOG_LUA("djui_hud_render_texture_tile_interpolated: Failed to convert parameter 13"); return 0; } - - djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH); - - return 1; -} - int smlua_func_texture_override_set(lua_State* L) { if (!smlua_functions_valid_param_count(L, 2)) { return 0; } const char* textureName = smlua_to_string(L, 1); if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 1"); return 0; } - struct TextureInfo tmpOverrideTexInfo = { 0 }; - struct TextureInfo* overrideTexInfo = &tmpOverrideTexInfo; - - if (smlua_is_cobject(L, 2, LOT_TEXTUREINFO)) { - overrideTexInfo = (struct TextureInfo*)smlua_to_cobject(L, 2, LOT_TEXTUREINFO); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2"); return 0; } - } else { - int top = lua_gettop(L); - lua_pushvalue(L, 2); - - lua_pushstring(L, "texture"); - lua_gettable(L, top+1); - tmpOverrideTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); - lua_pop(L, 1); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2's 'texture' field"); return 0; } - - tmpOverrideTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize"); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2's 'bitSize' field"); return 0; } - - tmpOverrideTexInfo.width = smlua_get_integer_field(top+1, "width"); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2's 'width' field"); return 0; } - - tmpOverrideTexInfo.height = smlua_get_integer_field(top+1, "height"); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2's 'height' field"); return 0; } - - tmpOverrideTexInfo.name = smlua_get_string_field(top+1, "name"); - if (!gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2's 'name' field"); return 0; } - - lua_settop(L, top); - } + struct TextureInfo *overrideTexInfo = get_texture_info_from_lua(L); + if (!overrideTexInfo || !gSmLuaConvertSuccess) { LOG_LUA("texture_override_set: Failed to convert parameter 2"); return 0; } dynos_texture_override_set(textureName, overrideTexInfo); @@ -1274,10 +1022,6 @@ void smlua_bind_functions(void) { smlua_bind_function(L, "set_exclamation_box_contents", smlua_func_set_exclamation_box_contents); smlua_bind_function(L, "get_exclamation_box_contents", smlua_func_get_exclamation_box_contents); smlua_bind_function(L, "get_texture_info", smlua_func_get_texture_info); - smlua_bind_function(L, "djui_hud_render_texture", smlua_func_djui_hud_render_texture); - smlua_bind_function(L, "djui_hud_render_texture_tile", smlua_func_djui_hud_render_texture_tile); - smlua_bind_function(L, "djui_hud_render_texture_interpolated", smlua_func_djui_hud_render_texture_interpolated); - smlua_bind_function(L, "djui_hud_render_texture_tile_interpolated", smlua_func_djui_hud_render_texture_tile_interpolated); smlua_bind_function(L, "texture_override_set", smlua_func_texture_override_set); smlua_bind_function(L, "texture_override_reset", smlua_func_texture_override_reset); smlua_bind_function(L, "level_script_parse", smlua_func_level_script_parse); diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index d50f037c6..0ed003edf 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -12710,6 +12710,138 @@ int smlua_func_djui_hud_print_text_interpolated(lua_State* L) { return 1; } +int smlua_func_djui_hud_render_texture(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 5) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_hud_render_texture", 5, top); + return 0; + } + + struct TextureInfo *texInfo = get_texture_info_from_lua(L); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "djui_hud_render_texture"); return 0; } + f32 x = smlua_to_number(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "djui_hud_render_texture"); return 0; } + f32 y = smlua_to_number(L, 3); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "djui_hud_render_texture"); return 0; } + f32 scaleW = smlua_to_number(L, 4); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "djui_hud_render_texture"); return 0; } + f32 scaleH = smlua_to_number(L, 5); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "djui_hud_render_texture"); return 0; } + + djui_hud_render_texture(texInfo, x, y, scaleW, scaleH); + + return 1; +} + +int smlua_func_djui_hud_render_texture_tile(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 9) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_hud_render_texture_tile", 9, top); + return 0; + } + + struct TextureInfo *texInfo = get_texture_info_from_lua(L); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "djui_hud_render_texture_tile"); return 0; } + f32 x = smlua_to_number(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "djui_hud_render_texture_tile"); return 0; } + f32 y = smlua_to_number(L, 3); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "djui_hud_render_texture_tile"); return 0; } + f32 scaleW = smlua_to_number(L, 4); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "djui_hud_render_texture_tile"); return 0; } + f32 scaleH = smlua_to_number(L, 5); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "djui_hud_render_texture_tile"); return 0; } + u32 tileX = smlua_to_integer(L, 6); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 6, "djui_hud_render_texture_tile"); return 0; } + u32 tileY = smlua_to_integer(L, 7); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 7, "djui_hud_render_texture_tile"); return 0; } + u32 tileW = smlua_to_integer(L, 8); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 8, "djui_hud_render_texture_tile"); return 0; } + u32 tileH = smlua_to_integer(L, 9); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 9, "djui_hud_render_texture_tile"); return 0; } + + djui_hud_render_texture_tile(texInfo, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH); + + return 1; +} + +int smlua_func_djui_hud_render_texture_interpolated(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 9) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_hud_render_texture_interpolated", 9, top); + return 0; + } + + struct TextureInfo *texInfo = get_texture_info_from_lua(L); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "djui_hud_render_texture_interpolated"); return 0; } + f32 prevX = smlua_to_number(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "djui_hud_render_texture_interpolated"); return 0; } + f32 prevY = smlua_to_number(L, 3); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "djui_hud_render_texture_interpolated"); return 0; } + f32 prevScaleW = smlua_to_number(L, 4); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "djui_hud_render_texture_interpolated"); return 0; } + f32 prevScaleH = smlua_to_number(L, 5); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "djui_hud_render_texture_interpolated"); return 0; } + f32 x = smlua_to_number(L, 6); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 6, "djui_hud_render_texture_interpolated"); return 0; } + f32 y = smlua_to_number(L, 7); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 7, "djui_hud_render_texture_interpolated"); return 0; } + f32 scaleW = smlua_to_number(L, 8); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 8, "djui_hud_render_texture_interpolated"); return 0; } + f32 scaleH = smlua_to_number(L, 9); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 9, "djui_hud_render_texture_interpolated"); return 0; } + + djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH); + + return 1; +} + +int smlua_func_djui_hud_render_texture_tile_interpolated(lua_State* L) { + if (L == NULL) { return 0; } + + int top = lua_gettop(L); + if (top != 13) { + LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_hud_render_texture_tile_interpolated", 13, top); + return 0; + } + + struct TextureInfo *texInfo = get_texture_info_from_lua(L); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 prevX = smlua_to_number(L, 2); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 prevY = smlua_to_number(L, 3); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 prevScaleW = smlua_to_number(L, 4); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 prevScaleH = smlua_to_number(L, 5); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 x = smlua_to_number(L, 6); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 6, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 y = smlua_to_number(L, 7); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 7, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 scaleW = smlua_to_number(L, 8); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 8, "djui_hud_render_texture_tile_interpolated"); return 0; } + f32 scaleH = smlua_to_number(L, 9); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 9, "djui_hud_render_texture_tile_interpolated"); return 0; } + u32 tileX = smlua_to_integer(L, 10); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 10, "djui_hud_render_texture_tile_interpolated"); return 0; } + u32 tileY = smlua_to_integer(L, 11); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 11, "djui_hud_render_texture_tile_interpolated"); return 0; } + u32 tileW = smlua_to_integer(L, 12); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 12, "djui_hud_render_texture_tile_interpolated"); return 0; } + u32 tileH = smlua_to_integer(L, 13); + if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 13, "djui_hud_render_texture_tile_interpolated"); return 0; } + + djui_hud_render_texture_tile_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH, tileX, tileY, tileW, tileH); + + return 1; +} + int smlua_func_djui_hud_render_rect(lua_State* L) { if (L == NULL) { return 0; } @@ -35687,6 +35819,10 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "djui_hud_measure_text", smlua_func_djui_hud_measure_text); smlua_bind_function(L, "djui_hud_print_text", smlua_func_djui_hud_print_text); smlua_bind_function(L, "djui_hud_print_text_interpolated", smlua_func_djui_hud_print_text_interpolated); + smlua_bind_function(L, "djui_hud_render_texture", smlua_func_djui_hud_render_texture); + smlua_bind_function(L, "djui_hud_render_texture_tile", smlua_func_djui_hud_render_texture_tile); + smlua_bind_function(L, "djui_hud_render_texture_interpolated", smlua_func_djui_hud_render_texture_interpolated); + smlua_bind_function(L, "djui_hud_render_texture_tile_interpolated", smlua_func_djui_hud_render_texture_tile_interpolated); smlua_bind_function(L, "djui_hud_render_rect", smlua_func_djui_hud_render_rect); smlua_bind_function(L, "djui_hud_render_rect_interpolated", smlua_func_djui_hud_render_rect_interpolated); smlua_bind_function(L, "get_current_fov", smlua_func_get_current_fov); diff --git a/src/pc/lua/smlua_utils.c b/src/pc/lua/smlua_utils.c index 5c0393ddd..c69503af9 100644 --- a/src/pc/lua/smlua_utils.c +++ b/src/pc/lua/smlua_utils.c @@ -641,6 +641,41 @@ LuaFunction smlua_get_any_function_mod_variable(const char *variable) { /////////////////////////////////////////////////////////////////////////////////////////// +struct TextureInfo *get_texture_info_from_lua(lua_State *L) { + static struct TextureInfo tmpTexInfo = { 0 }; // Static should be okay + struct TextureInfo *texInfo = &tmpTexInfo; + + if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) { + return smlua_to_cobject(L, 1, LOT_TEXTUREINFO); + } else { + int top = lua_gettop(L); + lua_pushvalue(L, 1); + + lua_pushstring(L, "texture"); + lua_gettable(L, top + 1); + tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P); + lua_pop(L, 1); + if (!gSmLuaConvertSuccess) { return NULL; } + + tmpTexInfo.bitSize = smlua_get_integer_field(top + 1, "bitSize"); + if (!gSmLuaConvertSuccess) { return NULL; } + + tmpTexInfo.width = smlua_get_integer_field(top + 1, "width"); + if (!gSmLuaConvertSuccess) { return NULL; } + + tmpTexInfo.height = smlua_get_integer_field(top + 1, "height"); + if (!gSmLuaConvertSuccess) { return NULL; } + + tmpTexInfo.name = smlua_get_string_field(top + 1, "name"); + if (!gSmLuaConvertSuccess) { return NULL; } + + lua_settop(L, top); + } + return texInfo; +} + +/////////////////////////////////////////////////////////////////////////////////////////// + const char* smlua_lnt_to_str(struct LSTNetworkType* lnt) { static char sLntStr[32] = ""; switch (lnt->type) { diff --git a/src/pc/lua/smlua_utils.h b/src/pc/lua/smlua_utils.h index 09b60797f..e0cb2c56c 100644 --- a/src/pc/lua/smlua_utils.h +++ b/src/pc/lua/smlua_utils.h @@ -50,6 +50,8 @@ s64 smlua_get_any_integer_mod_variable(const char* variable); LuaFunction smlua_get_function_mod_variable(u16 modIndex, const char *variable); LuaFunction smlua_get_any_function_mod_variable(const char *variable); +struct TextureInfo *get_texture_info_from_lua(lua_State *L); + void smlua_logline(void); void smlua_dump_stack(void); void smlua_dump_globals(void);