Move everything over (#280)

This commit is contained in:
Agent X 2023-03-20 22:36:25 -04:00 committed by GitHub
parent 7f6f7fea47
commit 751dfe61c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 465 additions and 47 deletions

View file

@ -39,6 +39,7 @@ in_files = [
"include/surface_terrains.h",
"src/game/level_update.h",
"src/pc/network/version.h",
"include/geo_commands.h",
"include/level_commands.h",
"src/audio/external.h"
]
@ -49,6 +50,7 @@ exclude_constants = {
}
include_constants = {
'include/geo_commands.h': ['BACKGROUND'],
'include/level_commands.h': [ "WARP_CHECKPOINT", "WARP_NO_CHECKPOINT" ],
'src/audio/external.h': [ "SEQ_PLAYER" ]
}

View file

@ -3272,6 +3272,39 @@ SEQ_PLAYER_LEVEL = 0
--- @type integer
SEQ_PLAYER_SFX = 2
--- @type integer
BACKGROUND_ABOVE_CLOUDS = 8
--- @type integer
BACKGROUND_BELOW_CLOUDS = 3
--- @type integer
BACKGROUND_CUSTOM = 10
--- @type integer
BACKGROUND_DESERT = 5
--- @type integer
BACKGROUND_FLAMING_SKY = 1
--- @type integer
BACKGROUND_GREEN_SKY = 7
--- @type integer
BACKGROUND_HAUNTED = 6
--- @type integer
BACKGROUND_OCEAN_SKY = 0
--- @type integer
BACKGROUND_PURPLE_SKY = 9
--- @type integer
BACKGROUND_SNOW_MOUNTAINS = 4
--- @type integer
BACKGROUND_UNDERWATER_CITY = 2
--- @type integer
GEO_CONTEXT_AREA_INIT = 4

View file

@ -3643,6 +3643,11 @@ function djui_hud_get_screen_width()
-- ...
end
--- @return boolean
function djui_hud_is_pause_menu_created()
-- ...
end
--- @param message string
--- @return number
function djui_hud_measure_text(message)
@ -3701,6 +3706,12 @@ function djui_hud_set_mouse_locked(locked)
-- ...
end
--- @param enable boolean
--- @return nil
function djui_hud_set_render_behind_hud(enable)
-- ...
end
--- @param resolutionType HudUtilsResolution
--- @return nil
function djui_hud_set_resolution(resolutionType)
@ -8317,11 +8328,22 @@ function get_last_star_or_key()
-- ...
end
--- @param index integer
--- @return number
function get_lighting_dir(index)
-- ...
end
--- @return integer
function get_network_area_timer()
-- ...
end
--- @return integer
function get_skybox()
-- ...
end
--- @param initialValue integer
--- @return Pointer_integer
function get_temp_s32_pointer(initialValue)
@ -8424,6 +8446,13 @@ function set_last_star_or_key(value)
-- ...
end
--- @param index integer
--- @param value number
--- @return nil
function set_lighting_dir(index, value)
-- ...
end
--- @param far number
--- @return nil
function set_override_far(far)
@ -8442,6 +8471,12 @@ function set_override_near(near)
-- ...
end
--- @param background integer
--- @return nil
function set_override_skybox(background)
-- ...
end
--- @param speed integer
--- @return nil
function set_ttc_speed_setting(speed)

View file

@ -15,6 +15,7 @@
- [enum DjuiFontType](#enum-DjuiFontType)
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
- [external.h](#externalh)
- [geo_commands.h](#geo_commandsh)
- [graph_node.h](#graph_nodeh)
- [interaction.c](#interactionc)
- [enum InteractionFlag](#enum-InteractionFlag)
@ -1109,6 +1110,23 @@
<br />
## [geo_commands.h](#geo_commands.h)
- BACKGROUND_ABOVE_CLOUDS
- BACKGROUND_BELOW_CLOUDS
- BACKGROUND_CUSTOM
- BACKGROUND_DESERT
- BACKGROUND_FLAMING_SKY
- BACKGROUND_GREEN_SKY
- BACKGROUND_HAUNTED
- BACKGROUND_OCEAN_SKY
- BACKGROUND_PURPLE_SKY
- BACKGROUND_SNOW_MOUNTAINS
- BACKGROUND_UNDERWATER_CITY
[:arrow_up_small:](#)
<br />
## [graph_node.h](#graph_node.h)
- GEO_CONTEXT_AREA_INIT
- GEO_CONTEXT_AREA_LOAD

View file

@ -2143,6 +2143,24 @@
<br />
## [djui_hud_is_pause_menu_created](#djui_hud_is_pause_menu_created)
### Lua Example
`local booleanValue = djui_hud_is_pause_menu_created()`
### Parameters
- None
### Returns
- `boolean`
### C Prototype
`bool djui_hud_is_pause_menu_created(void);`
[:arrow_up_small:](#)
<br />
## [djui_hud_measure_text](#djui_hud_measure_text)
### Lua Example
@ -2299,6 +2317,26 @@
<br />
## [djui_hud_set_render_behind_hud](#djui_hud_set_render_behind_hud)
### Lua Example
`djui_hud_set_render_behind_hud(enable)`
### Parameters
| Field | Type |
| ----- | ---- |
| enable | `boolean` |
### Returns
- None
### C Prototype
`void djui_hud_set_render_behind_hud(bool enable);`
[:arrow_up_small:](#)
<br />
## [djui_hud_set_resolution](#djui_hud_set_resolution)
### Lua Example

View file

@ -8297,6 +8297,26 @@
<br />
## [get_lighting_dir](#get_lighting_dir)
### Lua Example
`local numberValue = get_lighting_dir(index)`
### Parameters
| Field | Type |
| ----- | ---- |
| index | `integer` |
### Returns
- `number`
### C Prototype
`f32 get_lighting_dir(u8 index);`
[:arrow_up_small:](#)
<br />
## [get_network_area_timer](#get_network_area_timer)
### Lua Example
@ -8315,6 +8335,24 @@
<br />
## [get_skybox](#get_skybox)
### Lua Example
`local integerValue = get_skybox()`
### Parameters
- None
### Returns
- `integer`
### C Prototype
`s8 get_skybox();`
[:arrow_up_small:](#)
<br />
## [get_temp_s32_pointer](#get_temp_s32_pointer)
### Lua Example
@ -8634,6 +8672,27 @@
<br />
## [set_lighting_dir](#set_lighting_dir)
### Lua Example
`set_lighting_dir(index, value)`
### Parameters
| Field | Type |
| ----- | ---- |
| index | `integer` |
| value | `number` |
### Returns
- None
### C Prototype
`void set_lighting_dir(u8 index, f32 value);`
[:arrow_up_small:](#)
<br />
## [set_override_far](#set_override_far)
### Lua Example
@ -8694,6 +8753,26 @@
<br />
## [set_override_skybox](#set_override_skybox)
### Lua Example
`set_override_skybox(background)`
### Parameters
| Field | Type |
| ----- | ---- |
| background | `integer` |
### Returns
- None
### C Prototype
`void set_override_skybox(s8 background);`
[:arrow_up_small:](#)
<br />
## [set_ttc_speed_setting](#set_ttc_speed_setting)
### Lua Example

View file

@ -721,6 +721,7 @@
- [djui_hud_get_raw_mouse_y](functions-3.md#djui_hud_get_raw_mouse_y)
- [djui_hud_get_screen_height](functions-3.md#djui_hud_get_screen_height)
- [djui_hud_get_screen_width](functions-3.md#djui_hud_get_screen_width)
- [djui_hud_is_pause_menu_created](functions-3.md#djui_hud_is_pause_menu_created)
- [djui_hud_measure_text](functions-3.md#djui_hud_measure_text)
- [djui_hud_print_text](functions-3.md#djui_hud_print_text)
- [djui_hud_render_rect](functions-3.md#djui_hud_render_rect)
@ -728,6 +729,7 @@
- [djui_hud_set_color](functions-3.md#djui_hud_set_color)
- [djui_hud_set_font](functions-3.md#djui_hud_set_font)
- [djui_hud_set_mouse_locked](functions-3.md#djui_hud_set_mouse_locked)
- [djui_hud_set_render_behind_hud](functions-3.md#djui_hud_set_render_behind_hud)
- [djui_hud_set_resolution](functions-3.md#djui_hud_set_resolution)
- [djui_hud_world_pos_to_screen_pos](functions-3.md#djui_hud_world_pos_to_screen_pos)
@ -1544,7 +1546,9 @@
- [get_hand_foot_pos_y](functions-4.md#get_hand_foot_pos_y)
- [get_hand_foot_pos_z](functions-4.md#get_hand_foot_pos_z)
- [get_last_star_or_key](functions-4.md#get_last_star_or_key)
- [get_lighting_dir](functions-4.md#get_lighting_dir)
- [get_network_area_timer](functions-4.md#get_network_area_timer)
- [get_skybox](functions-4.md#get_skybox)
- [get_temp_s32_pointer](functions-4.md#get_temp_s32_pointer)
- [get_time](functions-4.md#get_time)
- [get_ttc_speed_setting](functions-4.md#get_ttc_speed_setting)
@ -1561,9 +1565,11 @@
- [save_file_set_using_backup_slot](functions-4.md#save_file_set_using_backup_slot)
- [set_environment_region](functions-4.md#set_environment_region)
- [set_last_star_or_key](functions-4.md#set_last_star_or_key)
- [set_lighting_dir](functions-4.md#set_lighting_dir)
- [set_override_far](functions-4.md#set_override_far)
- [set_override_fov](functions-4.md#set_override_fov)
- [set_override_near](functions-4.md#set_override_near)
- [set_override_skybox](functions-4.md#set_override_skybox)
- [set_ttc_speed_setting](functions-4.md#set_ttc_speed_setting)
<br />

View file

@ -25,6 +25,7 @@
#include "game/ingame_menu.h"
#include "pc/network/network.h"
#include "pc/lua/smlua_hooks.h"
#include "pc/djui/djui.h"
struct SpawnInfo gPlayerSpawnInfos[MAX_PLAYERS];
struct GraphNode *D_8033A160[MAX_LOADED_GRAPH_NODES];
@ -419,6 +420,9 @@ void render_game(void) {
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,
SCREEN_HEIGHT - BORDER_HEIGHT);
if (gDjuiRenderBehindHud && !gDjuiPanelPauseCreated) {
djui_render();
}
render_hud();
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);

View file

@ -256,8 +256,10 @@ void end_master_display_list(void) {
draw_profiler();
}
extern void djui_render(void);
djui_render();
if (!gDjuiRenderBehindHud || gDjuiPanelPauseCreated) {
extern void djui_render(void);
djui_render();
}
gDPFullSync(gDisplayListHead++);
gSPEndDisplayList(gDisplayListHead++);

View file

@ -3063,62 +3063,69 @@ s16 render_pause_courses_and_castle(void) {
}
break;
case DIALOG_STATE_VERTICAL:
shade_screen();
render_pause_my_score_coins();
render_pause_red_coins();
if (!gDjuiPanelPauseCreated) {
shade_screen();
render_pause_my_score_coins();
render_pause_red_coins();
/* Always allow exiting from course */
if (gLevelValues.pauseExitAnywhere || (gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT)) {
render_pause_course_options(99, 93, &gDialogLineNum, 15);
}
#ifdef VERSION_EU
if (gPlayer1Controller->buttonPressed & (A_BUTTON | Z_TRIG | START_BUTTON))
#else
if (gPlayer1Controller->buttonPressed & A_BUTTON
|| gPlayer1Controller->buttonPressed & START_BUTTON)
#endif
{
level_set_transition(0, NULL);
play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);
gDialogBoxState = DIALOG_STATE_OPENING;
gMenuMode = -1;
if (gDialogLineNum == 2 || gDialogLineNum == 3) {
num = gDialogLineNum;
} else {
num = 1;
/* Always allow exiting from course */
if (gLevelValues.pauseExitAnywhere || (gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT)) {
render_pause_course_options(99, 93, &gDialogLineNum, 15);
}
return num;
#ifdef VERSION_EU
if (gPlayer1Controller->buttonPressed & (A_BUTTON | Z_TRIG | START_BUTTON))
#else
if (gPlayer1Controller->buttonPressed & A_BUTTON
|| gPlayer1Controller->buttonPressed & START_BUTTON)
#endif
{
level_set_transition(0, NULL);
play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);
gDialogBoxState = DIALOG_STATE_OPENING;
gMenuMode = -1;
if (gDialogLineNum == 2 || gDialogLineNum == 3) {
num = gDialogLineNum;
} else {
num = 1;
}
return num;
}
}
break;
case DIALOG_STATE_HORIZONTAL:
shade_screen();
print_hud_pause_colorful_str();
if (gLevelValues.extendedPauseDisplay) {
render_pause_castle_menu_box_extended(160, 143);
render_pause_castle_main_strings_extended(84, 60);
} else {
if (!gDjuiPanelPauseCreated) {
shade_screen();
print_hud_pause_colorful_str();
render_pause_castle_menu_box(160, 143);
render_pause_castle_main_strings(104, 60);
}
if (gLevelValues.extendedPauseDisplay) {
render_pause_castle_menu_box_extended(160, 143);
render_pause_castle_main_strings_extended(84, 60);
} else {
render_pause_castle_menu_box(160, 143);
render_pause_castle_main_strings(104, 60);
}
#ifdef VERSION_EU
if (gPlayer1Controller->buttonPressed & (A_BUTTON | Z_TRIG | START_BUTTON))
if (gPlayer1Controller->buttonPressed & (A_BUTTON | Z_TRIG | START_BUTTON))
#else
if (gPlayer1Controller->buttonPressed & A_BUTTON
|| gPlayer1Controller->buttonPressed & START_BUTTON)
if (gPlayer1Controller->buttonPressed & A_BUTTON
|| gPlayer1Controller->buttonPressed & START_BUTTON)
#endif
{
level_set_transition(0, NULL);
play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);
gMenuMode = -1;
gDialogBoxState = DIALOG_STATE_OPENING;
{
level_set_transition(0, NULL);
play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);
gMenuMode = -1;
gDialogBoxState = DIALOG_STATE_OPENING;
return 1;
}
break;
return 1;
}
}
break;
}
if (gDialogTextAlpha < 250) {

View file

@ -14,6 +14,7 @@
#include "pc/lua/smlua_hooks.h"
#include "pc/utils/misc.h"
#include "pc/debuglog.h"
#include "game/skybox.h"
#include "include/course_table.h"
/**
@ -825,6 +826,7 @@ static void geo_process_background(struct GraphNodeBackground *node) {
gDPPipeSync(gfx++);
gDPSetCycleType(gfx++, G_CYC_1CYCLE);
gSPEndDisplayList(gfx++);
gReadOnlyBackground = -1;
geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(gfxStart), 0);
}

View file

@ -64,6 +64,9 @@ typedef const Texture *const SkyboxTexture[80];
extern u8 gRenderingInterpolated;
s8 gReadOnlyBackground;
s8 gOverrideBackground = -1;
extern SkyboxTexture bbh_skybox_ptrlist;
extern SkyboxTexture bidw_skybox_ptrlist;
extern SkyboxTexture bitfs_skybox_ptrlist;
@ -330,6 +333,9 @@ Gfx *init_skybox_display_list(s8 player, s8 background, s8 colorIndex) {
Gfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,
f32 posX, f32 posY, f32 posZ,
f32 focX, f32 focY, f32 focZ) {
gReadOnlyBackground = background;
background = gOverrideBackground == -1 ? background : gOverrideBackground;
f32 cameraFaceX = focX - posX;
f32 cameraFaceY = focY - posY;
f32 cameraFaceZ = focZ - posZ;

View file

@ -4,6 +4,9 @@
#include <PR/ultratypes.h>
#include <PR/gbi.h>
extern s8 gReadOnlyBackground;
extern s8 gOverrideBackground;
extern Texture* gCustomSkyboxPtrList[];
Gfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,

View file

@ -16,6 +16,7 @@ static struct DjuiText* sDjuiLuaError = NULL;
static u32 sDjuiLuaErrorTimeout = 0;
bool gDjuiInMainMenu = true;
bool gDjuiDisabled = false;
bool gDjuiRenderBehindHud = false;
bool sDjuiRendered60fps = false;
@ -24,6 +25,8 @@ void patch_djui_before(void) {
}
void patch_djui_interpolated(UNUSED f32 delta) {
if (gDjuiRenderBehindHud && !gDjuiPanelPauseCreated) { return; }
// reset the head and re-render DJUI
if (delta >= 0.5f && !sDjuiRendered60fps && (gDjuiInMainMenu || gDjuiPanelPauseCreated)) {
sDjuiRendered60fps = true;
@ -92,6 +95,7 @@ void djui_render(void) {
djui_popup_update();
djui_base_set_visible(&sDjuiPauseOptions->base, (sCurrPlayMode == PLAY_MODE_PAUSED));
djui_base_set_visible(&sDjuiPauseOptions->base, (sCurrPlayMode == PLAY_MODE_PAUSED) && !gDjuiPanelPauseCreated);
if (gDjuiRoot != NULL) {
djui_base_render(&gDjuiRoot->base);
}

View file

@ -64,6 +64,7 @@
extern struct DjuiRoot* gDjuiRoot;
extern bool gDjuiInMainMenu;
extern bool gDjuiDisabled;
extern bool gDjuiRenderBehindHud;
void djui_init(void);
void djui_connect_menu_open(void);

View file

@ -415,4 +415,12 @@ void djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out) {
out[0] += djui_hud_get_screen_width() / 2.0f;
out[1] += djui_hud_get_screen_height() / 2.0f;
}
}
void djui_hud_set_render_behind_hud(bool enable) {
gDjuiRenderBehindHud = enable;
}
bool djui_hud_is_pause_menu_created(void) {
return gDjuiPanelPauseCreated;
}

View file

@ -61,4 +61,8 @@ void djui_hud_render_rect_interpolated(f32 prevX, f32 prevY, f32 prevWidth, f32
void djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out);
void djui_hud_set_render_behind_hud(bool enable);
bool djui_hud_is_pause_menu_created(void);
#endif

View file

@ -48,7 +48,7 @@ void djui_panel_pause_create(struct DjuiBase* caller) {
djui_base_set_size(&rect1->base, 1.0f, 64);
djui_base_set_color(&rect1->base, 0, 0, 0, 0);
{
struct DjuiButton* button4 = djui_button_create(&rect1->base, "Dynos Packs");
struct DjuiButton* button4 = djui_button_create(&rect1->base, "DynOS Packs");
djui_base_set_size_type(&button4->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
djui_base_set_size(&button4->base, 0.5f, 64);
djui_base_set_alignment(&button4->base, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP);

View file

@ -177,6 +177,8 @@ static f32 sDepthZAdd = 0;
static f32 sDepthZMult = 1;
static f32 sDepthZSub = 0;
Vec3f gLightingDir;
// 4x4 pink-black checkerboard texture to indicate missing textures
#define MISSING_W 4
#define MISSING_H 4
@ -709,6 +711,11 @@ static void calculate_normal_dir(const Light_t *light, float coeffs[3]) {
light->dir[1] / 127.0f,
light->dir[2] / 127.0f
};
light_dir[0] += gLightingDir[0];
light_dir[1] += gLightingDir[1];
light_dir[2] += gLightingDir[2];
gfx_transposed_matrix_mul(coeffs, light_dir, rsp.modelview_matrix_stack[rsp.modelview_matrix_stack_size - 1]);
gfx_normalize_vector(coeffs);
}

View file

@ -1,6 +1,8 @@
#ifndef GFX_PC_H
#define GFX_PC_H
#include "types.h"
struct GfxRenderingAPI;
struct GfxWindowManagerAPI;
@ -11,6 +13,8 @@ struct GfxDimensions {
extern struct GfxDimensions gfx_current_dimensions;
extern Vec3f gLightingDir;
#ifdef __cplusplus
extern "C" {
#endif

View file

@ -1308,6 +1308,17 @@ char gSmluaConstants[] = ""
"SEQ_PLAYER_LEVEL = 0\n"
"SEQ_PLAYER_ENV = 1\n"
"SEQ_PLAYER_SFX = 2\n"
"BACKGROUND_OCEAN_SKY = 0\n"
"BACKGROUND_FLAMING_SKY = 1\n"
"BACKGROUND_UNDERWATER_CITY = 2\n"
"BACKGROUND_BELOW_CLOUDS = 3\n"
"BACKGROUND_SNOW_MOUNTAINS = 4\n"
"BACKGROUND_DESERT = 5\n"
"BACKGROUND_HAUNTED = 6\n"
"BACKGROUND_GREEN_SKY = 7\n"
"BACKGROUND_ABOVE_CLOUDS = 8\n"
"BACKGROUND_PURPLE_SKY = 9\n"
"BACKGROUND_CUSTOM = 10\n"
"GRAPH_RENDER_ACTIVE = (1 << 0)\n"
"GRAPH_RENDER_CHILDREN_FIRST = (1 << 1)\n"
"GRAPH_RENDER_BILLBOARD = (1 << 2)\n"

View file

@ -11569,6 +11569,21 @@ int smlua_func_djui_hud_get_screen_width(UNUSED lua_State* L) {
return 1;
}
int smlua_func_djui_hud_is_pause_menu_created(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", "djui_hud_is_pause_menu_created", 0, top);
return 0;
}
lua_pushboolean(L, djui_hud_is_pause_menu_created());
return 1;
}
int smlua_func_djui_hud_measure_text(lua_State* L) {
if (L == NULL) { return 0; }
@ -11720,6 +11735,23 @@ int smlua_func_djui_hud_set_mouse_locked(lua_State* L) {
return 1;
}
int smlua_func_djui_hud_set_render_behind_hud(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", "djui_hud_set_render_behind_hud", 1, top);
return 0;
}
bool enable = smlua_to_boolean(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "djui_hud_set_render_behind_hud"); return 0; }
djui_hud_set_render_behind_hud(enable);
return 1;
}
int smlua_func_djui_hud_set_resolution(lua_State* L) {
if (L == NULL) { return 0; }
@ -27129,6 +27161,23 @@ int smlua_func_get_last_star_or_key(UNUSED lua_State* L) {
return 1;
}
int smlua_func_get_lighting_dir(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_lighting_dir", 1, top);
return 0;
}
u8 index = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "get_lighting_dir"); return 0; }
lua_pushnumber(L, get_lighting_dir(index));
return 1;
}
int smlua_func_get_network_area_timer(UNUSED lua_State* L) {
if (L == NULL) { return 0; }
@ -27144,6 +27193,21 @@ int smlua_func_get_network_area_timer(UNUSED lua_State* L) {
return 1;
}
int smlua_func_get_skybox(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", "get_skybox", 0, top);
return 0;
}
lua_pushinteger(L, get_skybox());
return 1;
}
int smlua_func_get_temp_s32_pointer(lua_State* L) {
if (L == NULL) { return 0; }
@ -27428,6 +27492,25 @@ int smlua_func_set_last_star_or_key(lua_State* L) {
return 1;
}
int smlua_func_set_lighting_dir(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", "set_lighting_dir", 2, top);
return 0;
}
u8 index = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_lighting_dir"); return 0; }
f32 value = smlua_to_number(L, 2);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "set_lighting_dir"); return 0; }
set_lighting_dir(index, value);
return 1;
}
int smlua_func_set_override_far(lua_State* L) {
if (L == NULL) { return 0; }
@ -27479,6 +27562,23 @@ int smlua_func_set_override_near(lua_State* L) {
return 1;
}
int smlua_func_set_override_skybox(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", "set_override_skybox", 1, top);
return 0;
}
s8 background = smlua_to_integer(L, 1);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_override_skybox"); return 0; }
set_override_skybox(background);
return 1;
}
int smlua_func_set_ttc_speed_setting(lua_State* L) {
if (L == NULL) { return 0; }
@ -29668,6 +29768,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "djui_hud_get_raw_mouse_y", smlua_func_djui_hud_get_raw_mouse_y);
smlua_bind_function(L, "djui_hud_get_screen_height", smlua_func_djui_hud_get_screen_height);
smlua_bind_function(L, "djui_hud_get_screen_width", smlua_func_djui_hud_get_screen_width);
smlua_bind_function(L, "djui_hud_is_pause_menu_created", smlua_func_djui_hud_is_pause_menu_created);
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_render_rect", smlua_func_djui_hud_render_rect);
@ -29675,6 +29776,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "djui_hud_set_color", smlua_func_djui_hud_set_color);
smlua_bind_function(L, "djui_hud_set_font", smlua_func_djui_hud_set_font);
smlua_bind_function(L, "djui_hud_set_mouse_locked", smlua_func_djui_hud_set_mouse_locked);
smlua_bind_function(L, "djui_hud_set_render_behind_hud", smlua_func_djui_hud_set_render_behind_hud);
smlua_bind_function(L, "djui_hud_set_resolution", smlua_func_djui_hud_set_resolution);
smlua_bind_function(L, "djui_hud_world_pos_to_screen_pos", smlua_func_djui_hud_world_pos_to_screen_pos);
@ -30439,7 +30541,9 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "get_hand_foot_pos_y", smlua_func_get_hand_foot_pos_y);
smlua_bind_function(L, "get_hand_foot_pos_z", smlua_func_get_hand_foot_pos_z);
smlua_bind_function(L, "get_last_star_or_key", smlua_func_get_last_star_or_key);
smlua_bind_function(L, "get_lighting_dir", smlua_func_get_lighting_dir);
smlua_bind_function(L, "get_network_area_timer", smlua_func_get_network_area_timer);
smlua_bind_function(L, "get_skybox", smlua_func_get_skybox);
smlua_bind_function(L, "get_temp_s32_pointer", smlua_func_get_temp_s32_pointer);
smlua_bind_function(L, "get_time", smlua_func_get_time);
smlua_bind_function(L, "get_ttc_speed_setting", smlua_func_get_ttc_speed_setting);
@ -30456,9 +30560,11 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "save_file_set_using_backup_slot", smlua_func_save_file_set_using_backup_slot);
smlua_bind_function(L, "set_environment_region", smlua_func_set_environment_region);
smlua_bind_function(L, "set_last_star_or_key", smlua_func_set_last_star_or_key);
smlua_bind_function(L, "set_lighting_dir", smlua_func_set_lighting_dir);
smlua_bind_function(L, "set_override_far", smlua_func_set_override_far);
smlua_bind_function(L, "set_override_fov", smlua_func_set_override_fov);
smlua_bind_function(L, "set_override_near", smlua_func_set_override_near);
smlua_bind_function(L, "set_override_skybox", smlua_func_set_override_skybox);
smlua_bind_function(L, "set_ttc_speed_setting", smlua_func_set_ttc_speed_setting);
// smlua_model_utils.h

View file

@ -17,6 +17,8 @@
#include "game/rendering_graph_node.h"
#include "game/level_update.h"
#include "pc/djui/djui_hud_utils.h"
#include "game/skybox.h"
#include "pc/gfx/gfx_pc.h"
#include "include/course_table.h"
u32 get_network_area_timer(void) {
@ -383,6 +385,29 @@ void add_scroll_target(u32 index, const char* name, u32 offset, u32 size) {
///
f32 get_lighting_dir(u8 index) {
if (index > 2) { return 0; }
return gLightingDir[index];
}
void set_lighting_dir(u8 index, f32 value) {
if (index > 2) { return; }
gLightingDir[index] = value;
}
///
s8 get_skybox() {
return gReadOnlyBackground;
}
void set_override_skybox(s8 background) {
gOverrideBackground = background;
}
///
bool course_is_main_course(u16 levelNum) {
return COURSE_IS_MAIN_COURSE(levelNum);
}

View file

@ -92,6 +92,12 @@ void set_override_far(f32 far);
void add_scroll_target(u32 index, const char* name, u32 offset, u32 size);
f32 get_lighting_dir(u8 index);
void set_lighting_dir(u8 index, f32 value);
s8 get_skybox();
void set_override_skybox(s8 background);
void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue);
bool course_is_main_course(u16 levelNum);

View file

@ -20,6 +20,8 @@
#include "pc/crash_handler.h"
#include "pc/debuglog.h"
#include "game/camera.h"
#include "pc/gfx/gfx_pc.h"
#include "game/skybox.h"
#include "game/object_list_processor.h"
#include "game/object_helpers.h"
#include "menu/intro_geo.h"
@ -509,6 +511,11 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup) {
gOverrideNear = 0;
gOverrideFar = 0;
gOverrideFOV = 0;
gLightingDir[0] = 0;
gLightingDir[1] = 0;
gLightingDir[2] = 0;
gOverrideBackground = -1;
gDjuiRenderBehindHud = false;
dynos_mod_shutdown();
mods_clear(&gActiveMods);
mods_clear(&gRemoteMods);