diff --git a/docs/game_data/spel2.lua b/docs/game_data/spel2.lua index 69fb710f0..4cfe36cf0 100644 --- a/docs/game_data/spel2.lua +++ b/docs/game_data/spel2.lua @@ -2105,16 +2105,16 @@ do ---@field layer_transition_timer integer ---@field transition_to_layer integer ---@field screen_character_select ScreenCharacterSelect - ---@field screen_team_select ScreenTeamSelect + ---@field screen_team_select ScreenTeamSelect @For the arena ---@field screen_camp ScreenStateCamp ---@field screen_level ScreenStateLevel ---@field screen_transition ScreenTransition ---@field screen_death ScreenDeath ---@field screen_win ScreenWin - ---@field screen_credits ScreenCredits - ---@field screen_scores ScreenScores + ---@field screen_credits ScreenCredits @The spaceship minigame + ---@field screen_scores ScreenScores @Landing on the moon after win ---@field screen_constellation ScreenConstellation - ---@field screen_recap ScreenRecap + ---@field screen_recap ScreenRecap @Journal after CO win ---@field screen_arena_stages_select ScreenArenaStagesSelect ---@field screen_arena_intro ScreenArenaIntro ---@field screen_arena_level ScreenArenaLevel @@ -2256,11 +2256,14 @@ do ---@field screen_title ScreenTitle ---@field screen_menu ScreenMenu ---@field screen_options ScreenOptions - ---@field screen_player_profile ScreenPlayerProfile - ---@field screen_leaderboards ScreenLeaderboards - ---@field screen_seed_input ScreenSeedInput + ---@field screen_player_profile Screen @It just opens journal + ---@field screen_leaderboards Screen @All handled by the Online + ---@field screen_seed_input ScreenCodeInput ---@field screen_camp ScreenCamp ---@field screen_level ScreenLevel + ---@field screen_transition Screen + ---@field screen_arena_level Screen + ---@field screen_arena_score Screen ---@field screen_online_loading ScreenOnlineLoading ---@field screen_online_lobby ScreenOnlineLobby ---@field pause_ui PauseUI @@ -2283,10 +2286,6 @@ do ---@field timer integer ---@field slide_position number ----@class InputDevice - ---@field input_index integer - ---@field buttons integer - ---@class GameProps ---@field input integer[] @size: MAX_PLAYERS @Used for player input and might be used for some menu inputs not found in buttons_menu. You can probably capture and edit this in ON.POST_PROCESS_INPUT. These are raw inputs, without things like autorun applied. ---@field input_previous integer[] @size: MAX_PLAYERS @@ -5523,6 +5522,35 @@ function Quad:is_point_inside(p, epsilon) end ---@return boolean function Quad:is_point_inside(x, y, epsilon) end +---@class MenuScreenPanels + ---@field woodpanels_velocity number + ---@field woodpanels_progress number + ---@field scroll_unfurl_progress number + ---@field bottom_woodpanel_speed_multiplayer number + ---@field bottom_woodpanel_y_offset number + ---@field bottom_woodpanel TextureRenderingInfo + ---@field top_woodpanel TextureRenderingInfo + ---@field scroll TextureRenderingInfo + ---@field top_woodpanel_left_scrollhandle TextureRenderingInfo + ---@field top_woodpanel_right_scrollhandle TextureRenderingInfo + ---@field scroll_text STRINGID + ---@field bottom_left_text STRINGID + ---@field bottom_right_text STRINGID + ---@field bottom_middle_text STRINGID + ---@field top_woodpanel_visible boolean + ---@field bottom_woodpanel_visible boolean + ---@field toggle_woodpanel_slidein_animation boolean + ---@field capitalize_scroll_text boolean + +---@class ScreenControls + ---@field up boolean + ---@field down boolean + ---@field left boolean + ---@field right boolean + ---@field direction_input integer @-1 - none, 0 - UP, 1 - DOWN, 2 - LEFT, 3 - RIGHT + ---@field hold_down_timer integer @Delay after which fast scroll activates (can stop at different value, only matters when you hold down the direction button) + ---@field fast_scroll_timer integer + ---@class Screen ---@field render_timer number ---@field init fun(self): nil @Initializes the screen. @@ -5531,10 +5559,12 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field logo_mossmouth TextureRenderingInfo ---@field logo_blitworks TextureRenderingInfo ---@field logo_fmod TextureRenderingInfo + ---@field state integer @0 - mossmouth, 1 - blitworks, 2 - fmod, 3 - end (next screen) + ---@field timer integer ---@class ScreenIntro : Screen - ---@field unknown4 TextureRenderingInfo - ---@field darkness number + ---@field blackout_background TextureRenderingInfo + ---@field blackout_alpha number ---@field active boolean @ends the intro immediately if set to false ---@field skip_prologue boolean @skips prologue and goes straight to the title screen after the intro @@ -5557,6 +5587,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field particle_torchflame_backflames_animated ParticleEmitterInfo ---@field particle_torchflame_flames_animated ParticleEmitterInfo ---@field particle_torchflame_ash ParticleEmitterInfo + ---@field brightness number ---@field music SoundMeta ---@field torch_sound SoundMeta @@ -5565,6 +5596,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field row integer ---@class ScreenMenu : Screen + ---@field state integer @0: "cthulhu_pre_movement",
1: "cthulhu_rotating",
2: "cthulhu_separating",
3: "cthulhu_lowering",
4: "cthulhu_transition_to_menu",
5: "return_from_backlayer",
6: "highlight_selection",
7: "idle",
8: "to_submenu",
9: "to_backlayer",
10: "backlayer_idle" ---@field tunnel_background TextureRenderingInfo ---@field cthulhu_disc TextureRenderingInfo ---@field tunnel_ring_darkbrown TextureRenderingInfo @@ -5580,37 +5612,43 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field play_scroll TextureRenderingInfo ---@field info_toast TextureRenderingInfo ---@field cthulhu_sound SoundMeta + ---@field particle_smoke ParticleEmitterInfo + ---@field particle_rubble ParticleEmitterInfo ---@field cthulhu_disc_ring_angle number ---@field cthulhu_disc_split_progress number ---@field cthulhu_disc_y number ---@field cthulhu_timer number + ---@field controls ScreenControls ---@field selected_menu_index integer ----@field menu_text_opacity number + ---@field sides_hold_down_timer integer + ---@field sides_fast_scroll_timer integer + ---@field loop boolean @Allow going up from first to last option + ---@field menu_id integer @0 = main menu, 1 = play, 2 = online + ---@field transfer_to_menu_id integer + ---@field menu_text_opacity number ---@field spear_position number[] @size: 6 ---@field spear_dangler SpearDanglerAnimFrames[] @size: 6 + ---@field spear_dangle_momentum integer[] @size: 6 + ---@field spear_dangle_angle integer[] @size: 6 ---@field play_scroll_descend_timer number ---@field scroll_text STRINGID + ---@field shake_offset_x number + ---@field shake_offset_y number ---@class ScreenOptions : Screen + ---@field down boolean + ---@field up boolean + ---@field direction_input integer @-1 = none, 0 = down, 1 = up + ---@field hold_down_timer integer + ---@field fast_scroll_timer integer ---@field selected_menu_index integer - ---@field brick_border TextureRenderingInfo - ---@field top_bottom_woodpanels_velocity number - ---@field top_bottom_woodpanels_progress number - ---@field scroll_unfurl_progress number - ---@field bottom_woodpanel_y number - ---@field top_bottom_woodpanels_slide_in_related number - ---@field bottom_woodpanel TextureRenderingInfo - ---@field top_woodpanel TextureRenderingInfo - ---@field top_woodpanel_left_scrollhandle TextureRenderingInfo - ---@field top_woodpanel_right_scrollhandle TextureRenderingInfo - ---@field button_right_caption STRINGID - ---@field button_middle_caption STRINGID - ---@field top_woodpanel_visible boolean - ---@field bottom_woodpanel_visible boolean - ---@field toggle_woodpanel_slidein_animation boolean - ---@field capitalize_top_woodpanel boolean - ---@field current_menu_1 integer - ---@field current_menu_2 integer + ---@field sides_hold_down_timer integer + ---@field sides_fast_scroll_timer integer + ---@field loop boolean @Allow going up from first to last option + ---@field screen_panels MenuScreenPanels + ---@field menu_id integer + ---@field transfer_to_menu_id integer + ---@field show_apply_button boolean ---@field topleft_woodpanel_esc TextureRenderingInfo ---@field brick_background TextureRenderingInfo ---@field brick_middlelayer TextureRenderingInfo @@ -5621,51 +5659,63 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field item_option_arrow_right TextureRenderingInfo ---@field tooltip_background TextureRenderingInfo ---@field progressbar_background TextureRenderingInfo + ---@field volume_progressbar_foreground TextureRenderingInfo ---@field progressbar_foreground TextureRenderingInfo - ---@field progressbar_position_indicator TextureRenderingInfo + ---@field volume_progressbar_position_indicator TextureRenderingInfo ---@field sectionheader_background TextureRenderingInfo - ---@field topleft_woodpanel_esc_slidein_timer number - ---@field text_fadein_timer number - ---@field vertical_scroll_effect_timer number - ----@class ScreenPlayerProfile : Screen - ----@class ScreenLeaderboards : Screen - ----@class ScreenSeedInput : Screen - ---@field bottom_woodpanel_slideup_timer number - ---@field bottom_woodpanel_y number - ---@field bottom_woodpanel TextureRenderingInfo - ---@field buttons_text_id STRINGID - ---@field topleft_woodpanel_esc_slidein_timer number + ---@field pet_icons TextureRenderingInfo @In "Gameplay" menu + ---@field bottom_scroll TextureRenderingInfo @For the code in the sync menu + ---@field bottom_left_scrollhandle TextureRenderingInfo + ---@field bottom_right_scrollhandle TextureRenderingInfo + ---@field topleft_woodpanel_esc_slidein number + ---@field text_fadein number + ---@field vertical_scroll_effect number + ---@field options_visiable boolean + ---@field show_highlight boolean @Shows the red background behind the option, the scarab on the left and left/right arrows + ---@field tooltip_text STRINGID[] + ---@field disable_controls boolean @Used for sync progress + ---@field sync_progress_state integer @0 - none, 1 - waiting for the code, 2 - code acquired, 3 - sync in progress, 4 - sync completed + ---@field credits_progression number + +---@class ScreenCodeInput : Screen + ---@field screen_panels MenuScreenPanels + ---@field allow_random boolean @needs to be set before opening the screen to show the correct text at the bottom + ---@field selected_button_index integer + ---@field pressed_select boolean + ---@field topleft_woodpanel_esc_slidein number ---@field scroll_text_id STRINGID ---@field start_text_id STRINGID ---@field main_woodpanel_left_border TextureRenderingInfo ---@field main_woodpanel_center TextureRenderingInfo ---@field main_woodpanel_right_border TextureRenderingInfo - ---@field seed_letter_cutouts TextureRenderingInfo + ---@field top_scroll TextureRenderingInfo + ---@field letter_cutouts TextureRenderingInfo + ---@field hand_pointer TextureRenderingInfo + ---@field key_background TextureRenderingInfo ---@field topleft_woodpanel_esc TextureRenderingInfo ---@field start_sidepanel TextureRenderingInfo - ---@field start_sidepanel_slidein_timer number + ---@field start_sidepanel_slidein number ---@field seed_length integer @Current input length (0-8). You probably shouldn't write to this, except to set it to 0. - ---@field get_seed integer? - ---@field set_seed any @[](ScreenSeedInput&s + ---@field get_seed fun(self): integer? @Get the seed currently entered in the seed dialog or nil if nothing is entered. Will also return incomplete seeds, check seed_length to verify it's ready. + ---@field set_seed fun(self, seed: integer?, length: integer?): nil @Set the seed entered in the seed dialog. Call without arguments to clear entered seed. Optionally enter a length to set partial seed. + +---@class FlyingThing + ---@field texture_info TextureRenderingInfo + ---@field entity_type ENT_TYPE + ---@field spritesheet_column number + ---@field spritesheet_row number + ---@field spritesheet_animation_length number + ---@field velocity_x number + ---@field amplitude number + ---@field frequency number + ---@field sinewave_angle number ---@class ScreenCharacterSelect : Screen + ---@field main_background_zoom_progress number ---@field main_background_zoom_target number + ---@field blurred_border_zoom_progress number ---@field blurred_border_zoom_target number - ---@field top_bottom_woodpanel_slidein_timer number - ---@field top_scroll_unfurl_timer number - ---@field bottom_woodpanel TextureRenderingInfo - ---@field top_woodpanel TextureRenderingInfo - ---@field left_scroll_handle TextureRenderingInfo - ---@field right_scroll_handle TextureRenderingInfo - ---@field left_button_text_id STRINGID - ---@field right_button_text_id STRINGID - ---@field middle_button_text_id STRINGID - ---@field top_woodpanel_visible boolean - ---@field bottom_woodpanel_visible boolean - ---@field toggle_woodpanel_slidein_animation boolean + ---@field screen_panels MenuScreenPanels ---@field mine_entrance_background TextureRenderingInfo ---@field character TextureRenderingInfo ---@field character_shadow TextureRenderingInfo @@ -5691,16 +5741,18 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field player_quickselect_fadein_timer number[] @size: MAX_PLAYERS ---@field player_quickselect_coords number[][] @size: MAX_PLAYERS ---@field player_quickselect_wiggle_angle number[] @size: MAX_PLAYERS - ---@field topleft_woodpanel_esc_slidein_timer number - ---@field start_panel_slidein_timer number + ---@field topleft_woodpanel_esc_slidein number + ---@field start_panel_slidein number ---@field action_buttons_keycap_size number + ---@field next_screen_to_load integer ---@field not_ready_to_start_yet boolean ---@field available_mine_entrances integer ---@field amount_of_mine_entrances_activated integer - ---@field buttons integer - ---@field opacity number + ---@field screen_blackout TextureRenderingInfo + ---@field blackout_transparency number ---@field start_pressed boolean ---@field transition_to_game_started boolean + ---@field disable_controls boolean ---@field flying_things FlyingThing[] @size: 6 ---@field flying_thing_countdown integer ---@field particle_ceilingdust_smoke ParticleEmitterInfo @@ -5714,30 +5766,22 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field particle_torchflame_flames3 ParticleEmitterInfo ---@field particle_torchflame_smoke4 ParticleEmitterInfo ---@field particle_torchflame_flames4 ParticleEmitterInfo - ---@field sound SoundMeta - ----@class FlyingThing - ---@field texture_info TextureRenderingInfo - ---@field entity_type ENT_TYPE - ---@field spritesheet_column number - ---@field spritesheet_row number - ---@field spritesheet_animation_length number - ---@field velocity_x number - ---@field amplitude number - ---@field frequency number - ---@field sinewave_angle number + ---@field torch_sound SoundMeta[] @size: 4 + ---@field buttons integer[] @size: MAX_PLAYERS ---@class ScreenTeamSelect : Screen - ---@field ana_carrying_torch TextureRenderingInfo + ---@field player_portrait TextureRenderingInfo ---@field scroll_bottom_left TextureRenderingInfo ---@field scrollend_bottom_left TextureRenderingInfo ---@field four_ropes TextureRenderingInfo - ---@field unknown4 TextureRenderingInfo + ---@field gems_above_the_ropes TextureRenderingInfo ---@field four_characters TextureRenderingInfo ---@field left_arrow TextureRenderingInfo ---@field right_arrow TextureRenderingInfo ---@field start_panel TextureRenderingInfo - ---@field start_panel_slide_timer number + ---@field go_back_wooden_panel TextureRenderingInfo + ---@field start_panel_slide number + ---@field go_back_wooden_panel_slide number ---@field pulsating_arrows_timer number ---@field selected_player integer ---@field buttons integer @@ -5761,6 +5805,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field stats_scroll_horizontal_posaa number ---@field stats_scroll_vertical_pos number ---@field level_completed_pos number + ---@field stats_scroll_unfurl_actualvalue number ---@field stats_scroll_unfurl_targetvalue number ---@field woodpanel1 TextureRenderingInfo ---@field woodpanel2 TextureRenderingInfo @@ -5772,7 +5817,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field woodpanel_bottomcutout1 TextureRenderingInfo ---@field woodpanel_bottomcutout2 TextureRenderingInfo ---@field woodpanel_bottomcutout3 TextureRenderingInfo - ---@field unknown_all_forced TextureRenderingInfo + ---@field scroll TextureRenderingInfo ---@field stats_scroll_top_bottom TextureRenderingInfo ---@field killcount_rounded_rect TextureRenderingInfo ---@field level_completed_panel TextureRenderingInfo @@ -5783,6 +5828,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field speechbubble TextureRenderingInfo ---@field speechbubble_arrow TextureRenderingInfo ---@field mama_tunnel_fade_targetvalue number + ---@field mama_tunnel_fade_targetvalue number ---@field mama_tunnel_text_id STRINGID ---@field mama_tunnel_choice_visible boolean ---@field mama_tunnel_agree_with_gift boolean @@ -5794,7 +5840,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field woodpanel_cutout_big_money2 TextureRenderingInfo ---@field woodpanel_cutout_big_money3 TextureRenderingInfo ---@field big_dollar_sign TextureRenderingInfo - ---@field unknown26 TextureRenderingInfo + ---@field stats_scroll_unfurl_sequence integer ---@field player_stats_scroll_numeric_value integer[] @size: MAX_PLAYERS ---@field player_secondary_icon TextureRenderingInfo[] @size: MAX_PLAYERS ---@field player_icon TextureRenderingInfo[] @size: MAX_PLAYERS @@ -5803,6 +5849,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field hourglasses TextureRenderingInfo ---@field small_dollar_signs TextureRenderingInfo ---@field this_level_money_color Color + ---@field buttons integer[] @size: MAX_PLAYERS ---@class ScreenDeath : Screen @@ -5813,6 +5860,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field rescuing_ship_entity Entity ---@class ScreenCredits : Screen + ---@field credits_progression number ---@field bg_music_info SoundMeta ---@class ScreenScores : Screen @@ -5841,27 +5889,17 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field ouroboros_angle number ---@class OnlineLobbyScreenPlayer + ---@field platform_icon integer @16 = PC, 17 = Discord, 18 = Steam, 19 = Xbox, 32 = switch, 48 = PS, 49 = PS again? ---@field character integer @0 - Ana Spelunky, 1 - Margaret Tunnel, 2 - Colin Northward, 3 - Roffy D. Sloth.. and so on. Same order as in ENT_TYPE ---@field ready boolean + ---@field searching boolean ---@class ScreenOnlineLobby : Screen - ---@field woodpanels_slidein_timer number - ---@field scroll_unfurl_timer number - ---@field woodpanel_bottom TextureRenderingInfo - ---@field woodpanel_top TextureRenderingInfo - ---@field left_scroll_handle TextureRenderingInfo - ---@field right_scroll_handle TextureRenderingInfo - ---@field scroll_text_id STRINGID - ---@field btn_left_text_id STRINGID - ---@field btn_right_text_id STRINGID - ---@field btn_center_text_id STRINGID - ---@field woodpanel_top_visible boolean - ---@field woodpanel_bottom_visible boolean - ---@field toggle_panels_slidein boolean + ---@field screen_panels MenuScreenPanels ---@field players OnlineLobbyScreenPlayer[] @size: 4 ---@field background_image TextureRenderingInfo ---@field topleft_woodpanel_esc TextureRenderingInfo - ---@field topleft_woodpanel_esc_slidein_timer number + ---@field topleft_woodpanel_esc_slidein number ---@field character_walk_offset number ---@field character_facing_left boolean ---@field move_direction integer @@ -5875,30 +5913,12 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field player_count integer ---@field searching_for_players boolean ---@field show_code_panel boolean - ---@field enter_code_woodpanel_bottom_slidein_pos number - ---@field enter_code_woodpanel_bottom TextureRenderingInfo - ---@field enter_code_btn_right_text_id STRINGID - ---@field enter_code_woodpanel_top_visible boolean - ---@field enter_code_woodpanel_bottom_visible boolean - ---@field enter_code_toggle_panels_slidein boolean - ---@field selected_character integer - ---@field characters_entered_count integer - ---@field enter_code_topleft_woodpanel_esc_slidein_timer number - ---@field enter_code_banner_text_id STRINGID - ---@field enter_code_OK_text_id STRINGID - ---@field enter_code_main_woodpanel_left TextureRenderingInfo - ---@field enter_code_main_woodpanel_center TextureRenderingInfo - ---@field enter_code_main_woodpanel_right TextureRenderingInfo - ---@field enter_code_banner TextureRenderingInfo - ---@field enter_code_char_cutouts TextureRenderingInfo - ---@field enter_code_pointing_hand TextureRenderingInfo - ---@field enter_code_buttons TextureRenderingInfo - ---@field enter_code_OK_panel TextureRenderingInfo - ---@field enter_code_OK_panel_slidein_timer number + ---@field screen_code_input ScreenEnterOnlineCode + +---@class ScreenEnterOnlineCode : ScreenCodeInput ---@field enter_code_your_code_scroll TextureRenderingInfo ---@field enter_code_your_code_scroll_left_handle TextureRenderingInfo ---@field enter_code_your_code_scroll_right_handle TextureRenderingInfo - ---@field set_code fun(self, code: string): nil ---@class PauseUI ---@field menu_slidein_progress number @@ -5908,9 +5928,12 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field woodpanel_right TextureRenderingInfo ---@field woodpanel_top TextureRenderingInfo ---@field scroll TextureRenderingInfo - ---@field confirmation_panel TextureRenderingInfo - ---@field previously_selected_menu_index integer - ---@field visibility integer + ---@field confirmation_panel TextureRenderingInfo @Prompt background + ---@field selected_option integer @It's set wh game displays the prompt + ---@field prompt_visible boolean + ---@field buttons_actions integer[] @size: MAX_PLAYERS + ---@field buttons_movement integer[] @size: MAX_PLAYERS + ---@field visibility integer @0 - Invisible, 1 - Sliding down, 2 - Visible, 3 - Sliding up ---@class JournalUI ---@field state integer @@ -5921,10 +5944,9 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field book_background TextureRenderingInfo ---@field arrow_left TextureRenderingInfo ---@field arrow_right TextureRenderingInfo - ---@field unknown23 TextureRenderingInfo ---@field entire_book TextureRenderingInfo - ---@field page_timer integer ---@field fade_timer integer + ---@field page_timer integer ---@field opacity integer ---@field pages JournalPage[] @Stores pages loaded into memeory. It's not cleared after the journal is closed or when you go back to the main (menu) page.
Use `:get_type()` to chcek page type and cast it correctly (see ON.[RENDER_PRE_JOURNAL_PAGE](#ON-RENDER_PRE_JOURNAL_PAGE)) @@ -5938,7 +5960,6 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field coffeestain_top TextureRenderingInfo ---@class JournalPageJournalMenu : JournalPage - ---@field selected_menu_index integer ---@field journal_text_info TextRenderingInfo ---@field completion_badge TextureRenderingInfo @@ -5973,8 +5994,6 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field trap_icon TextureRenderingInfo ---@field trap_background TextureRenderingInfo ----@class JournalPageStory : JournalPage - ---@class JournalPageFeats : JournalPage ---@field chapter_title_text_info TextRenderingInfo ---@field feat_icons TextureRenderingInfo @@ -5983,7 +6002,6 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field death_cause_text_info TextRenderingInfo ---@class JournalPageDeathMenu : JournalPage - ---@field selected_menu_index integer ---@field game_over_text_info TextRenderingInfo ---@field level_text_info TextRenderingInfo ---@field level_value_text_info TextRenderingInfo @@ -5992,8 +6010,6 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field time_text_info TextRenderingInfo ---@field time_value_text_info TextRenderingInfo ----@class JournalPageRecap : JournalPage - ---@class JournalPagePlayerProfile : JournalPage ---@field player_icon TextureRenderingInfo ---@field player_icon_id integer @@ -6032,22 +6048,7 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field stickers TextureRenderingInfo[] @size: 20 ---@class ScreenArenaMenu : Screen - ---@field brick_background_animation ScreenZoomAnimation - ---@field blurry_border_animation ScreenZoomAnimation - ---@field top_woodpanel_slidein_timer number - ---@field top_scroll_unfurl_timer number - ---@field unknown13 TextureRenderingInfo - ---@field woodpanel_top TextureRenderingInfo - ---@field unknown15 TextureRenderingInfo - ---@field left_scroll_handle TextureRenderingInfo - ---@field right_scroll_handle TextureRenderingInfo - ---@field scroll_text_id STRINGID - ---@field unknown17_text_id STRINGID - ---@field unknown18_text_id STRINGID - ---@field unknown19_text_id STRINGID - ---@field top_woodpanel_visible boolean - ---@field bottom_woodpanel_visible boolean - ---@field woodpanels_toggle boolean + ---@field screen_panels MenuScreenPanels ---@field brick_background TextureRenderingInfo ---@field blurry_border TextureRenderingInfo ---@field blurry_border2 TextureRenderingInfo @@ -6077,23 +6078,10 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field esc_next_panels_slide_timer number ---@field main_panel_vertical_scroll_position number ---@field selected_option_index integer - ----@class ScreenZoomAnimation - ---@field zoom_target number + ---@field controls ScreenControls ---@class ScreenArenaStagesSelect : Screen - ---@field woodenpanel_top_slidein_timer number - ---@field woodenpanel_top_scroll_unfurl_timer number - ---@field woodenpanel_top TextureRenderingInfo - ---@field woodenpanel_top_left_scroll TextureRenderingInfo - ---@field woodenpanel_top_right_scroll TextureRenderingInfo - ---@field text_id_1 STRINGID - ---@field text_id_2 STRINGID - ---@field text_id_3 STRINGID - ---@field text_id_4 STRINGID - ---@field woodenpanel_top_visible boolean - ---@field woodenpanel_bottom_visible boolean - ---@field woodenpanels_toggle boolean + ---@field screen_panels MenuScreenPanels ---@field buttons integer ---@field brick_background TextureRenderingInfo ---@field info_black_background TextureRenderingInfo @@ -6120,23 +6108,14 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field players_turn_scroll TextureRenderingInfo ---@field players_turn_scroll_handle TextureRenderingInfo ---@field grid_player_icon TextureRenderingInfo + ---@field stages_to_gray_out table + ---@field panels_slide_from_both_sides number + ---@field visibility_all_stages number ---@field selected_stage_index integer + ---@field controls ScreenControls ---@class ScreenArenaItems : Screen - ---@field woodpanel_top_slidein_timer number - ---@field woodpanel_top_scroll_unfurl_timer number - ---@field unknown9 TextureRenderingInfo - ---@field woodpanel_top TextureRenderingInfo - ---@field unknown11 TextureRenderingInfo - ---@field top_scroll_left_handle TextureRenderingInfo - ---@field top_scroll_right_handle TextureRenderingInfo - ---@field scroll_text_id STRINGID - ---@field text_id_2 STRINGID - ---@field text_id_3 STRINGID - ---@field text_id_4 STRINGID - ---@field woodpanel_top_visible boolean - ---@field woodpanel_bottom_visible boolean - ---@field woodpanels_toggle boolean + ---@field screen_panels MenuScreenPanels ---@field brick_background TextureRenderingInfo ---@field black_background_bottom_right TextureRenderingInfo ---@field woodpanel_bottom TextureRenderingInfo @@ -6152,36 +6131,44 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field item_equipped_badge TextureRenderingInfo ---@field item_off_gray_overlay TextureRenderingInfo ---@field esc_woodpanel TextureRenderingInfo + ---@field items_to_gray_out table ---@field center_panels_horizontal_slide_position number ---@field esc_panel_slide_timer number ---@field selected_item_index integer + ---@field controls ScreenControls ---@class ScreenArenaIntro : Screen ---@field players TextureRenderingInfo ---@field background_colors TextureRenderingInfo ---@field vertical_lines TextureRenderingInfo ---@field vertical_line_electricity_effect TextureRenderingInfo - ---@field unknown_all_forced TextureRenderingInfo ---@field left_scroll TextureRenderingInfo ---@field right_scroll TextureRenderingInfo - ---@field scroll_unfurl_timer number + ---@field scroll_unfurl number ---@field waiting boolean ---@field names_opacity number ---@field line_electricity_effect_timer number ---@field state integer ---@field countdown integer + ---@field particles ParticleEmitterInfo[] @size: 9 ---@class ScreenArenaLevel : Screen ---@field get_ready TextureRenderingInfo ---@field get_ready_gray_background TextureRenderingInfo ---@field get_ready_outline TextureRenderingInfo + ---@field particles ParticleEmitterInfo[] @size: 11 + +---@class ScreenArenaScoreLavaBubble + ---@field x number + ---@field y number + ---@field timer1 integer + ---@field timer2 integer + ---@field visible boolean ---@class ScreenArenaScore : Screen - ---@field woodpanel_slide_timer number - ---@field scroll_unfurl_timer number - ---@field unknown10 TextureRenderingInfo + ---@field woodpanel_slide number + ---@field scroll_unfurl number ---@field woodpanel TextureRenderingInfo - ---@field unknown_all_forced TextureRenderingInfo ---@field woodpanel_left_scroll TextureRenderingInfo ---@field woodpanel_right_scroll TextureRenderingInfo ---@field text_id_1 STRINGID @@ -6197,15 +6184,11 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field bottom_lava TextureRenderingInfo ---@field players TextureRenderingInfo ---@field player_shadows TextureRenderingInfo - ---@field unknown24 TextureRenderingInfo - ---@field unknown25 TextureRenderingInfo ---@field score_counter TextureRenderingInfo - ---@field unknown27 TextureRenderingInfo ---@field lava_bubbles TextureRenderingInfo ---@field player_won boolean[] @size: MAX_PLAYERS ---@field victory_jump_y_pos number ---@field victory_jump_velocity number - ---@field animation_frame integer ---@field squash_and_celebrate boolean ---@field player_ready boolean[] @size: MAX_PLAYERS ---@field next_transition_timer integer @@ -6213,6 +6196,8 @@ function Quad:is_point_inside(x, y, epsilon) end ---@field player_crushing_pillar_height number[] @size: MAX_PLAYERS ---@field player_create_giblets boolean[] @size: MAX_PLAYERS ---@field next_sidepanel_slidein_timer number + ---@field particles ParticleEmitterInfo[] @size: 13 + ---@field lava_bubbles_positions ScreenArenaScoreLavaBubble[] @size: 15 ---@class UdpServer diff --git a/docs/parse_source.py b/docs/parse_source.py index 7826fccdf..1e08a1b3d 100644 --- a/docs/parse_source.py +++ b/docs/parse_source.py @@ -685,7 +685,7 @@ def run_parse(): var_name = var[0] cpp = var[1] - + if var[1].startswith("sol::property"): param_match = re.match( rf"sol::property\(\[\]\({underlying_cpp_type['name']}&(\w+)\)", @@ -772,7 +772,7 @@ def run_parse(): ) else: m_return_type = re.search( - r"->([:<>\w]+){", var[1] + r"->([:<>\w*]+){", var[1] ) # Use var[1] instead of cpp because it could be replaced on the sol::property stuff if m_return_type: type = replace_fun(m_return_type[1]) diff --git a/docs/src/includes/_enums.md b/docs/src/includes/_enums.md index 352f23843..76984f659 100644 --- a/docs/src/includes/_enums.md +++ b/docs/src/includes/_enums.md @@ -846,7 +846,7 @@ Name | Data | Description [RENDER_PRE_DRAW_DEPTH](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_PRE_DRAW_DEPTH) | ON::RENDER_PRE_DRAW_DEPTH | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, int draw_depth
Runs before the entities of the specified draw_depth are drawn on screen. In this event, you can draw textures with the `draw_world_texture` function of the render_ctx. Return `true` to skip rendering.
[RENDER_POST_DRAW_DEPTH](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_POST_DRAW_DEPTH) | ON::RENDER_POST_DRAW_DEPTH | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, int draw_depth
Runs right after the entities of the specified draw_depth are drawn on screen. In this event, you can draw textures with the `draw_world_texture` function of the render_ctx
[RENDER_PRE_JOURNAL_PAGE](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_PRE_JOURNAL_PAGE) | ON::RENDER_PRE_JOURNAL_PAGE | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_TYPE](#JOURNAL_PAGE_TYPE) page_type, [JournalPage](#JournalPage) page
Runs before the journal page is drawn on screen. Return `true` to skip rendering.
-[RENDER_POST_JOURNAL_PAGE](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_POST_JOURNAL_PAGE) | ON::RENDER_POST_JOURNAL_PAGE | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_TYPE](#JOURNAL_PAGE_TYPE) page_type, [JournalPage](#JournalPage) page
Runs after the journal page is drawn on screen. In this event, you can draw textures with the draw_screen_texture function of the [VanillaRenderContext](#VanillaRenderContext)
The [JournalPage](#JournalPage) parameter gives you access to the specific fields of the page. Be sure to cast it to the correct type, the following functions are available to do that:
`page:as_journal_page_progress()`
`page:as_journal_page_journalmenu()`
`page:as_journal_page_places()`
`page:as_journal_page_people()`
`page:as_journal_page_bestiary()`
`page:as_journal_page_items()`
`page:as_journal_page_traps()`
`page:as_journal_page_story()`
`page:as_journal_page_feats()`
`page:as_journal_page_deathcause()`
`page:as_journal_page_deathmenu()`
`page:as_journal_page_recap()`
`page:as_journal_page_playerprofile()`
`page:as_journal_page_lastgameplayed()`
+[RENDER_POST_JOURNAL_PAGE](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_POST_JOURNAL_PAGE) | ON::RENDER_POST_JOURNAL_PAGE | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_TYPE](#JOURNAL_PAGE_TYPE) page_type, [JournalPage](#JournalPage) page
Runs after the journal page is drawn on screen. In this event, you can draw textures with the draw_screen_texture function of the [VanillaRenderContext](#VanillaRenderContext)
The [JournalPage](#JournalPage) parameter gives you access to the specific fields of the page. Be sure to cast it to the correct type, the following functions are available to do that:
`page:as_journal_page_progress()`
`page:as_journal_page_journalmenu()`
`page:as_journal_page_places()`
`page:as_journal_page_people()`
`page:as_journal_page_bestiary()`
`page:as_journal_page_items()`
`page:as_journal_page_traps()`
`page:as_journal_page_feats()`
`page:as_journal_page_deathcause()`
`page:as_journal_page_deathmenu()`
`page:as_journal_page_playerprofile()`
`page:as_journal_page_lastgameplayed()`
[RENDER_PRE_LAYER](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_PRE_LAYER) | ON::RENDER_PRE_LAYER | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, int rendered_layer
Runs before a layer is rendered, runs for both layers during layer door transitions. Return `true` to skip rendering.
[RENDER_POST_LAYER](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_POST_LAYER) | ON::RENDER_POST_LAYER | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, int rendered_layer
Runs after a layer is rendered, runs for both layers during layer door transitions. Things drawn here will be part of the layer transition animation
[RENDER_PRE_LEVEL](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_PRE_LEVEL) | ON::RENDER_PRE_LEVEL | Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, int camera_layer
Runs before the level is rendered. Return `true` to skip rendering.
diff --git a/docs/src/includes/_events.md b/docs/src/includes/_events.md index 22491bc72..7c5f07204 100644 --- a/docs/src/includes/_events.md +++ b/docs/src/includes/_events.md @@ -436,7 +436,7 @@ Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_ > Search script examples for [ON.RENDER_POST_JOURNAL_PAGE](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ON.RENDER_POST_JOURNAL_PAGE) -Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_TYPE](#JOURNAL_PAGE_TYPE) page_type, [JournalPage](#JournalPage) page
Runs after the journal page is drawn on screen. In this event, you can draw textures with the draw_screen_texture function of the [VanillaRenderContext](#VanillaRenderContext)
The [JournalPage](#JournalPage) parameter gives you access to the specific fields of the page. Be sure to cast it to the correct type, the following functions are available to do that:
`page:as_journal_page_progress()`
`page:as_journal_page_journalmenu()`
`page:as_journal_page_places()`
`page:as_journal_page_people()`
`page:as_journal_page_bestiary()`
`page:as_journal_page_items()`
`page:as_journal_page_traps()`
`page:as_journal_page_story()`
`page:as_journal_page_feats()`
`page:as_journal_page_deathcause()`
`page:as_journal_page_deathmenu()`
`page:as_journal_page_recap()`
`page:as_journal_page_playerprofile()`
`page:as_journal_page_lastgameplayed()`
+Params: [VanillaRenderContext](#VanillaRenderContext) render_ctx, [JOURNAL_PAGE_TYPE](#JOURNAL_PAGE_TYPE) page_type, [JournalPage](#JournalPage) page
Runs after the journal page is drawn on screen. In this event, you can draw textures with the draw_screen_texture function of the [VanillaRenderContext](#VanillaRenderContext)
The [JournalPage](#JournalPage) parameter gives you access to the specific fields of the page. Be sure to cast it to the correct type, the following functions are available to do that:
`page:as_journal_page_progress()`
`page:as_journal_page_journalmenu()`
`page:as_journal_page_places()`
`page:as_journal_page_people()`
`page:as_journal_page_bestiary()`
`page:as_journal_page_items()`
`page:as_journal_page_traps()`
`page:as_journal_page_feats()`
`page:as_journal_page_deathcause()`
`page:as_journal_page_deathmenu()`
`page:as_journal_page_playerprofile()`
`page:as_journal_page_lastgameplayed()`
## ON.RENDER_PRE_LAYER diff --git a/docs/src/includes/_types.md b/docs/src/includes/_types.md index b64cb3428..064906e50 100644 --- a/docs/src/includes/_types.md +++ b/docs/src/includes/_types.md @@ -1046,14 +1046,6 @@ float | [mousewheel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mo | [gamepads](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=gamepads) | [Gamepad](#Gamepad) gamepads(int index)
This is the XInput index 1..4, might not be the same as the player slot.
bool | [showcursor](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=showcursor) | -### InputDevice - - -Type | Name | Description ----- | ---- | ----------- -int | [input_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=input_index) | -int | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | - ### InputMapping Used in [PlayerSlot](#PlayerSlot) @@ -1143,7 +1135,6 @@ Derived from [JournalPage](#JournalPage) Type | Name | Description ---- | ---- | ----------- -int | [selected_menu_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_menu_index) | [TextRenderingInfo](#TextRenderingInfo) | [game_over_text_info](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=game_over_text_info) | [TextRenderingInfo](#TextRenderingInfo) | [level_text_info](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=level_text_info) | [TextRenderingInfo](#TextRenderingInfo) | [level_value_text_info](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=level_value_text_info) | @@ -1191,7 +1182,6 @@ Derived from [JournalPage](#JournalPage) Type | Name | Description ---- | ---- | ----------- -int | [selected_menu_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_menu_index) | [TextRenderingInfo](#TextRenderingInfo) | [journal_text_info](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=journal_text_info) | [TextureRenderingInfo](#TextureRenderingInfo) | [completion_badge](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=completion_badge) | @@ -1273,22 +1263,6 @@ Type | Name | Description ---- | ---- | ----------- [TextureRenderingInfo](#TextureRenderingInfo) | [coffeestain_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=coffeestain_top) | -### JournalPageRecap - -Derived from [JournalPage](#JournalPage) - - -Type | Name | Description ----- | ---- | ----------- - -### JournalPageStory - -Derived from [JournalPage](#JournalPage) - - -Type | Name | Description ----- | ---- | ----------- - ### JournalPageTraps Derived from [JournalPage](#JournalPage) [JournalPageDiscoverable](#JournalPageDiscoverable) @@ -1918,20 +1892,45 @@ int | [max_page_count](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q= [TextureRenderingInfo](#TextureRenderingInfo) | [book_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=book_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [arrow_left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=arrow_left) | [TextureRenderingInfo](#TextureRenderingInfo) | [arrow_right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=arrow_right) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown23](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown23) | [TextureRenderingInfo](#TextureRenderingInfo) | [entire_book](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=entire_book) | -int | [page_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=page_timer) | int | [fade_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=fade_timer) | +int | [page_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=page_timer) | int | [opacity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=opacity) | vector<[JournalPage](#JournalPage)> | [pages](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=pages) | Stores pages loaded into memeory. It's not cleared after the journal is closed or when you go back to the main (menu) page.
Use `:get_type()` to chcek page type and cast it correctly (see ON.[RENDER_PRE_JOURNAL_PAGE](#ON-RENDER_PRE_JOURNAL_PAGE)) +### MenuScreenPanels + + +Type | Name | Description +---- | ---- | ----------- +float | [woodpanels_velocity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanels_velocity) | +float | [woodpanels_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanels_progress) | +float | [scroll_unfurl_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl_progress) | +float | [bottom_woodpanel_speed_multiplayer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_speed_multiplayer) | +float | [bottom_woodpanel_y_offset](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_y_offset) | +[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel) | +[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel) | +[TextureRenderingInfo](#TextureRenderingInfo) | [scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll) | +[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel_left_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_left_scrollhandle) | +[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel_right_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_right_scrollhandle) | +[STRINGID](#Aliases) | [scroll_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text) | +[STRINGID](#Aliases) | [bottom_left_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_left_text) | +[STRINGID](#Aliases) | [bottom_right_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_right_text) | +[STRINGID](#Aliases) | [bottom_middle_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_middle_text) | +bool | [top_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_visible) | +bool | [bottom_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_visible) | +bool | [toggle_woodpanel_slidein_animation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=toggle_woodpanel_slidein_animation) | +bool | [capitalize_scroll_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=capitalize_scroll_text) | + ### OnlineLobbyScreenPlayer Type | Name | Description ---- | ---- | ----------- +int | [platform_icon](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=platform_icon) | 16 = PC, 17 = Discord, 18 = Steam, 19 = Xbox, 32 = switch, 48 = PS, 49 = PS again? int | [character](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=character) | 0 - Ana Spelunky, 1 - Margaret Tunnel, 2 - Colin Northward, 3 - Roffy D. Sloth.. and so on. Same order as in [ENT_TYPE](#ENT_TYPE) bool | [ready](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ready) | +bool | [searching](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=searching) | ### PauseUI @@ -1945,9 +1944,12 @@ float | [menu_slidein_progress](https://github.com/spelunky-fyi/overlunky/search [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_right) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top) | [TextureRenderingInfo](#TextureRenderingInfo) | [scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll) | -[TextureRenderingInfo](#TextureRenderingInfo) | [confirmation_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=confirmation_panel) | -int | [previously_selected_menu_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=previously_selected_menu_index) | -int | [visibility](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=visibility) | +[TextureRenderingInfo](#TextureRenderingInfo) | [confirmation_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=confirmation_panel) | Prompt background +int | [selected_option](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_option) | It's set wh game displays the prompt +bool | [prompt_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=prompt_visible) | +array<int, MAX_PLAYERS> | [buttons_actions](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons_actions) | +array<int, MAX_PLAYERS> | [buttons_movement](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons_movement) | +int | [visibility](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=visibility) | 0 - Invisible, 1 - Sliding down, 2 - Visible, 3 - Sliding up ### SaveRelated @@ -1975,15 +1977,15 @@ Type | Name | Description [TextureRenderingInfo](#TextureRenderingInfo) | [background_colors](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=background_colors) | [TextureRenderingInfo](#TextureRenderingInfo) | [vertical_lines](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=vertical_lines) | [TextureRenderingInfo](#TextureRenderingInfo) | [vertical_line_electricity_effect](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=vertical_line_electricity_effect) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown_all_forced](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown_all_forced) | [TextureRenderingInfo](#TextureRenderingInfo) | [left_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_scroll) | [TextureRenderingInfo](#TextureRenderingInfo) | [right_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_scroll) | -float | [scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl_timer) | +float | [scroll_unfurl](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl) | bool | [waiting](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=waiting) | float | [names_opacity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=names_opacity) | float | [line_electricity_effect_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=line_electricity_effect_timer) | int | [state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=state) | int | [countdown](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=countdown) | +array<[ParticleEmitterInfo](#ParticleEmitterInfo), 9> | [particles](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particles) | ### ScreenArenaItems @@ -1992,20 +1994,7 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -float | [woodpanel_top_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top_slidein_timer) | -float | [woodpanel_top_scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top_scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown9](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown9) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown11](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown11) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_scroll_left_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_scroll_left_handle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_scroll_right_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_scroll_right_handle) | -[STRINGID](#Aliases) | [scroll_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text_id) | -[STRINGID](#Aliases) | [text_id_2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_2) | -[STRINGID](#Aliases) | [text_id_3](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_3) | -[STRINGID](#Aliases) | [text_id_4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_4) | -bool | [woodpanel_top_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top_visible) | -bool | [woodpanel_bottom_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottom_visible) | -bool | [woodpanels_toggle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanels_toggle) | +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | [TextureRenderingInfo](#TextureRenderingInfo) | [brick_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [black_background_bottom_right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=black_background_bottom_right) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_bottom](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottom) | @@ -2021,9 +2010,11 @@ bool | [woodpanels_toggle](https://github.com/spelunky-fyi/overlunky/search?l=Lu [TextureRenderingInfo](#TextureRenderingInfo) | [item_equipped_badge](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=item_equipped_badge) | [TextureRenderingInfo](#TextureRenderingInfo) | [item_off_gray_overlay](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=item_off_gray_overlay) | [TextureRenderingInfo](#TextureRenderingInfo) | [esc_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=esc_woodpanel) | +map<int, float> | [items_to_gray_out](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=items_to_gray_out) | float | [center_panels_horizontal_slide_position](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=center_panels_horizontal_slide_position) | float | [esc_panel_slide_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=esc_panel_slide_timer) | int | [selected_item_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_item_index) | +[ScreenControls](#ScreenControls) | [controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=controls) | ### ScreenArenaLevel @@ -2035,6 +2026,7 @@ Type | Name | Description [TextureRenderingInfo](#TextureRenderingInfo) | [get_ready](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=get_ready) | [TextureRenderingInfo](#TextureRenderingInfo) | [get_ready_gray_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=get_ready_gray_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [get_ready_outline](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=get_ready_outline) | +array<[ParticleEmitterInfo](#ParticleEmitterInfo), 11> | [particles](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particles) | ### ScreenArenaMenu @@ -2043,22 +2035,7 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -[ScreenZoomAnimation](#ScreenZoomAnimation) | [brick_background_animation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_background_animation) | -[ScreenZoomAnimation](#ScreenZoomAnimation) | [blurry_border_animation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blurry_border_animation) | -float | [top_woodpanel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_slidein_timer) | -float | [top_scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown13](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown13) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown15](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown15) | -[TextureRenderingInfo](#TextureRenderingInfo) | [left_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_scroll_handle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [right_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_scroll_handle) | -[STRINGID](#Aliases) | [scroll_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text_id) | -[STRINGID](#Aliases) | [unknown17_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown17_text_id) | -[STRINGID](#Aliases) | [unknown18_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown18_text_id) | -[STRINGID](#Aliases) | [unknown19_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown19_text_id) | -bool | [top_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_visible) | -bool | [bottom_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_visible) | -bool | [woodpanels_toggle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanels_toggle) | +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | [TextureRenderingInfo](#TextureRenderingInfo) | [brick_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [blurry_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blurry_border) | [TextureRenderingInfo](#TextureRenderingInfo) | [blurry_border2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blurry_border2) | @@ -2088,6 +2065,7 @@ float | [center_panels_hor_slide_position](https://github.com/spelunky-fyi/overl float | [esc_next_panels_slide_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=esc_next_panels_slide_timer) | float | [main_panel_vertical_scroll_position](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_panel_vertical_scroll_position) | int | [selected_option_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_option_index) | +[ScreenControls](#ScreenControls) | [controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=controls) | ### ScreenArenaScore @@ -2096,11 +2074,9 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -float | [woodpanel_slide_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_slide_timer) | -float | [scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown10](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown10) | +float | [woodpanel_slide](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_slide) | +float | [scroll_unfurl](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown_all_forced](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown_all_forced) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_left_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_left_scroll) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_right_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_right_scroll) | [STRINGID](#Aliases) | [text_id_1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_1) | @@ -2116,15 +2092,11 @@ int | [animation_sequence](https://github.com/spelunky-fyi/overlunky/search?l=Lu [TextureRenderingInfo](#TextureRenderingInfo) | [bottom_lava](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_lava) | [TextureRenderingInfo](#TextureRenderingInfo) | [players](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=players) | [TextureRenderingInfo](#TextureRenderingInfo) | [player_shadows](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_shadows) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown24](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown24) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown25](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown25) | [TextureRenderingInfo](#TextureRenderingInfo) | [score_counter](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=score_counter) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown27](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown27) | [TextureRenderingInfo](#TextureRenderingInfo) | [lava_bubbles](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=lava_bubbles) | array<bool, MAX_PLAYERS> | [player_won](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_won) | float | [victory_jump_y_pos](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=victory_jump_y_pos) | float | [victory_jump_velocity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=victory_jump_velocity) | -int | [animation_frame](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=animation_frame) | bool | [squash_and_celebrate](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=squash_and_celebrate) | array<bool, MAX_PLAYERS> | [player_ready](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_ready) | int | [next_transition_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=next_transition_timer) | @@ -2132,6 +2104,19 @@ array<float, MAX_PLAYERS> | [player_bottom_pillar_offset](https://github.c array<float, MAX_PLAYERS> | [player_crushing_pillar_height](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_crushing_pillar_height) | array<bool, MAX_PLAYERS> | [player_create_giblets](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_create_giblets) | float | [next_sidepanel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=next_sidepanel_slidein_timer) | +array<[ParticleEmitterInfo](#ParticleEmitterInfo), 13> | [particles](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particles) | +array<[ScreenArenaScoreLavaBubble](#ScreenArenaScoreLavaBubble), 15> | [lava_bubbles_positions](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=lava_bubbles_positions) | + +### ScreenArenaScoreLavaBubble + + +Type | Name | Description +---- | ---- | ----------- +float | [x](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=x) | +float | [y](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=y) | +int | [timer1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=timer1) | +int | [timer2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=timer2) | +bool | [visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=visible) | ### ScreenArenaStagesSelect @@ -2140,18 +2125,7 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -float | [woodenpanel_top_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top_slidein_timer) | -float | [woodenpanel_top_scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top_scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodenpanel_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodenpanel_top_left_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top_left_scroll) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodenpanel_top_right_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top_right_scroll) | -[STRINGID](#Aliases) | [text_id_1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_1) | -[STRINGID](#Aliases) | [text_id_2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_2) | -[STRINGID](#Aliases) | [text_id_3](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_3) | -[STRINGID](#Aliases) | [text_id_4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_id_4) | -bool | [woodenpanel_top_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_top_visible) | -bool | [woodenpanel_bottom_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanel_bottom_visible) | -bool | [woodenpanels_toggle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodenpanels_toggle) | +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | int | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | [TextureRenderingInfo](#TextureRenderingInfo) | [brick_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [info_black_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=info_black_background) | @@ -2178,7 +2152,11 @@ int | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons [TextureRenderingInfo](#TextureRenderingInfo) | [players_turn_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=players_turn_scroll) | [TextureRenderingInfo](#TextureRenderingInfo) | [players_turn_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=players_turn_scroll_handle) | [TextureRenderingInfo](#TextureRenderingInfo) | [grid_player_icon](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=grid_player_icon) | +map<int, float> | [stages_to_gray_out](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stages_to_gray_out) | +float | [panels_slide_from_both_sides](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=panels_slide_from_both_sides) | +float | [visibility_all_stages](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=visibility_all_stages) | int | [selected_stage_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_stage_index) | +[ScreenControls](#ScreenControls) | [controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=controls) | ### ScreenCamp @@ -2196,20 +2174,11 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- +float | [main_background_zoom_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_background_zoom_progress) | float | [main_background_zoom_target](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_background_zoom_target) | +float | [blurred_border_zoom_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blurred_border_zoom_progress) | float | [blurred_border_zoom_target](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blurred_border_zoom_target) | -float | [top_bottom_woodpanel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_bottom_woodpanel_slidein_timer) | -float | [top_scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel) | -[TextureRenderingInfo](#TextureRenderingInfo) | [left_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_scroll_handle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [right_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_scroll_handle) | -[STRINGID](#Aliases) | [left_button_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_button_text_id) | -[STRINGID](#Aliases) | [right_button_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_button_text_id) | -[STRINGID](#Aliases) | [middle_button_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=middle_button_text_id) | -bool | [top_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_visible) | -bool | [bottom_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_visible) | -bool | [toggle_woodpanel_slidein_animation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=toggle_woodpanel_slidein_animation) | +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | [TextureRenderingInfo](#TextureRenderingInfo) | [mine_entrance_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mine_entrance_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [character](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=character) | [TextureRenderingInfo](#TextureRenderingInfo) | [character_shadow](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=character_shadow) | @@ -2235,16 +2204,18 @@ array<bool, MAX_PLAYERS> | [player_quickselect_shown](https://github.com/s array<float, MAX_PLAYERS> | [player_quickselect_fadein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_quickselect_fadein_timer) | array<array<float, 2>, MAX_PLAYERS> | [player_quickselect_coords](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_quickselect_coords) | array<float, MAX_PLAYERS> | [player_quickselect_wiggle_angle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_quickselect_wiggle_angle) | -float | [topleft_woodpanel_esc_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein_timer) | -float | [start_panel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_panel_slidein_timer) | +float | [topleft_woodpanel_esc_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein) | +float | [start_panel_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_panel_slidein) | float | [action_buttons_keycap_size](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=action_buttons_keycap_size) | +int | [next_screen_to_load](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=next_screen_to_load) | bool | [not_ready_to_start_yet](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=not_ready_to_start_yet) | int | [available_mine_entrances](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=available_mine_entrances) | int | [amount_of_mine_entrances_activated](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=amount_of_mine_entrances_activated) | -int | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | -float | [opacity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=opacity) | +[TextureRenderingInfo](#TextureRenderingInfo) | [screen_blackout](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_blackout) | +float | [blackout_transparency](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blackout_transparency) | bool | [start_pressed](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_pressed) | bool | [transition_to_game_started](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=transition_to_game_started) | +bool | [disable_controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=disable_controls) | array<[FlyingThing](#FlyingThing), 6> | [flying_things](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=flying_things) | int | [flying_thing_countdown](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=flying_thing_countdown) | [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_ceilingdust_smoke](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_ceilingdust_smoke) | @@ -2258,7 +2229,36 @@ int | [flying_thing_countdown](https://github.com/spelunky-fyi/overlunky/search? [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_flames3](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_flames3) | [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_smoke4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_smoke4) | [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_flames4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_flames4) | -[SoundMeta](#SoundMeta) | [sound](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sound) | +array<[SoundMeta](#SoundMeta), 4> | [torch_sound](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=torch_sound) | +array<int, MAX_PLAYERS> | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | + +### ScreenCodeInput + +Derived from [Screen](#Screen) + + +Type | Name | Description +---- | ---- | ----------- +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | +bool | [allow_random](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=allow_random) | needs to be set before opening the screen to show the correct text at the bottom +int | [selected_button_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_button_index) | +bool | [pressed_select](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=pressed_select) | +float | [topleft_woodpanel_esc_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein) | +[STRINGID](#Aliases) | [scroll_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text_id) | +[STRINGID](#Aliases) | [start_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_text_id) | +[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_left_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_left_border) | +[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_center](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_center) | +[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_right_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_right_border) | +[TextureRenderingInfo](#TextureRenderingInfo) | [top_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_scroll) | +[TextureRenderingInfo](#TextureRenderingInfo) | [letter_cutouts](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=letter_cutouts) | +[TextureRenderingInfo](#TextureRenderingInfo) | [hand_pointer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=hand_pointer) | +[TextureRenderingInfo](#TextureRenderingInfo) | [key_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=key_background) | +[TextureRenderingInfo](#TextureRenderingInfo) | [topleft_woodpanel_esc](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc) | +[TextureRenderingInfo](#TextureRenderingInfo) | [start_sidepanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_sidepanel) | +float | [start_sidepanel_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_sidepanel_slidein) | +int | [seed_length](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=seed_length) | Current input length (0-8). You probably shouldn't write to this, except to set it to 0. +optional<int> | [get_seed()](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=get_seed) | Get the seed currently entered in the seed dialog or nil if nothing is entered. Will also return incomplete seeds, check seed_length to verify it's ready. +nil | [set_seed(optional seed, optional length)](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=set_seed) | Set the seed entered in the seed dialog. Call without arguments to clear entered seed. Optionally enter a length to set partial seed. ### ScreenConstellation @@ -2298,6 +2298,19 @@ float | [constellation_text](https://github.com/spelunky-fyi/overlunky/search?l= [SoundMeta](#SoundMeta) | [explosion_and_loop](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=explosion_and_loop) | [SoundMeta](#SoundMeta) | [music](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=music) | +### ScreenControls + + +Type | Name | Description +---- | ---- | ----------- +bool | [up](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=up) | +bool | [down](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=down) | +bool | [left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left) | +bool | [right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right) | +int | [direction_input](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=direction_input) | -1 - none, 0 - UP, 1 - DOWN, 2 - LEFT, 3 - RIGHT +int | [hold_down_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=hold_down_timer) | Delay after which fast scroll activates (can stop at different value, only matters when you hold down the direction button) +int | [fast_scroll_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=fast_scroll_timer) | + ### ScreenCredits Derived from [Screen](#Screen) @@ -2305,6 +2318,7 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- +float | [credits_progression](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=credits_progression) | [SoundMeta](#SoundMeta) | [bg_music_info](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bg_music_info) | ### ScreenDeath @@ -2315,25 +2329,29 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -### ScreenIntro +### ScreenEnterOnlineCode -Derived from [Screen](#Screen) +Available in [ScreenOnlineLobby](#ScreenOnlineLobby) +Derived from [Screen](#Screen) [ScreenCodeInput](#ScreenCodeInput) Type | Name | Description ---- | ---- | ----------- -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown4) | -float | [darkness](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=darkness) | -bool | [active](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=active) | ends the intro immediately if set to false -bool | [skip_prologue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=skip_prologue) | skips prologue and goes straight to the title screen after the intro +[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll) | +[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll_left_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll_left_handle) | +[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll_right_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll_right_handle) | -### ScreenLeaderboards +### ScreenIntro Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- +[TextureRenderingInfo](#TextureRenderingInfo) | [blackout_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blackout_background) | +float | [blackout_alpha](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=blackout_alpha) | +bool | [active](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=active) | ends the intro immediately if set to false +bool | [skip_prologue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=skip_prologue) | skips prologue and goes straight to the title screen after the intro ### ScreenLevel @@ -2354,6 +2372,8 @@ Type | Name | Description [TextureRenderingInfo](#TextureRenderingInfo) | [logo_mossmouth](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=logo_mossmouth) | [TextureRenderingInfo](#TextureRenderingInfo) | [logo_blitworks](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=logo_blitworks) | [TextureRenderingInfo](#TextureRenderingInfo) | [logo_fmod](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=logo_fmod) | +int | [state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=state) | 0 - mossmouth, 1 - blitworks, 2 - fmod, 3 - end (next screen) +int | [timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=timer) | ### ScreenMenu @@ -2362,6 +2382,7 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- +int | [state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=state) | 0: "cthulhu_pre_movement",
1: "cthulhu_rotating",
2: "cthulhu_separating",
3: "cthulhu_lowering",
4: "cthulhu_transition_to_menu",
5: "return_from_backlayer",
6: "highlight_selection",
7: "idle",
8: "to_submenu",
9: "to_backlayer",
10: "backlayer_idle" [TextureRenderingInfo](#TextureRenderingInfo) | [tunnel_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=tunnel_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [cthulhu_disc](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_disc) | [TextureRenderingInfo](#TextureRenderingInfo) | [tunnel_ring_darkbrown](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=tunnel_ring_darkbrown) | @@ -2377,17 +2398,28 @@ Type | Name | Description [TextureRenderingInfo](#TextureRenderingInfo) | [play_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=play_scroll) | [TextureRenderingInfo](#TextureRenderingInfo) | [info_toast](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=info_toast) | [SoundMeta](#SoundMeta) | [cthulhu_sound](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_sound) | +[ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_smoke](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_smoke) | +[ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_rubble](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_rubble) | float | [cthulhu_disc_ring_angle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_disc_ring_angle) | float | [cthulhu_disc_split_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_disc_split_progress) | float | [cthulhu_disc_y](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_disc_y) | float | [cthulhu_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=cthulhu_timer) | +[ScreenControls](#ScreenControls) | [controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=controls) | int | [selected_menu_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_menu_index) | -float | [menu_text_opacity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=menu_text_opacity) | +int | [sides_hold_down_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sides_hold_down_timer) | +int | [sides_fast_scroll_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sides_fast_scroll_timer) | +bool | [loop](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=loop) | Allow going up from first to last option +int | [menu_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=menu_id) | 0 = main menu, 1 = play, 2 = online +int | [transfer_to_menu_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=transfer_to_menu_id) | float | [menu_text_opacity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=menu_text_opacity) | array<float, 6> | [spear_position](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=spear_position) | array<[SpearDanglerAnimFrames](#SpearDanglerAnimFrames), 6> | [spear_dangler](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=spear_dangler) | +array<int, 6> | [spear_dangle_momentum](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=spear_dangle_momentum) | +array<int, 6> | [spear_dangle_angle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=spear_dangle_angle) | float | [play_scroll_descend_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=play_scroll_descend_timer) | [STRINGID](#Aliases) | [scroll_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text) | +float | [shake_offset_x](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=shake_offset_x) | +float | [shake_offset_y](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=shake_offset_y) | ### ScreenOnlineLoading @@ -2406,23 +2438,11 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -float | [woodpanels_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanels_slidein_timer) | -float | [scroll_unfurl_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_bottom](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottom) | -[TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_top](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top) | -[TextureRenderingInfo](#TextureRenderingInfo) | [left_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_scroll_handle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [right_scroll_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_scroll_handle) | -[STRINGID](#Aliases) | [scroll_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text_id) | -[STRINGID](#Aliases) | [btn_left_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=btn_left_text_id) | -[STRINGID](#Aliases) | [btn_right_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=btn_right_text_id) | -[STRINGID](#Aliases) | [btn_center_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=btn_center_text_id) | -bool | [woodpanel_top_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_top_visible) | -bool | [woodpanel_bottom_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottom_visible) | -bool | [toggle_panels_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=toggle_panels_slidein) | +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | array<[OnlineLobbyScreenPlayer](#OnlineLobbyScreenPlayer), 4> | [players](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=players) | [TextureRenderingInfo](#TextureRenderingInfo) | [background_image](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=background_image) | [TextureRenderingInfo](#TextureRenderingInfo) | [topleft_woodpanel_esc](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc) | -float | [topleft_woodpanel_esc_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein_timer) | +float | [topleft_woodpanel_esc_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein) | float | [character_walk_offset](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=character_walk_offset) | bool | [character_facing_left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=character_facing_left) | int | [move_direction](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=move_direction) | @@ -2436,30 +2456,7 @@ float | [arrow_right_hor_offset](https://github.com/spelunky-fyi/overlunky/searc int | [player_count](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_count) | bool | [searching_for_players](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=searching_for_players) | bool | [show_code_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=show_code_panel) | -float | [enter_code_woodpanel_bottom_slidein_pos](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_woodpanel_bottom_slidein_pos) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_woodpanel_bottom](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_woodpanel_bottom) | -[STRINGID](#Aliases) | [enter_code_btn_right_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_btn_right_text_id) | -bool | [enter_code_woodpanel_top_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_woodpanel_top_visible) | -bool | [enter_code_woodpanel_bottom_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_woodpanel_bottom_visible) | -bool | [enter_code_toggle_panels_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_toggle_panels_slidein) | -int | [selected_character](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_character) | -int | [characters_entered_count](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=characters_entered_count) | -float | [enter_code_topleft_woodpanel_esc_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_topleft_woodpanel_esc_slidein_timer) | -[STRINGID](#Aliases) | [enter_code_banner_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_banner_text_id) | -[STRINGID](#Aliases) | [enter_code_OK_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_OK_text_id) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_main_woodpanel_left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_main_woodpanel_left) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_main_woodpanel_center](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_main_woodpanel_center) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_main_woodpanel_right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_main_woodpanel_right) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_banner](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_banner) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_char_cutouts](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_char_cutouts) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_pointing_hand](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_pointing_hand) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_buttons) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_OK_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_OK_panel) | -float | [enter_code_OK_panel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_OK_panel_slidein_timer) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll_left_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll_left_handle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [enter_code_your_code_scroll_right_handle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=enter_code_your_code_scroll_right_handle) | -nil | [set_code(string code)](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=set_code) | +[ScreenEnterOnlineCode](#ScreenEnterOnlineCode) | [screen_code_input](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_code_input) | ### ScreenOptions @@ -2468,25 +2465,19 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- +bool | [down](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=down) | +bool | [up](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=up) | +int | [direction_input](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=direction_input) | -1 = none, 0 = down, 1 = up +int | [hold_down_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=hold_down_timer) | +int | [fast_scroll_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=fast_scroll_timer) | int | [selected_menu_index](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_menu_index) | -[TextureRenderingInfo](#TextureRenderingInfo) | [brick_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_border) | -float | [top_bottom_woodpanels_velocity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_bottom_woodpanels_velocity) | -float | [top_bottom_woodpanels_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_bottom_woodpanels_progress) | -float | [scroll_unfurl_progress](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_unfurl_progress) | -float | [bottom_woodpanel_y](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_y) | -float | [top_bottom_woodpanels_slide_in_related](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_bottom_woodpanels_slide_in_related) | -[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel_left_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_left_scrollhandle) | -[TextureRenderingInfo](#TextureRenderingInfo) | [top_woodpanel_right_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_right_scrollhandle) | -[STRINGID](#Aliases) | [button_right_caption](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=button_right_caption) | -[STRINGID](#Aliases) | [button_middle_caption](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=button_middle_caption) | -bool | [top_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=top_woodpanel_visible) | -bool | [bottom_woodpanel_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_visible) | -bool | [toggle_woodpanel_slidein_animation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=toggle_woodpanel_slidein_animation) | -bool | [capitalize_top_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=capitalize_top_woodpanel) | -int | [current_menu_1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=current_menu_1) | -int | [current_menu_2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=current_menu_2) | +int | [sides_hold_down_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sides_hold_down_timer) | +int | [sides_fast_scroll_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sides_fast_scroll_timer) | +bool | [loop](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=loop) | Allow going up from first to last option +[MenuScreenPanels](#MenuScreenPanels) | [screen_panels](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_panels) | +int | [menu_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=menu_id) | +int | [transfer_to_menu_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=transfer_to_menu_id) | +bool | [show_apply_button](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=show_apply_button) | [TextureRenderingInfo](#TextureRenderingInfo) | [topleft_woodpanel_esc](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc) | [TextureRenderingInfo](#TextureRenderingInfo) | [brick_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [brick_middlelayer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brick_middlelayer) | @@ -2497,20 +2488,23 @@ int | [current_menu_2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q= [TextureRenderingInfo](#TextureRenderingInfo) | [item_option_arrow_right](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=item_option_arrow_right) | [TextureRenderingInfo](#TextureRenderingInfo) | [tooltip_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=tooltip_background) | [TextureRenderingInfo](#TextureRenderingInfo) | [progressbar_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=progressbar_background) | +[TextureRenderingInfo](#TextureRenderingInfo) | [volume_progressbar_foreground](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=volume_progressbar_foreground) | [TextureRenderingInfo](#TextureRenderingInfo) | [progressbar_foreground](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=progressbar_foreground) | -[TextureRenderingInfo](#TextureRenderingInfo) | [progressbar_position_indicator](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=progressbar_position_indicator) | +[TextureRenderingInfo](#TextureRenderingInfo) | [volume_progressbar_position_indicator](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=volume_progressbar_position_indicator) | [TextureRenderingInfo](#TextureRenderingInfo) | [sectionheader_background](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sectionheader_background) | -float | [topleft_woodpanel_esc_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein_timer) | -float | [text_fadein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_fadein_timer) | -float | [vertical_scroll_effect_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=vertical_scroll_effect_timer) | - -### ScreenPlayerProfile - -Derived from [Screen](#Screen) - - -Type | Name | Description ----- | ---- | ----------- +[TextureRenderingInfo](#TextureRenderingInfo) | [pet_icons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=pet_icons) | In "Gameplay" menu +[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_scroll) | For the code in the sync menu +[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_left_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_left_scrollhandle) | +[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_right_scrollhandle](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_right_scrollhandle) | +float | [topleft_woodpanel_esc_slidein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein) | +float | [text_fadein](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=text_fadein) | +float | [vertical_scroll_effect](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=vertical_scroll_effect) | +bool | [options_visiable](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=options_visiable) | +bool | [show_highlight](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=show_highlight) | Shows the red background behind the option, the scarab on the left and left/right arrows +vector<[STRINGID](#Aliases)> | [tooltip_text](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=tooltip_text) | +bool | [disable_controls](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=disable_controls) | Used for sync progress +int | [sync_progress_state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=sync_progress_state) | 0 - none, 1 - waiting for the code, 2 - code acquired, 3 - sync in progress, 4 - sync completed +float | [credits_progression](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=credits_progression) | ### ScreenPrologue @@ -2551,31 +2545,6 @@ int | [animation_state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q int | [animation_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=animation_timer) | float | [woodpanel_slidedown_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_slidedown_timer) | -### ScreenSeedInput - -Derived from [Screen](#Screen) - - -Type | Name | Description ----- | ---- | ----------- -float | [bottom_woodpanel_slideup_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_slideup_timer) | -float | [bottom_woodpanel_y](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel_y) | -[TextureRenderingInfo](#TextureRenderingInfo) | [bottom_woodpanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=bottom_woodpanel) | -[STRINGID](#Aliases) | [buttons_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons_text_id) | -float | [topleft_woodpanel_esc_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc_slidein_timer) | -[STRINGID](#Aliases) | [scroll_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_text_id) | -[STRINGID](#Aliases) | [start_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_text_id) | -[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_left_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_left_border) | -[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_center](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_center) | -[TextureRenderingInfo](#TextureRenderingInfo) | [main_woodpanel_right_border](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=main_woodpanel_right_border) | -[TextureRenderingInfo](#TextureRenderingInfo) | [seed_letter_cutouts](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=seed_letter_cutouts) | -[TextureRenderingInfo](#TextureRenderingInfo) | [topleft_woodpanel_esc](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=topleft_woodpanel_esc) | -[TextureRenderingInfo](#TextureRenderingInfo) | [start_sidepanel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_sidepanel) | -float | [start_sidepanel_slidein_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_sidepanel_slidein_timer) | -int | [seed_length](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=seed_length) | Current input length (0-8). You probably shouldn't write to this, except to set it to 0. -optional<int> | [get_seed](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=get_seed) | Get the seed currently entered in the seed dialog or nil if nothing is entered. Will also return incomplete seeds, check seed_length to verify it's ready.
- | [set_seed](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=set_seed) | Params: optional seed, optional length
Set the seed entered in the seed dialog. Call without arguments to clear entered seed. Optionally enter a length to set partial seed.
- ### ScreenStateCamp Derived from [Screen](#Screen) @@ -2602,16 +2571,18 @@ Derived from [Screen](#Screen) Type | Name | Description ---- | ---- | ----------- -[TextureRenderingInfo](#TextureRenderingInfo) | [ana_carrying_torch](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ana_carrying_torch) | +[TextureRenderingInfo](#TextureRenderingInfo) | [player_portrait](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_portrait) | [TextureRenderingInfo](#TextureRenderingInfo) | [scroll_bottom_left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll_bottom_left) | [TextureRenderingInfo](#TextureRenderingInfo) | [scrollend_bottom_left](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scrollend_bottom_left) | [TextureRenderingInfo](#TextureRenderingInfo) | [four_ropes](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=four_ropes) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown4](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown4) | +[TextureRenderingInfo](#TextureRenderingInfo) | [gems_above_the_ropes](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=gems_above_the_ropes) | [TextureRenderingInfo](#TextureRenderingInfo) | [four_characters](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=four_characters) | [TextureRenderingInfo](#TextureRenderingInfo) | [left_arrow](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=left_arrow) | [TextureRenderingInfo](#TextureRenderingInfo) | [right_arrow](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=right_arrow) | [TextureRenderingInfo](#TextureRenderingInfo) | [start_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_panel) | -float | [start_panel_slide_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_panel_slide_timer) | +[TextureRenderingInfo](#TextureRenderingInfo) | [go_back_wooden_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=go_back_wooden_panel) | +float | [start_panel_slide](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=start_panel_slide) | +float | [go_back_wooden_panel_slide](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=go_back_wooden_panel_slide) | float | [pulsating_arrows_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=pulsating_arrows_timer) | int | [selected_player](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=selected_player) | int | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | @@ -2634,6 +2605,7 @@ Type | Name | Description [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_backflames_animated](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_backflames_animated) | [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_flames_animated](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_flames_animated) | [ParticleEmitterInfo](#ParticleEmitterInfo) | [particle_torchflame_ash](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=particle_torchflame_ash) | +float | [brightness](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=brightness) | [SoundMeta](#SoundMeta) | [music](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=music) | [SoundMeta](#SoundMeta) | [torch_sound](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=torch_sound) | @@ -2648,6 +2620,7 @@ float | [woodpanel_pos](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q float | [stats_scroll_horizontal_posaa](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_horizontal_posaa) | float | [stats_scroll_vertical_pos](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_vertical_pos) | float | [level_completed_pos](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=level_completed_pos) | +float | [stats_scroll_unfurl_actualvalue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_unfurl_actualvalue) | float | [stats_scroll_unfurl_targetvalue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_unfurl_targetvalue) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel1) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel2) | @@ -2659,7 +2632,7 @@ float | [stats_scroll_unfurl_targetvalue](https://github.com/spelunky-fyi/overlu [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_bottomcutout1](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottomcutout1) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_bottomcutout2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottomcutout2) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_bottomcutout3](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_bottomcutout3) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown_all_forced](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown_all_forced) | +[TextureRenderingInfo](#TextureRenderingInfo) | [scroll](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=scroll) | [TextureRenderingInfo](#TextureRenderingInfo) | [stats_scroll_top_bottom](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_top_bottom) | [TextureRenderingInfo](#TextureRenderingInfo) | [killcount_rounded_rect](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=killcount_rounded_rect) | [TextureRenderingInfo](#TextureRenderingInfo) | [level_completed_panel](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=level_completed_panel) | @@ -2670,6 +2643,7 @@ bool | [hide_press_to_go_next_level](https://github.com/spelunky-fyi/overlunky/s [TextureRenderingInfo](#TextureRenderingInfo) | [speechbubble](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=speechbubble) | [TextureRenderingInfo](#TextureRenderingInfo) | [speechbubble_arrow](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=speechbubble_arrow) | float | [mama_tunnel_fade_targetvalue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mama_tunnel_fade_targetvalue) | +float | [mama_tunnel_fade_targetvalue](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mama_tunnel_fade_targetvalue) | [STRINGID](#Aliases) | [mama_tunnel_text_id](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mama_tunnel_text_id) | bool | [mama_tunnel_choice_visible](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mama_tunnel_choice_visible) | bool | [mama_tunnel_agree_with_gift](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=mama_tunnel_agree_with_gift) | @@ -2681,7 +2655,7 @@ float | [mama_tunnel_face_transparency](https://github.com/spelunky-fyi/overlunk [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_cutout_big_money2](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_cutout_big_money2) | [TextureRenderingInfo](#TextureRenderingInfo) | [woodpanel_cutout_big_money3](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=woodpanel_cutout_big_money3) | [TextureRenderingInfo](#TextureRenderingInfo) | [big_dollar_sign](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=big_dollar_sign) | -[TextureRenderingInfo](#TextureRenderingInfo) | [unknown26](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=unknown26) | +int | [stats_scroll_unfurl_sequence](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=stats_scroll_unfurl_sequence) | array<int, MAX_PLAYERS> | [player_stats_scroll_numeric_value](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_stats_scroll_numeric_value) | array<[TextureRenderingInfo](#TextureRenderingInfo), MAX_PLAYERS> | [player_secondary_icon](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_secondary_icon) | array<[TextureRenderingInfo](#TextureRenderingInfo), MAX_PLAYERS> | [player_icon](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=player_icon) | @@ -2690,6 +2664,7 @@ array<int, MAX_PLAYERS> | [player_icon_index](https://github.com/spelunky- [TextureRenderingInfo](#TextureRenderingInfo) | [hourglasses](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=hourglasses) | [TextureRenderingInfo](#TextureRenderingInfo) | [small_dollar_signs](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=small_dollar_signs) | [Color](#Color) | [this_level_money_color](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=this_level_money_color) | +array<int, MAX_PLAYERS> | [buttons](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=buttons) | ### ScreenWin @@ -2703,13 +2678,6 @@ int | [frame_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=fra int | [animation_state](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=animation_state) | [Entity](#Entity) | [rescuing_ship_entity](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=rescuing_ship_entity) | -### ScreenZoomAnimation - - -Type | Name | Description ----- | ---- | ----------- -float | [zoom_target](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=zoom_target) | - ## Sound types @@ -2809,11 +2777,14 @@ Type | Name | Description [ScreenTitle](#ScreenTitle) | [screen_title](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_title) | [ScreenMenu](#ScreenMenu) | [screen_menu](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_menu) | [ScreenOptions](#ScreenOptions) | [screen_options](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_options) | -[ScreenPlayerProfile](#ScreenPlayerProfile) | [screen_player_profile](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_player_profile) | -[ScreenLeaderboards](#ScreenLeaderboards) | [screen_leaderboards](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_leaderboards) | -[ScreenSeedInput](#ScreenSeedInput) | [screen_seed_input](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_seed_input) | +[Screen](#Screen) | [screen_player_profile](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_player_profile) | It just opens journal +[Screen](#Screen) | [screen_leaderboards](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_leaderboards) | All handled by the [Online](#Online) +[ScreenCodeInput](#ScreenCodeInput) | [screen_seed_input](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_seed_input) | [ScreenCamp](#ScreenCamp) | [screen_camp](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_camp) | [ScreenLevel](#ScreenLevel) | [screen_level](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_level) | +[Screen](#Screen) | [screen_transition](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_transition) | +[Screen](#Screen) | [screen_arena_level](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_arena_level) | +[Screen](#Screen) | [screen_arena_score](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_arena_score) | [ScreenOnlineLoading](#ScreenOnlineLoading) | [screen_online_loading](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_online_loading) | [ScreenOnlineLobby](#ScreenOnlineLobby) | [screen_online_lobby](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_online_lobby) | [PauseUI](#PauseUI) | [pause_ui](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=pause_ui) | @@ -2994,16 +2965,16 @@ int | [camera_layer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=ca int | [layer_transition_timer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=layer_transition_timer) | int | [transition_to_layer](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=transition_to_layer) | [ScreenCharacterSelect](#ScreenCharacterSelect) | [screen_character_select](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_character_select) | -[ScreenTeamSelect](#ScreenTeamSelect) | [screen_team_select](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_team_select) | +[ScreenTeamSelect](#ScreenTeamSelect) | [screen_team_select](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_team_select) | For the arena [ScreenStateCamp](#ScreenStateCamp) | [screen_camp](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_camp) | [ScreenStateLevel](#ScreenStateLevel) | [screen_level](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_level) | [ScreenTransition](#ScreenTransition) | [screen_transition](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_transition) | [ScreenDeath](#ScreenDeath) | [screen_death](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_death) | [ScreenWin](#ScreenWin) | [screen_win](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_win) | -[ScreenCredits](#ScreenCredits) | [screen_credits](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_credits) | -[ScreenScores](#ScreenScores) | [screen_scores](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_scores) | +[ScreenCredits](#ScreenCredits) | [screen_credits](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_credits) | The spaceship minigame +[ScreenScores](#ScreenScores) | [screen_scores](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_scores) | Landing on the moon after win [ScreenConstellation](#ScreenConstellation) | [screen_constellation](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_constellation) | -[ScreenRecap](#ScreenRecap) | [screen_recap](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_recap) | +[ScreenRecap](#ScreenRecap) | [screen_recap](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_recap) | Journal after CO win [ScreenArenaStagesSelect](#ScreenArenaStagesSelect) | [screen_arena_stages_select](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_arena_stages_select) | [ScreenArenaIntro](#ScreenArenaIntro) | [screen_arena_intro](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_arena_intro) | [ScreenArenaLevel](#ScreenArenaLevel) | [screen_arena_level](https://github.com/spelunky-fyi/overlunky/search?l=Lua&q=screen_arena_level) | diff --git a/src/game_api/game_manager.hpp b/src/game_api/game_manager.hpp index 036154fc8..7ce23b72d 100644 --- a/src/game_api/game_manager.hpp +++ b/src/game_api/game_manager.hpp @@ -11,16 +11,15 @@ struct SaveData; class ScreenCamp; class ScreenIntro; -class ScreenLeaderboards; +class Screen; class ScreenLevel; class ScreenLogo; class ScreenMenu; class ScreenOnlineLoading; class ScreenOnlineLobby; class ScreenOptions; -class ScreenPlayerProfile; class ScreenPrologue; -class ScreenSeedInput; +class ScreenCodeInput; class ScreenTitle; struct JournalUI; struct PauseUI; @@ -35,6 +34,7 @@ struct JournalPopupUI uint32_t entry_to_show; // use the odd entry of the left hand page uint32_t timer; float slide_position; + uint8_t unknown; }; struct SaveRelated @@ -43,6 +43,11 @@ struct SaveRelated JournalPopupUI journal_popup_ui; }; +struct BGMUnknown +{ + std::array unknown; // probably wrong size +}; + struct BackgroundMusic { BackgroundSound* game_startup; @@ -64,10 +69,10 @@ struct BackgroundMusic uint8_t unknown17; uint8_t unknown18; uint8_t unknown19; - uint8_t unknown20; - int8_t skip[2400]; // 600 floats, mostly seem to be 1.0 - float idle_counter; - uint32_t unknown22; + uint8_t padding_probably; + std::array unknown21; // They continously go from 1 to 0 and back as a one big table, from first one to the last one, each change is one tick counted by the unknown22 + float idle_counter; // counts down at the start of a level, then reacts to the player movement controls + uint32_t unknown22; // some timer (counts continuously) }; struct KeyboardKey @@ -101,14 +106,14 @@ struct RawInput struct InputDevice { // No idea what these actually do, better not to expose this anyway - bool unknown1; - bool unknown2; - bool menu_input; + bool unknown1; // is_keyboard ? + bool unknown2; // is_controller ? + bool menu_input; // keyboard doesn't seam to care about this bool lost_connection; int8_t input_index; uint8_t padding2[3]; uint32_t buttons; - // a lot more stuff + uint8_t controller_index; // for XInput used in XInputSetState }; struct GameProps @@ -132,18 +137,30 @@ struct GameProps // uint8_t padding_probably1[3]; - int32_t unknown12; // -1 - int8_t unknown13; // -1 + int32_t next_player_entrence; // unsure? + int8_t unknown13a; // -1 + int8_t unknown13b; // bool? + + // uint8_t padding_probably2[2]; + + uint32_t unknown14a; + int8_t unknown14b[3]; // -1 - // uint8_t padding_probably2[3]; + // uint8_t padding_probably3; - size_t unknown14; // probably not one thig uint32_t unknown15; - // uint32_t padding_probably3; + // uint32_t padding_probably4; size_t* unknown16; size_t unknwon17; - double unknown18; // counts time or something? only active when the game window is active + std::array unknown18; // counts time or something? only active when the game window is active when there is a player choosen? + int32_t unknown19; + int32_t unknown20; // -1 + size_t unknown21; + size_t unknown22; + bool unknown23; + + // seam like only garbage below }; struct GameManager @@ -164,14 +181,16 @@ struct GameManager ScreenTitle* screen_title; ScreenMenu* screen_menu; ScreenOptions* screen_options; - ScreenPlayerProfile* screen_player_profile; - ScreenLeaderboards* screen_leaderboards; - ScreenSeedInput* screen_seed_input; + /// It just opens journal + Screen* screen_player_profile; + /// All handled by the Online + Screen* screen_leaderboards; + ScreenCodeInput* screen_seed_input; size_t unknown_screen_character_select; // available in State size_t unknown_screen_team_select; // available in State ScreenCamp* screen_camp; ScreenLevel* screen_level; - size_t* screen_transition; // available in State, but it's a different object! this one only has a render_timer + Screen* screen_transition; // available in State, but it's a different object! this one only has a render_timer size_t unknown_screen_death; // available in State size_t unknown_screen_spaceship; // (also not) available in State size_t unknown_screen_win; // available in State @@ -184,13 +203,23 @@ struct GameManager size_t unknown_screen_arena_items; // available in State size_t unknown_screen_arena_select; // available in State size_t unknown_screen_arena_intro; // available in State - size_t* screen_arena_level; // also available in State, but it's a different object! this one only has a render_timer, no UI parts - size_t* unknown_screen_arena_score; // available in State + Screen* screen_arena_level; // also available in State, but it's a different object! Seams to only call pause function at the start, probably for the intro stuff + Screen* screen_arena_score; // available in State ScreenOnlineLoading* screen_online_loading; ScreenOnlineLobby* screen_online_lobby; PauseUI* pause_ui; JournalUI* journal_ui; BackgroundSound* main_menu_music; + float layer_transition; // menus, going inwards/backwards + float layer; + int8_t transition_timer; + bool unknown31; + // uint8_t padding_probably1[2]; + uint32_t unknown33; + bool unknown34; + bool unknown35; + // uint8_t padding_probably2[2]; + // 3 * 4 bytes more maybe? }; GameManager* get_game_manager(); diff --git a/src/game_api/movable.hpp b/src/game_api/movable.hpp index be63d573b..8badf0250 100644 --- a/src/game_api/movable.hpp +++ b/src/game_api/movable.hpp @@ -137,11 +137,11 @@ class Movable : public Entity /// Return true if the entity is allowed to jump, even midair. Return false and can't jump, except from ladders apparently. virtual bool can_jump() = 0; // 37 - virtual void get_collision_info(CollisionInfo*) = 0; // 38 + virtual void get_collision_info(CollisionInfo* dest) = 0; // 38 virtual float sprint_factor() = 0; // 39 virtual void calculate_jump_height() = 0; // 40, when disabled, jump height is very high virtual std::unordered_map& get_animation_map() = 0; // 41 - virtual void apply_velocity(Vec2* velocities) = 0; // 42, param is pointer to an array of two floats: velocity x and y + virtual void apply_velocity(Vec2* velocities, bool) = 0; // 42, param is pointer to an array of two floats: velocity x and y, could be returninig something /// Returns stomp damage based on shoes and fall time virtual int8_t stomp_damage() = 0; // 43, calculates the amount of stomp damage applied (checks spike shoes, movable.state and stand_counter resulting in different damage values) virtual int8_t stomp_damage_trampoline() = 0; // 44, simply jumps to the 43rd virtual function, aka stomp_damage... diff --git a/src/game_api/render_api.cpp b/src/game_api/render_api.cpp index 407e357e2..3a09653b4 100644 --- a/src/game_api/render_api.cpp +++ b/src/game_api/render_api.cpp @@ -432,7 +432,7 @@ void RenderAPI::draw_screen_texture(Texture* texture, Quad source, Quad dest, Co typedef void render_func(TextureRenderingInfo*, uint8_t, const char**, Color*); static render_func* rf = (render_func*)(offset); - rf(&tri, shader, texture->name, &color); + rf(&tri, shader, texture == nullptr ? nullptr : texture->name, &color); } } @@ -443,7 +443,7 @@ void RenderAPI::draw_screen_texture(Texture* texture, TextureRenderingInfo tri, { typedef void render_func(TextureRenderingInfo*, uint8_t, const char**, Color*); static render_func* rf = (render_func*)(offset); - rf(&tri, shader, texture->name, &color); + rf(&tri, shader, texture == nullptr ? nullptr : texture->name, &color); } } diff --git a/src/game_api/screen.cpp b/src/game_api/screen.cpp index 895870ec9..1050d7a66 100644 --- a/src/game_api/screen.cpp +++ b/src/game_api/screen.cpp @@ -109,31 +109,6 @@ void Screen::unhook(std::uint32_t id) } } -void ScreenOnlineLobby::set_code(const std::string& code) -{ - if (code.length() != 8) - { - characters_entered_count = 0; - return; - } - std::string code_upper = code; - std::transform(code_upper.begin(), code_upper.end(), code_upper.begin(), [](unsigned char c) - { return (unsigned char)std::toupper(c); }); - - for (size_t x = 0; x < 8; ++x) - { - const unsigned char c = code.at(x); - auto valid = (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'); - if (!valid) - { - characters_entered_count = 0; - return; - } - code_chars[x] = c; - } - characters_entered_count = 8; -} - Screen* get_screen_ptr(uint32_t screen_id) { auto game_manager = get_game_manager(); @@ -394,3 +369,35 @@ void show_journal(JOURNALUI_PAGE_SHOWN chapter, uint32_t page) gm->journal_ui->flipping_to_page = page; } } + +std::optional ScreenCodeInput::get_seed() +{ + if (code_length == 0) + return std::nullopt; + std::wstringstream ss; + std::wstring seed_str; + for (uint8_t i = 0; i < code_length; ++i) + seed_str.push_back((wchar_t)(code_chars[i])); + ss << std::hex << seed_str; + uint32_t seed{0}; + ss >> seed; + return seed; +} + +void ScreenCodeInput::set_seed(std::optional seed, std::optional length) +{ + uint8_t len = length.value_or(8); + if (len > 8) + len = 8; + if (seed.has_value()) + { + std::wstringstream ss; + ss << std::uppercase << std::hex << std::setw(len) << std::setfill(L'0') << seed.value(); + memcpy(code_chars, ss.str().c_str(), len * 2); + code_length = len; + } + else + { + code_length = 0; + } +} diff --git a/src/game_api/screen.hpp b/src/game_api/screen.hpp index be6156eb2..2200623c2 100644 --- a/src/game_api/screen.hpp +++ b/src/game_api/screen.hpp @@ -17,6 +17,56 @@ struct SoundMeta; struct MultiLineTextRendering; class Entity; +struct MenuScreenPanels +{ + float woodpanels_velocity; + float woodpanels_progress; + float scroll_unfurl_progress; + float bottom_woodpanel_speed_multiplayer; + float bottom_woodpanel_y_offset; // maybe a resolution thing? + TextureRenderingInfo bottom_woodpanel; + TextureRenderingInfo top_woodpanel; + TextureRenderingInfo scroll; + TextureRenderingInfo top_woodpanel_left_scrollhandle; + TextureRenderingInfo top_woodpanel_right_scrollhandle; + + STRINGID scroll_text; + STRINGID bottom_left_text; + STRINGID bottom_right_text; + STRINGID bottom_middle_text; + bool top_woodpanel_visible; + bool bottom_woodpanel_visible; + bool toggle_woodpanel_slidein_animation; + bool capitalize_scroll_text; +}; + +struct ScreenControls +{ + bool up; + bool down; + bool left; + bool right; + /// -1 - none, 0 - UP, 1 - DOWN, 2 - LEFT, 3 - RIGHT + uint32_t direction_input; + /// Delay after which fast scroll activates (can stop at different value, only matters when you hold down the direction button) + uint32_t hold_down_timer; + uint32_t fast_scroll_timer; +}; + +// probably common thing, right now only used in the arena screen +struct ScreenZoomAnimation +{ + float unknown1; + float unknown2; + float unknown3; + float unknown4; + float unknown5; + uint32_t image; /* unsure*/ // probably wrong + uint32_t unknown6; + float zoom_timer; + float zoom_target; +}; + class Screen { public: @@ -49,13 +99,16 @@ class ScreenLogo : public Screen // ID: 0 TextureRenderingInfo logo_mossmouth; TextureRenderingInfo logo_blitworks; TextureRenderingInfo logo_fmod; + /// 0 - mossmouth, 1 - blitworks, 2 - fmod, 3 - end (next screen) + uint32_t state; + uint32_t timer; }; class ScreenIntro : public Screen // ID: 1 { public: - TextureRenderingInfo unknown4; - float darkness; + TextureRenderingInfo blackout_background; + float blackout_alpha; /// ends the intro immediately if set to false bool active; /// skips prologue and goes straight to the title screen after the intro @@ -86,8 +139,8 @@ class ScreenTitle : public Screen // ID: 3 ParticleEmitterInfo* particle_torchflame_backflames_animated; ParticleEmitterInfo* particle_torchflame_flames_animated; ParticleEmitterInfo* particle_torchflame_ash; - uint32_t unknown7; - float unknown8; + uint8_t unknown7a; // random very short timer that doesn't seam to do anything + float brightness; SoundMeta* music; SoundMeta* torch_sound; }; @@ -98,19 +151,49 @@ struct SpearDanglerAnimFrames uint32_t row; }; +struct MenuOption +{ + // return and first param are the same, pointer on stack, it really seam to be just two 32bit fields + // int is normally set to 0x2B and float to 0, if the third parameter is not 2, then the function sets first to 0, and the float to float max, + using OptionSelect = std::pair&(std::pair&, Screen* src, uint8_t); + + STRINGID option_name; + float y_position; + float brigthness; // 1.0 for selected item, 0 for non selected + bool enabled; // only visual thing, locks brigthness at 0 + // uint8_t padding_probably[3] + + OptionSelect* select; // called as soon as you hit enter on the selected option + // function is expected to play the select sound + // for main menu it also stops the cthulhu_sound (call kill(true) and set the pointer to null) when leaving the menu to different screen +}; + class ScreenMenu : public Screen // ID: 4 { public: - float unknown4; - float unknown5; + using ScreenTransition = void(); + + float backlayer_transition_speed; + float frontlayer_transition_speed; float unknown6; float unknown7; - float unknown8; - float unknown9; + float unknown8; // middle layer related? + uint32_t some_unknown_state; // 5 in main menu, 1 when going to different screen float unknown10; - float unknown11; - float unknown12; - uint32_t unknown13; + float zoom_in_progress; + float zoom_limit; + /// 0: "cthulhu_pre_movement", + /// 1: "cthulhu_rotating", + /// 2: "cthulhu_separating", + /// 3: "cthulhu_lowering", + /// 4: "cthulhu_transition_to_menu", + /// 5: "return_from_backlayer", + /// 6: "highlight_selection", + /// 7: "idle", + /// 8: "to_submenu", + /// 9: "to_backlayer", + /// 10: "backlayer_idle" + uint32_t state; TextureRenderingInfo tunnel_background; TextureRenderingInfo cthulhu_disc; TextureRenderingInfo tunnel_ring_darkbrown; @@ -125,96 +208,122 @@ class ScreenMenu : public Screen // ID: 4 TextureRenderingInfo spear_dangler_related; TextureRenderingInfo play_scroll; TextureRenderingInfo info_toast; - TextureRenderingInfo unknown15; + TextureRenderingInfo unknown15; // probably xbox username scroll uint32_t unknown16a; - uint32_t unknown16b; + uint32_t padding_probably1; SoundMeta* cthulhu_sound; - size_t unknown16e; // std::list ? - size_t unknown16f; // - float unknown16g; - float unknown16h; - float unknown16i; - float unknown16j; - size_t unknown16k; - std::vector unknown17; // pointers, vector of vectors? menu options? - std::vector unknown20; // unsure what's inside - size_t buttons; - uint32_t unknown23; - uint32_t unknown24; - uint32_t selected_menu_index; - uint32_t unknown26; - uint32_t unknown27; - uint32_t unknown28; - uint32_t unknown29a; - uint32_t unknown29b; + ParticleEmitterInfo* particle_smoke; + ParticleEmitterInfo* particle_rubble; + float cthulhu_disc_ring_angle; + float cthulhu_disc_split_progress; + float cthulhu_disc_y; + float cthulhu_timer; + ScreenTransition* screen_transition; // called when you leave the menu, just sets the state.screen_next and stuff + + custom_vector> menu_tree; // always have the vector of the main menu, and then any deeper level menu, like Play or Online + custom_vector menu_index_order; // to go back to, probably needs a better name + ScreenControls controls; + uint32_t selected_menu_index; // more like highlighted + uint8_t sides_hold_down_timer; + uint8_t sides_fast_scroll_timer; + + // uint8_t padding_probably[2]; + + uint32_t unknown27; // pressed direction? 1 = left, 0 = right, no neutral, stays at the last state + /// Allow going up from first to last option + bool loop; + + // uint8_t padding_probably[3]; + + /// 0 = main menu, 1 = play, 2 = online + uint32_t menu_id; + uint32_t transfer_to_menu_id; float menu_text_opacity; std::array spear_position; std::array spear_dangler; std::array spear_dangle_momentum; std::array spear_dangle_angle; - float play_scroll_descend_timer; + float play_scroll_descend; STRINGID scroll_text; + float shake_offset_x; + float shake_offset_y; + bool unknown30; + // maybe two more 32bit values? hard to tell +}; - float cthulhu_disc_ring_angle; - float cthulhu_disc_split_progress; - float cthulhu_disc_y; - float cthulhu_timer; +struct GraphicandAudioSettings +{ + uint32_t fullscreen_resolution_id; // depends on the GetMonitorInfo etc. + uint32_t windowed_resolution_id; // depends on the GetMonitorInfo etc. + /// 100 = 1.0 + uint32_t resolution_scale; + /// 0 = Fullscreen, 1 = Borderless Windowed, 2 = Windowed + uint8_t display_mode; + uint8_t unknown33; + bool unknown34; // if true, first input just sets it to false and does nothing else + uint8_t unknown35; + bool unknown36; // if it's not false, it's set to false and nothing else touches it ??? + // uint8_t padding_probably6[3]; + uint32_t unknown37; + uint32_t unknown38; }; class ScreenOptions : public Screen // ID: 5 { public: - std::vector unknown4; // menu options? - std::vector unknown7; // dunno - - uint32_t selected_menu_index; - uint16_t key_press_timer; // might be two separate values - - uint16_t unknown12; - - bool moved_left; + custom_vector> menu_tree; + custom_vector menu_index_order; // to go back to, probably needs a better name + + // yes, this is just ScreenControls but up/down are reversed and not left/right for some reason + // also ScreenControls could include the selected_index, but in arena screen it's above and here it's below :| + bool down; + bool up; + // bool unused[2] + /// -1 = none, 0 = down, 1 = up + int32_t direction_input; + uint32_t hold_down_timer; + uint32_t fast_scroll_timer; + + uint32_t selected_menu_index; // more like highlighted + uint8_t sides_hold_down_timer; + uint8_t sides_fast_scroll_timer; + // uint16_t probably_padding1; + uint32_t unknown0; // pressed direction? 1 = left, 0 = right, no neutral, stays at the last state + /// Allow going up from first to last option + bool loop; + + // uint8_t probably_padding2[3]; + + // this is probably similar stuff that is at the beginning of ScreenMenu, transitions from and to menus + float unknown1; + float unknown2; + float unknown3; + float unknown4; + float unknown5; + uint32_t unknown6; + uint32_t unknown7; // speed related? + float unknown8; + float unknown9; + float unknown10; + float unknown11; + float unknown12; + float unknown13; + float unknown14; + uint32_t unknown15; + int32_t unknown16; + float unknown17; + float unknown18; - uint8_t padding1; - uint8_t padding2; - uint8_t padding3; - uint8_t unknown14; - uint8_t unknown15; - uint8_t unknown16; - uint8_t unknown17; + MenuScreenPanels screen_panels; - TextureRenderingInfo brick_border; - float top_bottom_woodpanels_velocity; - float top_bottom_woodpanels_progress; // set to 0 to start sliding in - float scroll_unfurl_progress; // set to 0 to start unfurl - float unknown21; - float bottom_woodpanel_y; - float unknown23; - float top_bottom_woodpanels_slide_in_related; - TextureRenderingInfo bottom_woodpanel; - TextureRenderingInfo top_woodpanel; - TextureRenderingInfo unknown27; - TextureRenderingInfo top_woodpanel_left_scrollhandle; - TextureRenderingInfo top_woodpanel_right_scrollhandle; - - STRINGID button_right_caption; - STRINGID button_middle_caption; - bool top_woodpanel_visible; - bool bottom_woodpanel_visible; - bool toggle_woodpanel_slidein_animation; - bool capitalize_top_woodpanel; - uint32_t unknown28; - uint32_t current_menu_1; - uint32_t current_menu_2; - uint32_t unknown31; - uint32_t unknown32; - uint32_t unknown33; - uint32_t unknown34; - uint32_t unknown35; - uint32_t unknown36; - uint32_t unknown37; - uint32_t unknown38; + uint32_t unknown_state; // 0 = none, 2 = moving between inner menus, 3 = exiting menu options + uint32_t current_menu_id; + uint32_t transfer_to_menu_id; + bool show_apply_button; + // uint8_t padding_probably4[3]; + GraphicandAudioSettings graphic_and_audio; TextureRenderingInfo topleft_woodpanel_esc; TextureRenderingInfo brick_background; @@ -226,79 +335,76 @@ class ScreenOptions : public Screen // ID: 5 TextureRenderingInfo item_option_arrow_right; TextureRenderingInfo tooltip_background; TextureRenderingInfo progressbar_background; // brightness 'progressbar' background texture - TextureRenderingInfo unknown40; - TextureRenderingInfo progressbar_foreground; - TextureRenderingInfo progressbar_position_indicator; - TextureRenderingInfo sectionheader_background; // behind 'GRAPHICS' and 'AUDIO' - - TextureRenderingInfo unknown44; - TextureRenderingInfo unknown45; - float topleft_woodpanel_esc_slidein_timer; - float text_fadein_timer; - float vertical_scroll_effect_timer; - uint8_t unknown49; - uint8_t unknown50; - uint8_t unknown51; -}; - -class ScreenPlayerProfile : public Screen // ID: 6 -{ - public: // not reverse engineered -}; - -class ScreenLeaderboards : public Screen // ID: 7 -{ - public: // not reverse engineered + TextureRenderingInfo volume_progressbar_foreground; + TextureRenderingInfo progressbar_foreground; // the border + TextureRenderingInfo volume_progressbar_position_indicator; + TextureRenderingInfo sectionheader_background; // behind 'GRAPHICS' and 'AUDIO' the black bars + + TextureRenderingInfo unknown44; // could be something else, or just not used in PC version or something + /// In "Gameplay" menu + TextureRenderingInfo pet_icons; + /// For the code in the sync menu + TextureRenderingInfo bottom_scroll; + TextureRenderingInfo bottom_left_scrollhandle; + TextureRenderingInfo bottom_right_scrollhandle; + float topleft_woodpanel_esc_slidein; + float text_fadein; + float vertical_scroll_effect; + uint8_t unknown49; // small random timer + bool options_visiable; + /// Shows the red background behind the option, the scarab on the left and left/right arrows + bool show_highlight; + // uint8_t padding_probably8[5]; + custom_vector unknown50; // holds one 8 byte value, related to choosen opion menu + uint8_t unknown51; // probably bool + // padding_probably10[7]; + custom_vector tooltip_text; + /// Used for sync progress + bool disable_controls; + // uint8_t padding_probably9[3]; + /// 0 - none, 1 - waiting for the code, 2 - code acquired, 3 - sync in progress, 4 - sync completed + uint32_t sync_progress_state; + uint32_t unknown54; // some timer + // uint32_t padding_probably10; + float* credits_progression; }; -class ScreenSeedInput : public Screen // ID: 8 +class ScreenCodeInput : public Screen // ID: 8 { public: - uint16_t unknown4; - uint16_t unknown5; - float bottom_woodpanel_slideup_timer; - float unknown_timer; - float unknown6; - float bottom_woodpanel_y; - TextureRenderingInfo bottom_woodpanel; - TextureRenderingInfo unknown8; - TextureRenderingInfo unknown9; - TextureRenderingInfo unknown10; - TextureRenderingInfo unknown11; - STRINGID unknown12; - STRINGID unknown13; - STRINGID buttons_text_id; - STRINGID unknown15; - uint8_t unknown16; - uint8_t unknown17; - uint8_t unknown18; - uint8_t unknown19; - uint8_t unknown20; - uint8_t unknown21; - uint8_t unknown22; - uint8_t unknown23; - uint32_t unknown24; - uint16_t unknown25; - - uint16_t seed_chars[9]; // utf16 chars + MenuScreenPanels screen_panels; + /// needs to be set before opening the screen to show the correct text at the bottom + bool allow_random; + // uint8_t probably_padding1[3]; + uint32_t selected_button_index; + bool pressed_select; + // uint8_t probably_padding2; + char16_t code_chars[9]; // utf16 chars /// Current input length (0-8). You probably shouldn't write to this, except to set it to 0. - uint16_t seed_length; - uint16_t unknown39; + uint8_t code_length; + // uint8_t probably_padding3[3]; - float topleft_woodpanel_esc_slidein_timer; + float topleft_woodpanel_esc_slidein; STRINGID scroll_text_id; STRINGID start_text_id; TextureRenderingInfo main_woodpanel_left_border; TextureRenderingInfo main_woodpanel_center; TextureRenderingInfo main_woodpanel_right_border; TextureRenderingInfo top_scroll; - TextureRenderingInfo seed_letter_cutouts; - TextureRenderingInfo unknown40; - TextureRenderingInfo unknown41; + TextureRenderingInfo letter_cutouts; + TextureRenderingInfo hand_pointer; + TextureRenderingInfo key_background; TextureRenderingInfo topleft_woodpanel_esc; TextureRenderingInfo start_sidepanel; - float start_sidepanel_slidein_timer; + float start_sidepanel_slidein; + + /// Set the seed entered in the seed dialog. Call without arguments to clear entered seed. Optionally enter a length to set partial seed. + void set_seed(std::optional seed, std::optional length); + /// Get the seed currently entered in the seed dialog or nil if nothing is entered. Will also return incomplete seeds, check seed_length to verify it's ready. + std::optional get_seed(); + + virtual void unknown() = 0; // set seed? sets the game variables in state, for ScreenEnterOnlineCode it just sets the unknown10 }; struct FlyingThing @@ -333,6 +439,12 @@ struct FlyingThing uint32_t unknown22; }; +struct InputsDevice +{ + uint16_t buttons; + uint16_t buttons_previous; +}; + class ScreenCharacterSelect : public Screen // ID: 9 { public: @@ -343,7 +455,7 @@ class ScreenCharacterSelect : public Screen // ID: 9 float main_background_zoom_related1; uint32_t main_background_zoom_related2; uint32_t unknown10; - float main_background_zoom_timer; + float main_background_zoom_progress; float main_background_zoom_target; float blurred_border_zoom; float unknown14; @@ -355,26 +467,10 @@ class ScreenCharacterSelect : public Screen // ID: 9 uint8_t unknown20; uint8_t unknown21; uint8_t unknown22; - float blurred_border_zoom_timer; + float blurred_border_zoom_progress; float blurred_border_zoom_target; - float unknown25; - float top_bottom_woodpanel_slidein_timer; - float top_scroll_unfurl_timer; - float unknown28; - uint32_t unknown29; - uint32_t unknown30; - TextureRenderingInfo bottom_woodpanel; - TextureRenderingInfo top_woodpanel; - TextureRenderingInfo unknown32; - TextureRenderingInfo left_scroll_handle; - TextureRenderingInfo right_scroll_handle; - STRINGID left_button_text_id; - STRINGID right_button_text_id; - STRINGID middle_button_text_id; - bool top_woodpanel_visible; - bool bottom_woodpanel_visible; - bool toggle_woodpanel_slidein_animation; - uint8_t padding1; + + MenuScreenPanels screen_panels; TextureRenderingInfo mine_entrance_background; TextureRenderingInfo character; TextureRenderingInfo character_shadow; @@ -411,33 +507,33 @@ class ScreenCharacterSelect : public Screen // ID: 9 std::array player_quickselect_wiggle_angle; float another_timer; - float topleft_woodpanel_esc_slidein_timer; - float start_panel_slidein_timer; + float topleft_woodpanel_esc_slidein; + float start_panel_slidein; float action_buttons_keycap_size; bool unknown64a; bool unknown64b; bool unknown64c; bool unknown64d; - uint32_t unknown65; + uint32_t next_screen_to_load; bool not_ready_to_start_yet; uint8_t available_mine_entrances; // The rest are boarded off uint8_t amount_of_mine_entrances_activated; - uint8_t unknown66; - size_t reset_func; /* unsure*/ - uint32_t buttons; - TextureRenderingInfo unknown69; // TODO: this is wrong, there's just a bunch of other stuff here, like some run type flags probably (seeded/adventure/daily) and the next screen (camp/level) - - float opacity; + // uint8_t probably_padding1; + size_t* reset_func; /* unsure*/ + uint32_t unknown69; // it's some states, or flags + TextureRenderingInfo screen_blackout; + float blackout_transparency; bool start_pressed; bool transition_to_game_started; - uint8_t unknown71c; - uint8_t unknown71d; + bool disable_buttons; /* unsure */ // hides the buttons on the enrances and disables control (without setting the bool below) + bool disable_controls; uint32_t unknown72; std::array flying_things; uint16_t flying_thing_countdown; // when 0, flying things appear - int16_t unknown79; - uint32_t unknown80; + int16_t unknown79; // negative, counts up to 0 + + // uint32_t probably_padding2; ParticleEmitterInfo* particle_ceilingdust_smoke; ParticleEmitterInfo* particle_ceilingdust_rubble; @@ -450,33 +546,33 @@ class ScreenCharacterSelect : public Screen // ID: 9 ParticleEmitterInfo* particle_torchflame_flames3; ParticleEmitterInfo* particle_torchflame_smoke4; ParticleEmitterInfo* particle_torchflame_flames4; - SoundMeta* sound; + std::array torch_sound; + std::array inputs; + std::array buttons; }; class ScreenTeamSelect : public Screen // ID: 10 { public: - TextureRenderingInfo ana_carrying_torch; + TextureRenderingInfo player_portrait; TextureRenderingInfo scroll_bottom_left; TextureRenderingInfo scrollend_bottom_left; TextureRenderingInfo four_ropes; - TextureRenderingInfo unknown4; + TextureRenderingInfo gems_above_the_ropes; TextureRenderingInfo four_characters; TextureRenderingInfo left_arrow; TextureRenderingInfo right_arrow; TextureRenderingInfo start_panel; - float start_panel_slide_timer; + TextureRenderingInfo go_back_wooden_panel; + float start_panel_slide; + float go_back_wooden_panel_slide; float pulsating_arrows_timer; uint8_t selected_player; uint8_t buttons; bool ready; - uint8_t unknown4d; - uint32_t unknown5; - uint32_t unknown6; - uint32_t unknown7; }; -class ScreenCamp : public Screen // ID: 11 GameManager +class ScreenCamp : public Screen // ID: 11 GameManager, same as ScreenLevel { public: uint8_t buttons; @@ -524,7 +620,7 @@ class ScreenTransition : public Screen // ID: 13 TextureRenderingInfo woodpanel_bottomcutout1; TextureRenderingInfo woodpanel_bottomcutout2; TextureRenderingInfo woodpanel_bottomcutout3; - TextureRenderingInfo unknown_all_forced; + TextureRenderingInfo scroll; TextureRenderingInfo stats_scroll_top_bottom; TextureRenderingInfo killcount_rounded_rect; TextureRenderingInfo level_completed_panel; @@ -546,7 +642,7 @@ class ScreenTransition : public Screen // ID: 13 float mama_tunnel_fade_actualvalue; float mama_tunnel_fade_targetvalue; STRINGID mama_tunnel_text_id; - uint16_t mama_tunnel_text_buffer[256]; // UTF16 string + char16_t mama_tunnel_text_buffer[256]; // UTF16 string bool mama_tunnel_choice_visible; bool mama_tunnel_agree_with_gift; bool mama_tunnel_face_invisible; @@ -560,8 +656,8 @@ class ScreenTransition : public Screen // ID: 13 TextureRenderingInfo big_dollar_sign; TextureRenderingInfo unknown26; - uint16_t string_buffer[130]; // UTF16 string - uint32_t stats_scroll_unfurl_sequence_timer; + char16_t string_buffer[130]; // UTF16 string + uint32_t stats_scroll_unfurl_sequence; uint32_t unknown30; uint32_t unknown31; @@ -579,29 +675,23 @@ class ScreenTransition : public Screen // ID: 13 TextureRenderingInfo hourglasses; TextureRenderingInfo small_dollar_signs; - uint16_t string_buffer_this_level_time[10]; // UTF16 string - uint16_t string_buffer_total_time[10]; // UTF16 string - uint16_t string_buffer_this_level_milliseconds[5]; // UTF16 string - uint16_t string_buffer_total_milliseconds[5]; // UTF16 string - uint16_t string_buffer_this_level_money[10]; // UTF16 string - uint16_t string_buffer_total_money[10]; // UTF16 string + char16_t string_buffer_this_level_time[10]; // UTF16 string + char16_t string_buffer_total_time[10]; // UTF16 string + char16_t string_buffer_this_level_milliseconds[5]; // UTF16 string + char16_t string_buffer_total_milliseconds[5]; // UTF16 string + char16_t string_buffer_this_level_money[10]; // UTF16 string + char16_t string_buffer_total_money[10]; // UTF16 string Color this_level_money_color; - uint8_t unknown41; - uint8_t unknown42; - uint8_t unknown43; - uint8_t unknown44; - uint32_t unknown45; - uint32_t unknown46; - uint32_t unknown47; - uint32_t unknown48; - uint32_t unknown49; + std::array buttons; }; /// The POST render call will only be visible in the polaroid area on the left of the book. The book is apparently drawn on top of that. class ScreenDeath : public Screen // ID: 14 { + public: + size_t unknown; }; class ScreenWin : public Screen // ID: 16 @@ -618,8 +708,6 @@ class ScreenWin : public Screen // ID: 16 Entity* rescuing_ship_entity; size_t unknown8; - uint32_t unknown9; - uint32_t unknown10; }; class ScreenCredits : public Screen // ID: 17 @@ -653,29 +741,17 @@ class ScreenConstellation : public Screen // ID: 19 float* credits_progression; SoundMeta* explosion_and_loop; SoundMeta* music; + size_t unknown; // not sure if it's something actually there, or it's some allocator aliment to memory page or something, seam to happen a lot with the screens }; /// The recap book is drawn on top of the POST render event class ScreenRecap : public Screen // ID: 20 { + public: + uint32_t unknown1; + uint32_t unknown2; }; -struct ScreenZoomAnimation -{ - float unknown1; - float unknown2; - float unknown3; - float unknown4; - float unknown5; - uint32_t image; /* unsure*/ - uint32_t unknown6; - float zoom_timer; - float zoom_target; -}; - -// For the ARENA screens, see screen_arena.hpp -// Putting them here makes the compiler run out of heap space - class ScreenOnlineLoading : public Screen // ID: 28 { public: @@ -685,53 +761,40 @@ class ScreenOnlineLoading : public Screen // ID: 28 struct OnlineLobbyScreenPlayer { - uint8_t unknown1; + /// 16 = PC, 17 = Discord, 18 = Steam, 19 = Xbox, 32 = switch, 48 = PS, 49 = PS again? + uint8_t platform_icon; // werid numbers, anything else results in the startd PC icon, maybe it's some actual id /// 0 - Ana Spelunky, 1 - Margaret Tunnel, 2 - Colin Northward, 3 - Roffy D. Sloth.. and so on. Same order as in ENT_TYPE uint8_t character; bool ready; - uint8_t unknown2; + bool searching; +}; + +class ScreenEnterOnlineCode : public ScreenCodeInput // no ID, very special screen +{ + public: + int32_t unknown10; // -1 + TextureRenderingInfo enter_code_your_code_scroll; + TextureRenderingInfo enter_code_your_code_scroll_left_handle; + TextureRenderingInfo enter_code_your_code_scroll_right_handle; + uint32_t unknown11; + TextureRenderingInfo unknown12; + uint32_t unknown13; + TextureRenderingInfo unknown14; + TextureRenderingInfo unknown15; }; class ScreenOnlineLobby : public Screen // ID: 29 { public: - uint8_t unknown2; - uint8_t unknown3; - uint8_t unknown4; - uint8_t unknown5; - float woodpanels_slidein_timer; - float scroll_unfurl_timer; - uint32_t unknown8; - uint32_t unknown9; - TextureRenderingInfo woodpanel_bottom; - TextureRenderingInfo woodpanel_top; - TextureRenderingInfo unknown13; - TextureRenderingInfo left_scroll_handle; - TextureRenderingInfo right_scroll_handle; - STRINGID scroll_text_id; - STRINGID btn_left_text_id; - STRINGID btn_right_text_id; - STRINGID btn_center_text_id; - bool woodpanel_top_visible; - bool woodpanel_bottom_visible; - bool toggle_panels_slidein; - bool unknown21; + MenuScreenPanels screen_panels; std::array players; TextureRenderingInfo background_image; - size_t unknown22; - size_t unknown23; - size_t unknown24; - size_t unknown25; - size_t unknown26; - size_t unknown27; - size_t unknown28; - size_t unknown29; - size_t unknown30; + TextureRenderingInfo unknown35; TextureRenderingInfo unknown36; TextureRenderingInfo unknown37; float unknown38; TextureRenderingInfo topleft_woodpanel_esc; - float topleft_woodpanel_esc_slidein_timer; + float topleft_woodpanel_esc_slidein; float character_walk_offset; bool character_facing_left; int8_t move_direction; @@ -757,83 +820,59 @@ class ScreenOnlineLobby : public Screen // ID: 29 uint8_t unknown51; uint32_t unknown53; - // The following is actually class ScreenEnterOnlineCode but it has no direct pointer in GameManager - // or State. In assembly this pointer is accessed by &ScreenOnlineLobby + sizeof(ScreenOnlineLobby) - size_t enter_code_screen_vftable; - float enter_code_render_timer; - uint32_t unknown54; - float unknown56; - float enter_code_woodpanel_bottom_slidein_pos; - float unknown58; - float unknown59; - float unknown60; - TextureRenderingInfo enter_code_woodpanel_bottom; - TextureRenderingInfo unknown61; - TextureRenderingInfo unknown62; - TextureRenderingInfo unknown63; - TextureRenderingInfo unknown64; - STRINGID text_id_1; - STRINGID text_id_2; - STRINGID enter_code_btn_right_text_id; - STRINGID text_id_4; - bool enter_code_woodpanel_top_visible; - bool enter_code_woodpanel_bottom_visible; - bool enter_code_toggle_panels_slidein; - bool unknown68; - uint32_t unknown69; - uint32_t selected_character; - bool unknown71a; - uint8_t unknown71b; - uint16_t code_chars[8]; - uint16_t code_char_terminator; - uint32_t characters_entered_count; - float enter_code_topleft_woodpanel_esc_slidein_timer; - STRINGID enter_code_banner_text_id; - STRINGID enter_code_OK_text_id; - TextureRenderingInfo enter_code_main_woodpanel_left; - TextureRenderingInfo enter_code_main_woodpanel_center; - TextureRenderingInfo enter_code_main_woodpanel_right; - TextureRenderingInfo enter_code_banner; - TextureRenderingInfo enter_code_char_cutouts; - TextureRenderingInfo enter_code_pointing_hand; - TextureRenderingInfo enter_code_buttons; - TextureRenderingInfo unknown85; - TextureRenderingInfo enter_code_OK_panel; - float enter_code_OK_panel_slidein_timer; - int32_t unknown87; - TextureRenderingInfo enter_code_your_code_scroll; - TextureRenderingInfo enter_code_your_code_scroll_left_handle; - TextureRenderingInfo enter_code_your_code_scroll_right_handle; + // can't put ScreenEnterOnlineCode here as it's abstract class + // no idea how the game code apperently allows this, unless this is some compiler opimaization bullshit - void set_code(const std::string& code); + size_t screen_code_input; +}; + +struct MenuInsert +{ + float x; + float y; + float unknown1; // text_disappearance_speed? + float text_spacing; + float unknown5; + uint32_t unknown6; + float unknown7; + float unknown8; + uint32_t unknown9; + float unknown10; + std::vector unknown11; // menu options, probably just a bunch of floats, suprisingly it's not TextRenderingInfo + size_t* unknown12; + size_t* unknown13; // function + uint32_t selected_menu_index; + bool loop; + bool unknown16; + bool disable_controls; }; struct PauseUI { float menu_slidein_progress; - TextureRenderingInfo blurred_background; + TextureRenderingInfo blackout_background; TextureRenderingInfo woodpanel_left; TextureRenderingInfo woodpanel_middle; TextureRenderingInfo woodpanel_right; TextureRenderingInfo woodpanel_top; TextureRenderingInfo scroll; - uint32_t unknown2; - size_t unknown3; - + // uint32_t probably_padding1; + MenuInsert* menu; + /// Prompt background TextureRenderingInfo confirmation_panel; - - uint32_t unknown5; - uint32_t unknown6; - size_t unknown7; - uint32_t unknown8; - - uint32_t previously_selected_menu_index; - uint32_t buttons_actions; - uint32_t buttons_movement; - uint8_t unknown11a; - int8_t unknown11b; - uint16_t unknown12; + MultiLineTextRendering* prompt_question; + MenuInsert* prompt_menu; + bool unknown8; + // uint8_t probably_padding2[3]; + /// It's set wh game displays the prompt + uint32_t selected_option; + bool prompt_visible; + std::array buttons_actions; // per player, so no default menu input + std::array buttons_movement; // per player, so no default menu input + int8_t unknown11; + // uint16_t probably_padding3; + /// 0 - Invisible, 1 - Sliding down, 2 - Visible, 3 - Sliding up uint32_t visibility; }; @@ -844,7 +883,7 @@ class JournalPage public: TextureRenderingInfo background; uint32_t page_number; - uint32_t unknown2; + uint32_t unknown2; // probably padding template T* as() @@ -868,34 +907,14 @@ class JournalPageProgress : public JournalPage { public: TextureRenderingInfo coffeestain_top; - - virtual ~JournalPageProgress() = 0; }; class JournalPageJournalMenu : public JournalPage { public: - float unknown3; - float unknown4; - float unknown5; - float unknown6; - float unknown7; - float unknown8; - float unknown9; - float unknown10; - uint32_t unknown11; - float unknown12; - size_t unknown13; - size_t unknown15; - size_t unknown17; - size_t unknown19; - size_t unknown21; - uint32_t selected_menu_index; - uint32_t unknown23; + MenuInsert menu; TextRenderingInfo* journal_text_info; TextureRenderingInfo completion_badge; - - virtual ~JournalPageJournalMenu() = 0; }; class JournalPageDiscoverable : public JournalPage @@ -916,16 +935,12 @@ class JournalPageDiscoverable : public JournalPage MultiLineTextRendering* text_lines; TextRenderingInfo* entry_text_info; TextRenderingInfo* chapter_title_text_info; - - virtual ~JournalPageDiscoverable() = 0; }; class JournalPagePlaces : public JournalPageDiscoverable { public: TextureRenderingInfo main_image; - - virtual ~JournalPagePlaces() = 0; }; class JournalPagePeople : public JournalPageDiscoverable @@ -934,8 +949,6 @@ class JournalPagePeople : public JournalPageDiscoverable TextureRenderingInfo character_background; TextureRenderingInfo character_icon; TextureRenderingInfo character_drawing; - - virtual ~JournalPagePeople() = 0; }; class JournalPageBestiary : public JournalPageDiscoverable @@ -948,8 +961,6 @@ class JournalPageBestiary : public JournalPageDiscoverable TextRenderingInfo* defeated_value_text_info; TextRenderingInfo* killedby_text_info; TextRenderingInfo* killedby_value_text_info; - - virtual ~JournalPageBestiary() = 0; }; class JournalPageItems : public JournalPageDiscoverable @@ -957,8 +968,6 @@ class JournalPageItems : public JournalPageDiscoverable public: TextureRenderingInfo item_icon; TextureRenderingInfo item_background; - - virtual ~JournalPageItems() = 0; }; class JournalPageTraps : public JournalPageDiscoverable @@ -966,15 +975,11 @@ class JournalPageTraps : public JournalPageDiscoverable public: TextureRenderingInfo trap_icon; TextureRenderingInfo trap_background; - - virtual ~JournalPageTraps() = 0; }; class JournalPageStory : public JournalPage { public: - virtual ~JournalPageStory() = 0; - static JournalPageStory* construct(bool right_side, uint32_t page_number); }; @@ -983,38 +988,18 @@ class JournalPageFeats : public JournalPage public: TextRenderingInfo* chapter_title_text_info; TextureRenderingInfo feat_icons; - - virtual ~JournalPageFeats() = 0; }; class JournalPageDeathCause : public JournalPage { public: TextRenderingInfo* death_cause_text_info; - - virtual ~JournalPageDeathCause() = 0; }; class JournalPageDeathMenu : public JournalPage { public: - float unknown3; - float unknown4; - float unknown5; - float unknown6; - float unknown7; - float unknown8; - float unknown9; - float unknown10; - uint32_t unknown11; - float unknown12; - size_t unknown13; - size_t unknown14; - size_t unknown15; - size_t unknown16; - size_t unknown17; - uint32_t selected_menu_index; - uint32_t unknown18; + MenuInsert menu; TextRenderingInfo* game_over_text_info; TextRenderingInfo* level_text_info; TextRenderingInfo* level_value_text_info; @@ -1022,14 +1007,11 @@ class JournalPageDeathMenu : public JournalPage TextRenderingInfo* money_value_text_info; TextRenderingInfo* time_text_info; TextRenderingInfo* time_value_text_info; - - virtual ~JournalPageDeathMenu() = 0; }; class JournalPageRecap : public JournalPage { public: - virtual ~JournalPageRecap() = 0; }; class JournalPagePlayerProfile : public JournalPage @@ -1059,8 +1041,6 @@ class JournalPagePlayerProfile : public JournalPage TextRenderingInfo* average_time_value_text_info; TextRenderingInfo* best_time_text_info; TextRenderingInfo* best_time_value_text_info; - - virtual ~JournalPagePlayerProfile() = 0; }; class JournalPageLastGamePlayed : public JournalPage @@ -1076,8 +1056,6 @@ class JournalPageLastGamePlayed : public JournalPage TextRenderingInfo* time_value_text_info; uint32_t sticker_count; std::array stickers; - - virtual ~JournalPageLastGamePlayed() = 0; }; using JOURNALUI_PAGE_SHOWN = uint8_t; // NoAlias @@ -1087,8 +1065,8 @@ struct JournalUI uint32_t state; JOURNALUI_PAGE_SHOWN chapter_shown; - uint8_t unknown1; - uint16_t unknown2; + // uint8_t padding_probably1[3]; + /// Stores pages loaded into memeory. It's not cleared after the journal is closed or when you go back to the main (menu) page. /// Use `:get_type()` to chcek page type and cast it correctly (see ON.[RENDER_PRE_JOURNAL_PAGE](#ON-RENDER_PRE_JOURNAL_PAGE)) custom_vector pages; @@ -1122,8 +1100,6 @@ struct JournalUI uint32_t unknown28; size_t unknown29; - float unknown31; - uint32_t unknown30; }; Screen* get_screen_ptr(uint32_t screen_id); diff --git a/src/game_api/screen_arena.hpp b/src/game_api/screen_arena.hpp index 0c61dfc9a..7079169c0 100644 --- a/src/game_api/screen_arena.hpp +++ b/src/game_api/screen_arena.hpp @@ -1,13 +1,14 @@ #pragma once +#include "containers/custom_unordered_map.hpp" #include "screen.hpp" struct ArenaRulesString { - STRINGID text_1_id; // StringsTableID - STRINGID text_2_id; // StringsTableID - STRINGID text_3_id; // StringsTableID - STRINGID text_4_id; // StringsTableID + STRINGID text_1; // StringsTableID + STRINGID text_2; // StringsTableID + STRINGID text_3; // StringsTableID + STRINGID text_4; // StringsTableID uint8_t unknown1; uint8_t unknown2; uint8_t unknown3; @@ -21,24 +22,7 @@ class ScreenArenaMenu : public Screen // ID: 21 public: ScreenZoomAnimation brick_background_animation; ScreenZoomAnimation blurry_border_animation; - float unknown6; - float top_woodpanel_slidein_timer; - float top_scroll_unfurl_timer; - float unknown11; - float unknown12; - TextureRenderingInfo unknown13; - TextureRenderingInfo woodpanel_top; - TextureRenderingInfo unknown15; - TextureRenderingInfo left_scroll_handle; - TextureRenderingInfo right_scroll_handle; - STRINGID scroll_text_id; // StringsTableID - STRINGID unknown17_text_id; // StringsTableID - STRINGID unknown18_text_id; // StringsTableID - STRINGID unknown19_text_id; // StringsTableID - bool top_woodpanel_visible; - bool bottom_woodpanel_visible; - bool woodpanels_toggle; - bool unknown20d; + MenuScreenPanels screen_panels; TextureRenderingInfo brick_background; TextureRenderingInfo blurry_border; TextureRenderingInfo blurry_border2; @@ -64,42 +48,22 @@ class ScreenArenaMenu : public Screen // ID: 21 TextureRenderingInfo bottom_left_bricks; TextureRenderingInfo top_left_esc_panel; TextureRenderingInfo next_panel; - ArenaRulesString* option_captions; // 17 in total - size_t unknown46; - size_t unknown47; - bool unknown48; - uint8_t unknown49; - uint8_t unknown50; - uint8_t unknown51; + custom_vector option_captions; // I assume it's custom, it's filled with the screen construction + + uint32_t unknown48; // load state? uint32_t unknown52; float center_panels_hor_slide_position; float esc_next_panels_slide_timer; float main_panel_vertical_scroll_position; - uint32_t selected_option_index; + uint32_t selected_option_index; // more like highlighted + ScreenControls controls; + uint8_t unknown57[3]; // some states, like screen depth }; class ScreenArenaStagesSelect : public Screen // ID: 22 and 24 { public: - uint16_t unknown3a; - uint16_t unknown3b; - float woodenpanel_top_slidein_timer; - float woodenpanel_top_scroll_unfurl_timer; - uint32_t unknown6; - uint32_t unknown7; - TextureRenderingInfo unknown8; - TextureRenderingInfo woodenpanel_top; - TextureRenderingInfo unknown10; - TextureRenderingInfo woodenpanel_top_left_scroll; - TextureRenderingInfo woodenpanel_top_right_scroll; - STRINGID text_id_1; // Strings table ID - STRINGID text_id_2; // Strings table ID - STRINGID text_id_3; // Strings table ID - STRINGID text_id_4; // Strings table ID - bool woodenpanel_top_visible; - bool woodenpanel_bottom_visible; - bool woodenpanels_toggle; - bool unknown11d; + MenuScreenPanels screen_panels; uint16_t buttons; uint16_t padding1; TextureRenderingInfo brick_background; @@ -127,53 +91,24 @@ class ScreenArenaStagesSelect : public Screen // ID: 22 and 24 TextureRenderingInfo players_turn_scroll; TextureRenderingInfo players_turn_scroll_handle; TextureRenderingInfo grid_player_icon; - float unknown30; - float unknown31; - float unknown32; - uint32_t unknown33; - uint32_t unknown34; - uint32_t unknown35; - uint32_t unknown36; - uint32_t unknown37; - uint32_t unknown38; - uint32_t unknown39; - uint32_t unknown40; - uint32_t unknown41; - uint32_t unknown42; - uint32_t unknown43; - uint32_t unknown44; - uint32_t unknown45; - uint32_t unknown46; - uint32_t unknown47; + float unknown30; // padding probably + custom_unordered_map stages_to_gray_out; // key is the stage, float is how gray out it is + + uint32_t unknown47; // load state? uint32_t unknown48; - uint32_t unknown49; - uint32_t unknown50; - uint32_t unknown51; - uint32_t selected_stage_index; + uint8_t unknown49; + uint8_t padding_probably[3]; + float panels_slide_from_both_sides; + float visibility_all_stages; + uint32_t selected_stage_index; // more like highlighted + ScreenControls controls; + uint8_t unknown57[3]; // some states, like screen depth }; class ScreenArenaItems : public Screen // ID: 23 { public: - float unknown4; - float woodpanel_top_slidein_timer; - float woodpanel_top_scroll_unfurl_timer; - float unknown7; - float unknown8; - TextureRenderingInfo unknown9; - TextureRenderingInfo woodpanel_top; - TextureRenderingInfo unknown11; - TextureRenderingInfo top_scroll_left_handle; - TextureRenderingInfo top_scroll_right_handle; - STRINGID scroll_text_id; // Strings table ID - STRINGID text_id_2; // Strings table ID - STRINGID text_id_3; // Strings table ID - STRINGID text_id_4; // Strings table ID - bool woodpanel_top_visible; - bool woodpanel_bottom_visible; - bool woodpanels_toggle; - bool unknown15; - + MenuScreenPanels screen_panels; TextureRenderingInfo brick_background; TextureRenderingInfo black_background_bottom_right; TextureRenderingInfo woodpanel_bottom; @@ -190,24 +125,14 @@ class ScreenArenaItems : public Screen // ID: 23 TextureRenderingInfo item_off_gray_overlay; TextureRenderingInfo esc_woodpanel; - float unknown22; - float unknown23; - size_t powerup_deactivation_related; - uint8_t powerup_deactivation_counter; /* unsure */ - uint8_t padding1; - uint16_t padding2; - uint32_t unknown25; - size_t unknown26; - size_t unknown27; - size_t unknown28; - uint32_t unknown29; - uint32_t unknown30; - uint32_t unknown31; - uint32_t unknown32; - uint32_t unknown33; + custom_unordered_map items_to_gray_out; + + float unknown33; float center_panels_horizontal_slide_position; float esc_panel_slide_timer; - uint32_t selected_item_index; + uint32_t selected_item_index; // more like highlighted + ScreenControls controls; + uint8_t unknown57[3]; // some states, like screen depth }; class ScreenArenaIntro : public Screen // ID: 25 @@ -217,10 +142,11 @@ class ScreenArenaIntro : public Screen // ID: 25 TextureRenderingInfo background_colors; TextureRenderingInfo vertical_lines; TextureRenderingInfo vertical_line_electricity_effect; - TextureRenderingInfo unknown_all_forced; + TextureRenderingInfo unknown_all_forced; // probably scroll TextureRenderingInfo left_scroll; TextureRenderingInfo right_scroll; - float scroll_unfurl_timer; + TextureRenderingInfo unknown1; + float scroll_unfurl; bool waiting; // when false, the cutscene ends and gameplay starts uint8_t unknown10b; uint8_t unknown10c; @@ -234,6 +160,9 @@ class ScreenArenaIntro : public Screen // ID: 25 uint8_t unknown14c; uint8_t unknown14d; uint32_t countdown; // when 0, continues to gameplay + // uint32_t padding_probably + + std::array particles; }; class ScreenArenaLevel : public Screen // ID: 26 @@ -291,23 +220,51 @@ class ScreenArenaLevel : public Screen // ID: 26 TextureRenderingInfo unknown51; TextureRenderingInfo unknown52; TextureRenderingInfo unknown53; + std::array particles; +}; + +struct ScreenArenaScoreLavaBubble +{ + float x; + float y; + int16_t timer1; + uint8_t timer2; // counts down when the timer1 = -1 + bool visible; +}; + +struct ScreenArenaScoreUnknown +{ + // this is mostly a guess + TextureRenderingInfo texture; + float some_x; // when not in use set to 9999.0 + float some_y; // when not in use set to 9999.0 + float unknown4; + float unknown5; + float unknown6; + float unknown7; + float unknown8; // when not in use set to float max + float unknown9; // when not in use set to float max + float unknown10; + float unknown11; + float unknown12; }; class ScreenArenaScore : public Screen // ID: 27 { public: - uint16_t unknown3a; + uint16_t unknown3a; // probably float uint16_t unknown3b; - float woodpanel_slide_timer; - float scroll_unfurl_timer; + float woodpanel_slide; + float scroll_unfurl; uint32_t unknown6; uint32_t unknown7; uint32_t unknown8; float unknown9; + // similar to the MenuScreenPanels ? TextureRenderingInfo unknown10; TextureRenderingInfo woodpanel; - TextureRenderingInfo unknown_all_forced; + TextureRenderingInfo unknown_all_forced; // probably scroll TextureRenderingInfo woodpanel_left_scroll; TextureRenderingInfo woodpanel_right_scroll; @@ -331,7 +288,7 @@ class ScreenArenaScore : public Screen // ID: 27 TextureRenderingInfo unknown25; TextureRenderingInfo score_counter; TextureRenderingInfo unknown27; - TextureRenderingInfo lava_bubbles; /* unsure */ + TextureRenderingInfo lava_bubbles; std::array player_won; float victory_jump_y_pos; @@ -348,4 +305,8 @@ class ScreenArenaScore : public Screen // ID: 27 std::array player_crushing_pillar_height; std::array player_create_giblets; float next_sidepanel_slidein_timer; + // uint32_t padding_probably; + std::array particles; + std::array lava_bubbles_positions; + std::array unknown45; // only used if one of the players win, probably the flying down confetti/featers }; diff --git a/src/game_api/script/lua_vm.cpp b/src/game_api/script/lua_vm.cpp index 9c16ab769..431609537 100644 --- a/src/game_api/script/lua_vm.cpp +++ b/src/game_api/script/lua_vm.cpp @@ -2573,11 +2573,9 @@ end // `page:as_journal_page_bestiary()` // `page:as_journal_page_items()` // `page:as_journal_page_traps()` - // `page:as_journal_page_story()` // `page:as_journal_page_feats()` // `page:as_journal_page_deathcause()` // `page:as_journal_page_deathmenu()` - // `page:as_journal_page_recap()` // `page:as_journal_page_playerprofile()` // `page:as_journal_page_lastgameplayed()` // SPEECH_BUBBLE diff --git a/src/game_api/script/usertypes/game_manager_lua.cpp b/src/game_api/script/usertypes/game_manager_lua.cpp index 5c9879ca3..e6c5cdcc2 100644 --- a/src/game_api/script/usertypes/game_manager_lua.cpp +++ b/src/game_api/script/usertypes/game_manager_lua.cpp @@ -66,6 +66,9 @@ void register_usertypes(sol::state& lua) gamemanager_type["screen_seed_input"] = &GameManager::screen_seed_input; gamemanager_type["screen_camp"] = &GameManager::screen_camp; gamemanager_type["screen_level"] = &GameManager::screen_level; + gamemanager_type["screen_transition"] = &GameManager::screen_transition; + gamemanager_type["screen_arena_level"] = &GameManager::screen_arena_level; + gamemanager_type["screen_arena_score"] = &GameManager::screen_arena_score; gamemanager_type["screen_online_loading"] = &GameManager::screen_online_loading; gamemanager_type["screen_online_lobby"] = &GameManager::screen_online_lobby; gamemanager_type["pause_ui"] = &GameManager::pause_ui; @@ -97,12 +100,6 @@ void register_usertypes(sol::state& lua) &JournalPopupUI::timer, "slide_position", &JournalPopupUI::slide_position); - lua.new_usertype( - "InputDevice", - "input_index", - &InputDevice::input_index, - "buttons", - &InputDevice::buttons); lua.new_usertype( "GameProps", /// NoDoc diff --git a/src/game_api/script/usertypes/screen_arena_lua.cpp b/src/game_api/script/usertypes/screen_arena_lua.cpp index 14dc47b0b..03f9f23d8 100644 --- a/src/game_api/script/usertypes/screen_arena_lua.cpp +++ b/src/game_api/script/usertypes/screen_arena_lua.cpp @@ -8,6 +8,7 @@ #include // for move, declval #include // for min, max +#include "particles.hpp" // #include "screen.hpp" // for ScreenZoomAnimation, Screen (ptr only) #include "screen_arena.hpp" // for ScreenArenaMenu, ScreenArenaStagesSelect @@ -16,22 +17,7 @@ namespace NScreenArena void register_usertypes(sol::state& lua) { auto screenarenamenu_type = lua.new_usertype("ScreenArenaMenu", sol::base_classes, sol::bases()); - screenarenamenu_type["brick_background_animation"] = &ScreenArenaMenu::brick_background_animation; - screenarenamenu_type["blurry_border_animation"] = &ScreenArenaMenu::blurry_border_animation; - screenarenamenu_type["top_woodpanel_slidein_timer"] = &ScreenArenaMenu::top_woodpanel_slidein_timer; - screenarenamenu_type["top_scroll_unfurl_timer"] = &ScreenArenaMenu::top_scroll_unfurl_timer; - screenarenamenu_type["unknown13"] = &ScreenArenaMenu::unknown13; - screenarenamenu_type["woodpanel_top"] = &ScreenArenaMenu::woodpanel_top; - screenarenamenu_type["unknown15"] = &ScreenArenaMenu::unknown15; - screenarenamenu_type["left_scroll_handle"] = &ScreenArenaMenu::left_scroll_handle; - screenarenamenu_type["right_scroll_handle"] = &ScreenArenaMenu::right_scroll_handle; - screenarenamenu_type["scroll_text_id"] = &ScreenArenaMenu::scroll_text_id; - screenarenamenu_type["unknown17_text_id"] = &ScreenArenaMenu::unknown17_text_id; - screenarenamenu_type["unknown18_text_id"] = &ScreenArenaMenu::unknown18_text_id; - screenarenamenu_type["unknown19_text_id"] = &ScreenArenaMenu::unknown19_text_id; - screenarenamenu_type["top_woodpanel_visible"] = &ScreenArenaMenu::top_woodpanel_visible; - screenarenamenu_type["bottom_woodpanel_visible"] = &ScreenArenaMenu::bottom_woodpanel_visible; - screenarenamenu_type["woodpanels_toggle"] = &ScreenArenaMenu::woodpanels_toggle; + screenarenamenu_type["screen_panels"] = &ScreenArenaMenu::screen_panels; screenarenamenu_type["brick_background"] = &ScreenArenaMenu::brick_background; screenarenamenu_type["blurry_border"] = &ScreenArenaMenu::blurry_border; screenarenamenu_type["blurry_border2"] = &ScreenArenaMenu::blurry_border2; @@ -61,25 +47,10 @@ void register_usertypes(sol::state& lua) screenarenamenu_type["esc_next_panels_slide_timer"] = &ScreenArenaMenu::esc_next_panels_slide_timer; screenarenamenu_type["main_panel_vertical_scroll_position"] = &ScreenArenaMenu::main_panel_vertical_scroll_position; screenarenamenu_type["selected_option_index"] = &ScreenArenaMenu::selected_option_index; - - lua.new_usertype( - "ScreenZoomAnimation", - "zoom_target", - &ScreenZoomAnimation::zoom_target); + screenarenamenu_type["controls"] = &ScreenArenaMenu::controls; auto screenarenastagesselect_type = lua.new_usertype("ScreenArenaStagesSelect", sol::base_classes, sol::bases()); - screenarenastagesselect_type["woodenpanel_top_slidein_timer"] = &ScreenArenaStagesSelect::woodenpanel_top_slidein_timer; - screenarenastagesselect_type["woodenpanel_top_scroll_unfurl_timer"] = &ScreenArenaStagesSelect::woodenpanel_top_scroll_unfurl_timer; - screenarenastagesselect_type["woodenpanel_top"] = &ScreenArenaStagesSelect::woodenpanel_top; - screenarenastagesselect_type["woodenpanel_top_left_scroll"] = &ScreenArenaStagesSelect::woodenpanel_top_left_scroll; - screenarenastagesselect_type["woodenpanel_top_right_scroll"] = &ScreenArenaStagesSelect::woodenpanel_top_right_scroll; - screenarenastagesselect_type["text_id_1"] = &ScreenArenaStagesSelect::text_id_1; - screenarenastagesselect_type["text_id_2"] = &ScreenArenaStagesSelect::text_id_2; - screenarenastagesselect_type["text_id_3"] = &ScreenArenaStagesSelect::text_id_3; - screenarenastagesselect_type["text_id_4"] = &ScreenArenaStagesSelect::text_id_4; - screenarenastagesselect_type["woodenpanel_top_visible"] = &ScreenArenaStagesSelect::woodenpanel_top_visible; - screenarenastagesselect_type["woodenpanel_bottom_visible"] = &ScreenArenaStagesSelect::woodenpanel_bottom_visible; - screenarenastagesselect_type["woodenpanels_toggle"] = &ScreenArenaStagesSelect::woodenpanels_toggle; + screenarenastagesselect_type["screen_panels"] = &ScreenArenaStagesSelect::screen_panels; screenarenastagesselect_type["buttons"] = &ScreenArenaStagesSelect::buttons; screenarenastagesselect_type["brick_background"] = &ScreenArenaStagesSelect::brick_background; screenarenastagesselect_type["info_black_background"] = &ScreenArenaStagesSelect::info_black_background; @@ -106,23 +77,14 @@ void register_usertypes(sol::state& lua) screenarenastagesselect_type["players_turn_scroll"] = &ScreenArenaStagesSelect::players_turn_scroll; screenarenastagesselect_type["players_turn_scroll_handle"] = &ScreenArenaStagesSelect::players_turn_scroll_handle; screenarenastagesselect_type["grid_player_icon"] = &ScreenArenaStagesSelect::grid_player_icon; + screenarenastagesselect_type["stages_to_gray_out"] = &ScreenArenaStagesSelect::stages_to_gray_out; + screenarenastagesselect_type["panels_slide_from_both_sides"] = &ScreenArenaStagesSelect::panels_slide_from_both_sides; + screenarenastagesselect_type["visibility_all_stages"] = &ScreenArenaStagesSelect::visibility_all_stages; screenarenastagesselect_type["selected_stage_index"] = &ScreenArenaStagesSelect::selected_stage_index; + screenarenastagesselect_type["controls"] = &ScreenArenaStagesSelect::controls; auto screenarenaitems_type = lua.new_usertype("ScreenArenaItems", sol::base_classes, sol::bases()); - screenarenaitems_type["woodpanel_top_slidein_timer"] = &ScreenArenaItems::woodpanel_top_slidein_timer; - screenarenaitems_type["woodpanel_top_scroll_unfurl_timer"] = &ScreenArenaItems::woodpanel_top_scroll_unfurl_timer; - screenarenaitems_type["unknown9"] = &ScreenArenaItems::unknown9; - screenarenaitems_type["woodpanel_top"] = &ScreenArenaItems::woodpanel_top; - screenarenaitems_type["unknown11"] = &ScreenArenaItems::unknown11; - screenarenaitems_type["top_scroll_left_handle"] = &ScreenArenaItems::top_scroll_left_handle; - screenarenaitems_type["top_scroll_right_handle"] = &ScreenArenaItems::top_scroll_right_handle; - screenarenaitems_type["scroll_text_id"] = &ScreenArenaItems::scroll_text_id; - screenarenaitems_type["text_id_2"] = &ScreenArenaItems::text_id_2; - screenarenaitems_type["text_id_3"] = &ScreenArenaItems::text_id_3; - screenarenaitems_type["text_id_4"] = &ScreenArenaItems::text_id_4; - screenarenaitems_type["woodpanel_top_visible"] = &ScreenArenaItems::woodpanel_top_visible; - screenarenaitems_type["woodpanel_bottom_visible"] = &ScreenArenaItems::woodpanel_bottom_visible; - screenarenaitems_type["woodpanels_toggle"] = &ScreenArenaItems::woodpanels_toggle; + screenarenaitems_type["screen_panels"] = &ScreenArenaItems::screen_panels; screenarenaitems_type["brick_background"] = &ScreenArenaItems::brick_background; screenarenaitems_type["black_background_bottom_right"] = &ScreenArenaItems::black_background_bottom_right; screenarenaitems_type["woodpanel_bottom"] = &ScreenArenaItems::woodpanel_bottom; @@ -138,24 +100,26 @@ void register_usertypes(sol::state& lua) screenarenaitems_type["item_equipped_badge"] = &ScreenArenaItems::item_equipped_badge; screenarenaitems_type["item_off_gray_overlay"] = &ScreenArenaItems::item_off_gray_overlay; screenarenaitems_type["esc_woodpanel"] = &ScreenArenaItems::esc_woodpanel; + screenarenaitems_type["items_to_gray_out"] = &ScreenArenaItems::items_to_gray_out; screenarenaitems_type["center_panels_horizontal_slide_position"] = &ScreenArenaItems::center_panels_horizontal_slide_position; screenarenaitems_type["esc_panel_slide_timer"] = &ScreenArenaItems::esc_panel_slide_timer; screenarenaitems_type["selected_item_index"] = &ScreenArenaItems::selected_item_index; + screenarenaitems_type["controls"] = &ScreenArenaItems::controls; auto screenarenaintro_type = lua.new_usertype("ScreenArenaIntro", sol::base_classes, sol::bases()); screenarenaintro_type["players"] = &ScreenArenaIntro::players; screenarenaintro_type["background_colors"] = &ScreenArenaIntro::background_colors; screenarenaintro_type["vertical_lines"] = &ScreenArenaIntro::vertical_lines; screenarenaintro_type["vertical_line_electricity_effect"] = &ScreenArenaIntro::vertical_line_electricity_effect; - screenarenaintro_type["unknown_all_forced"] = &ScreenArenaIntro::unknown_all_forced; screenarenaintro_type["left_scroll"] = &ScreenArenaIntro::left_scroll; screenarenaintro_type["right_scroll"] = &ScreenArenaIntro::right_scroll; - screenarenaintro_type["scroll_unfurl_timer"] = &ScreenArenaIntro::scroll_unfurl_timer; + screenarenaintro_type["scroll_unfurl"] = &ScreenArenaIntro::scroll_unfurl; screenarenaintro_type["waiting"] = &ScreenArenaIntro::waiting; screenarenaintro_type["names_opacity"] = &ScreenArenaIntro::names_opacity; screenarenaintro_type["line_electricity_effect_timer"] = &ScreenArenaIntro::line_electricity_effect_timer; screenarenaintro_type["state"] = &ScreenArenaIntro::state; screenarenaintro_type["countdown"] = &ScreenArenaIntro::countdown; + screenarenaintro_type["particles"] = &ScreenArenaIntro::particles; lua.new_usertype( "ScreenArenaLevel", @@ -165,15 +129,28 @@ void register_usertypes(sol::state& lua) &ScreenArenaLevel::get_ready_gray_background, "get_ready_outline", &ScreenArenaLevel::get_ready_outline, + "particles", + &ScreenArenaLevel::particles, sol::base_classes, sol::bases()); + lua.new_usertype( + "ScreenArenaScoreLavaBubble", + "x", + &ScreenArenaScoreLavaBubble::x, + "y", + &ScreenArenaScoreLavaBubble::y, + "timer1", + &ScreenArenaScoreLavaBubble::timer1, + "timer2", + &ScreenArenaScoreLavaBubble::timer2, + "visible", + &ScreenArenaScoreLavaBubble::visible); + auto screenarenascore_type = lua.new_usertype("ScreenArenaScore", sol::base_classes, sol::bases()); - screenarenascore_type["woodpanel_slide_timer"] = &ScreenArenaScore::woodpanel_slide_timer; - screenarenascore_type["scroll_unfurl_timer"] = &ScreenArenaScore::scroll_unfurl_timer; - screenarenascore_type["unknown10"] = &ScreenArenaScore::unknown10; + screenarenascore_type["woodpanel_slide"] = &ScreenArenaScore::woodpanel_slide; + screenarenascore_type["scroll_unfurl"] = &ScreenArenaScore::scroll_unfurl; screenarenascore_type["woodpanel"] = &ScreenArenaScore::woodpanel; - screenarenascore_type["unknown_all_forced"] = &ScreenArenaScore::unknown_all_forced; screenarenascore_type["woodpanel_left_scroll"] = &ScreenArenaScore::woodpanel_left_scroll; screenarenascore_type["woodpanel_right_scroll"] = &ScreenArenaScore::woodpanel_right_scroll; screenarenascore_type["text_id_1"] = &ScreenArenaScore::text_id_1; @@ -189,15 +166,11 @@ void register_usertypes(sol::state& lua) screenarenascore_type["bottom_lava"] = &ScreenArenaScore::bottom_lava; screenarenascore_type["players"] = &ScreenArenaScore::players; screenarenascore_type["player_shadows"] = &ScreenArenaScore::player_shadows; - screenarenascore_type["unknown24"] = &ScreenArenaScore::unknown24; - screenarenascore_type["unknown25"] = &ScreenArenaScore::unknown25; screenarenascore_type["score_counter"] = &ScreenArenaScore::score_counter; - screenarenascore_type["unknown27"] = &ScreenArenaScore::unknown27; screenarenascore_type["lava_bubbles"] = &ScreenArenaScore::lava_bubbles; screenarenascore_type["player_won"] = &ScreenArenaScore::player_won; screenarenascore_type["victory_jump_y_pos"] = &ScreenArenaScore::victory_jump_y_pos; screenarenascore_type["victory_jump_velocity"] = &ScreenArenaScore::victory_jump_velocity; - screenarenascore_type["animation_frame"] = &ScreenArenaScore::animation_frame; screenarenascore_type["squash_and_celebrate"] = &ScreenArenaScore::squash_and_celebrate; screenarenascore_type["player_ready"] = &ScreenArenaScore::player_ready; screenarenascore_type["next_transition_timer"] = &ScreenArenaScore::next_transition_timer; @@ -205,5 +178,7 @@ void register_usertypes(sol::state& lua) screenarenascore_type["player_crushing_pillar_height"] = &ScreenArenaScore::player_crushing_pillar_height; screenarenascore_type["player_create_giblets"] = &ScreenArenaScore::player_create_giblets; screenarenascore_type["next_sidepanel_slidein_timer"] = &ScreenArenaScore::next_sidepanel_slidein_timer; + screenarenascore_type["particles"] = &ScreenArenaScore::particles; + screenarenascore_type["lava_bubbles_positions"] = &ScreenArenaScore::lava_bubbles_positions; } } // namespace NScreenArena diff --git a/src/game_api/script/usertypes/screen_lua.cpp b/src/game_api/script/usertypes/screen_lua.cpp index b278fd425..f6ed822b2 100644 --- a/src/game_api/script/usertypes/screen_lua.cpp +++ b/src/game_api/script/usertypes/screen_lua.cpp @@ -31,6 +31,43 @@ void register_usertypes(sol::state& lua) /// Open the journal on a chapter and page. The main Journal spread is pages 0..1, so most chapters start at 2. Use even page numbers only. lua["show_journal"] = show_journal; + auto screenpanels_type = lua.new_usertype("MenuScreenPanels"); + screenpanels_type["woodpanels_velocity"] = &MenuScreenPanels::woodpanels_velocity; + screenpanels_type["woodpanels_progress"] = &MenuScreenPanels::woodpanels_progress; + screenpanels_type["scroll_unfurl_progress"] = &MenuScreenPanels::scroll_unfurl_progress; + screenpanels_type["bottom_woodpanel_speed_multiplayer"] = &MenuScreenPanels::bottom_woodpanel_speed_multiplayer; + screenpanels_type["bottom_woodpanel_y_offset"] = &MenuScreenPanels::bottom_woodpanel_y_offset; + screenpanels_type["bottom_woodpanel"] = &MenuScreenPanels::bottom_woodpanel; + screenpanels_type["top_woodpanel"] = &MenuScreenPanels::top_woodpanel; + screenpanels_type["scroll"] = &MenuScreenPanels::scroll; + screenpanels_type["top_woodpanel_left_scrollhandle"] = &MenuScreenPanels::top_woodpanel_left_scrollhandle; + screenpanels_type["top_woodpanel_right_scrollhandle"] = &MenuScreenPanels::top_woodpanel_right_scrollhandle; + screenpanels_type["scroll_text"] = &MenuScreenPanels::scroll_text; + screenpanels_type["bottom_left_text"] = &MenuScreenPanels::bottom_left_text; + screenpanels_type["bottom_right_text"] = &MenuScreenPanels::bottom_right_text; + screenpanels_type["bottom_middle_text"] = &MenuScreenPanels::bottom_middle_text; + screenpanels_type["top_woodpanel_visible"] = &MenuScreenPanels::top_woodpanel_visible; + screenpanels_type["bottom_woodpanel_visible"] = &MenuScreenPanels::bottom_woodpanel_visible; + screenpanels_type["toggle_woodpanel_slidein_animation"] = &MenuScreenPanels::toggle_woodpanel_slidein_animation; + screenpanels_type["capitalize_scroll_text"] = &MenuScreenPanels::capitalize_scroll_text; + + lua.new_usertype( + "ScreenControls", + "up", + &ScreenControls::up, + "down", + &ScreenControls::down, + "left", + &ScreenControls::left, + "right", + &ScreenControls::right, + "direction_input", + &ScreenControls::direction_input, + "hold_down_timer", + &ScreenControls::hold_down_timer, + "fast_scroll_timer", + &ScreenControls::fast_scroll_timer); + lua.new_usertype( "Screen", "render_timer", @@ -44,9 +81,7 @@ void register_usertypes(sol::state& lua) lua["Screen"]["as_screen_title"] = &Screen::as; lua["Screen"]["as_screen_menu"] = &Screen::as; lua["Screen"]["as_screen_options"] = &Screen::as; - lua["Screen"]["as_screen_player_profile"] = &Screen::as; - lua["Screen"]["as_screen_leaderboards"] = &Screen::as; - lua["Screen"]["as_screen_seed_input"] = &Screen::as; + lua["Screen"]["as_screen_seed_input"] = &Screen::as; lua["Screen"]["as_screen_character_select"] = &Screen::as; lua["Screen"]["as_screen_team_select"] = &Screen::as; lua["Screen"]["as_screen_camp"] = &Screen::as; @@ -78,15 +113,19 @@ void register_usertypes(sol::state& lua) &ScreenLogo::logo_blitworks, "logo_fmod", &ScreenLogo::logo_fmod, + "state", + &ScreenLogo::state, + "timer", + &ScreenLogo::timer, sol::base_classes, sol::bases()); lua.new_usertype( "ScreenIntro", - "unknown4", - &ScreenIntro::unknown4, - "darkness", - &ScreenIntro::darkness, + "blackout_background", + &ScreenIntro::blackout_background, + "blackout_alpha", + &ScreenIntro::blackout_alpha, "active", &ScreenIntro::active, "skip_prologue", @@ -133,6 +172,8 @@ void register_usertypes(sol::state& lua) &ScreenTitle::particle_torchflame_flames_animated, "particle_torchflame_ash", &ScreenTitle::particle_torchflame_ash, + "brightness", + &ScreenTitle::brightness, "music", &ScreenTitle::music, "torch_sound", @@ -148,6 +189,7 @@ void register_usertypes(sol::state& lua) &SpearDanglerAnimFrames::row); auto screenmenu_type = lua.new_usertype("ScreenMenu", sol::base_classes, sol::bases()); + screenmenu_type["state"] = &ScreenMenu::state; screenmenu_type["tunnel_background"] = &ScreenMenu::tunnel_background; screenmenu_type["cthulhu_disc"] = &ScreenMenu::cthulhu_disc; screenmenu_type["tunnel_ring_darkbrown"] = &ScreenMenu::tunnel_ring_darkbrown; @@ -163,38 +205,43 @@ void register_usertypes(sol::state& lua) screenmenu_type["play_scroll"] = &ScreenMenu::play_scroll; screenmenu_type["info_toast"] = &ScreenMenu::info_toast; screenmenu_type["cthulhu_sound"] = &ScreenMenu::cthulhu_sound; + screenmenu_type["particle_smoke"] = &ScreenMenu::particle_smoke; + screenmenu_type["particle_rubble"] = &ScreenMenu::particle_rubble; screenmenu_type["cthulhu_disc_ring_angle"] = &ScreenMenu::cthulhu_disc_ring_angle; screenmenu_type["cthulhu_disc_split_progress"] = &ScreenMenu::cthulhu_disc_split_progress; screenmenu_type["cthulhu_disc_y"] = &ScreenMenu::cthulhu_disc_y; screenmenu_type["cthulhu_timer"] = &ScreenMenu::cthulhu_timer; + screenmenu_type["controls"] = &ScreenMenu::controls; screenmenu_type["selected_menu_index"] = &ScreenMenu::selected_menu_index; - screenmenu_type["menu_text_opacity"] = &ScreenMenu::menu_text_opacity; + screenmenu_type["sides_hold_down_timer"] = &ScreenMenu::sides_hold_down_timer; + screenmenu_type["sides_fast_scroll_timer"] = &ScreenMenu::sides_fast_scroll_timer; + screenmenu_type["loop"] = &ScreenMenu::loop; + screenmenu_type["menu_id"] = &ScreenMenu::menu_id; + screenmenu_type["transfer_to_menu_id"] = &ScreenMenu::transfer_to_menu_id; screenmenu_type["menu_text_opacity"] = &ScreenMenu::menu_text_opacity; screenmenu_type["spear_position"] = &ScreenMenu::spear_position; screenmenu_type["spear_dangler"] = &ScreenMenu::spear_dangler; - screenmenu_type["play_scroll_descend_timer"] = &ScreenMenu::play_scroll_descend_timer; + screenmenu_type["spear_dangle_momentum"] = &ScreenMenu::spear_dangle_momentum; + screenmenu_type["spear_dangle_angle"] = &ScreenMenu::spear_dangle_angle; + screenmenu_type["play_scroll_descend_timer"] = &ScreenMenu::play_scroll_descend; screenmenu_type["scroll_text"] = &ScreenMenu::scroll_text; + screenmenu_type["shake_offset_x"] = &ScreenMenu::shake_offset_x; + screenmenu_type["shake_offset_y"] = &ScreenMenu::shake_offset_y; auto screenoptions_type = lua.new_usertype("ScreenOptions", sol::base_classes, sol::bases()); + screenoptions_type["down"] = &ScreenOptions::down; + screenoptions_type["up"] = &ScreenOptions::up; + screenoptions_type["direction_input"] = &ScreenOptions::direction_input; + screenoptions_type["hold_down_timer"] = &ScreenOptions::hold_down_timer; + screenoptions_type["fast_scroll_timer"] = &ScreenOptions::fast_scroll_timer; screenoptions_type["selected_menu_index"] = &ScreenOptions::selected_menu_index; - screenoptions_type["brick_border"] = &ScreenOptions::brick_border; - screenoptions_type["top_bottom_woodpanels_velocity"] = &ScreenOptions::top_bottom_woodpanels_velocity; - screenoptions_type["top_bottom_woodpanels_progress"] = &ScreenOptions::top_bottom_woodpanels_progress; - screenoptions_type["scroll_unfurl_progress"] = &ScreenOptions::scroll_unfurl_progress; - screenoptions_type["bottom_woodpanel_y"] = &ScreenOptions::bottom_woodpanel_y; - screenoptions_type["top_bottom_woodpanels_slide_in_related"] = &ScreenOptions::top_bottom_woodpanels_slide_in_related; - screenoptions_type["bottom_woodpanel"] = &ScreenOptions::bottom_woodpanel; - screenoptions_type["top_woodpanel"] = &ScreenOptions::top_woodpanel; - screenoptions_type["top_woodpanel_left_scrollhandle"] = &ScreenOptions::top_woodpanel_left_scrollhandle; - screenoptions_type["top_woodpanel_right_scrollhandle"] = &ScreenOptions::top_woodpanel_right_scrollhandle; - screenoptions_type["button_right_caption"] = &ScreenOptions::button_right_caption; - screenoptions_type["button_middle_caption"] = &ScreenOptions::button_middle_caption; - screenoptions_type["top_woodpanel_visible"] = &ScreenOptions::top_woodpanel_visible; - screenoptions_type["bottom_woodpanel_visible"] = &ScreenOptions::bottom_woodpanel_visible; - screenoptions_type["toggle_woodpanel_slidein_animation"] = &ScreenOptions::toggle_woodpanel_slidein_animation; - screenoptions_type["capitalize_top_woodpanel"] = &ScreenOptions::capitalize_top_woodpanel; - screenoptions_type["current_menu_1"] = &ScreenOptions::current_menu_1; - screenoptions_type["current_menu_2"] = &ScreenOptions::current_menu_2; + screenoptions_type["sides_hold_down_timer"] = &ScreenOptions::sides_hold_down_timer; + screenoptions_type["sides_fast_scroll_timer"] = &ScreenOptions::sides_fast_scroll_timer; + screenoptions_type["loop"] = &ScreenOptions::loop; + screenoptions_type["screen_panels"] = &ScreenOptions::screen_panels; + screenoptions_type["menu_id"] = &ScreenOptions::current_menu_id; + screenoptions_type["transfer_to_menu_id"] = &ScreenOptions::transfer_to_menu_id; + screenoptions_type["show_apply_button"] = &ScreenOptions::show_apply_button; screenoptions_type["topleft_woodpanel_esc"] = &ScreenOptions::topleft_woodpanel_esc; screenoptions_type["brick_background"] = &ScreenOptions::brick_background; screenoptions_type["brick_middlelayer"] = &ScreenOptions::brick_middlelayer; @@ -205,93 +252,73 @@ void register_usertypes(sol::state& lua) screenoptions_type["item_option_arrow_right"] = &ScreenOptions::item_option_arrow_right; screenoptions_type["tooltip_background"] = &ScreenOptions::tooltip_background; screenoptions_type["progressbar_background"] = &ScreenOptions::progressbar_background; + screenoptions_type["volume_progressbar_foreground"] = &ScreenOptions::volume_progressbar_foreground; screenoptions_type["progressbar_foreground"] = &ScreenOptions::progressbar_foreground; - screenoptions_type["progressbar_position_indicator"] = &ScreenOptions::progressbar_position_indicator; + screenoptions_type["volume_progressbar_position_indicator"] = &ScreenOptions::volume_progressbar_position_indicator; screenoptions_type["sectionheader_background"] = &ScreenOptions::sectionheader_background; - screenoptions_type["topleft_woodpanel_esc_slidein_timer"] = &ScreenOptions::topleft_woodpanel_esc_slidein_timer; - screenoptions_type["text_fadein_timer"] = &ScreenOptions::text_fadein_timer; - screenoptions_type["vertical_scroll_effect_timer"] = &ScreenOptions::vertical_scroll_effect_timer; - - lua.new_usertype( - "ScreenPlayerProfile", - sol::base_classes, - sol::bases()); - - lua.new_usertype( - "ScreenLeaderboards", - sol::base_classes, - sol::bases()); - - auto screenseedinput_type = lua.new_usertype("ScreenSeedInput", sol::base_classes, sol::bases()); - screenseedinput_type["bottom_woodpanel_slideup_timer"] = &ScreenSeedInput::bottom_woodpanel_slideup_timer; - screenseedinput_type["bottom_woodpanel_y"] = &ScreenSeedInput::bottom_woodpanel_y; - screenseedinput_type["bottom_woodpanel"] = &ScreenSeedInput::bottom_woodpanel; - screenseedinput_type["buttons_text_id"] = &ScreenSeedInput::buttons_text_id; - screenseedinput_type["topleft_woodpanel_esc_slidein_timer"] = &ScreenSeedInput::topleft_woodpanel_esc_slidein_timer; - screenseedinput_type["scroll_text_id"] = &ScreenSeedInput::scroll_text_id; - screenseedinput_type["start_text_id"] = &ScreenSeedInput::start_text_id; - screenseedinput_type["main_woodpanel_left_border"] = &ScreenSeedInput::main_woodpanel_left_border; - screenseedinput_type["main_woodpanel_center"] = &ScreenSeedInput::main_woodpanel_center; - screenseedinput_type["main_woodpanel_right_border"] = &ScreenSeedInput::main_woodpanel_right_border; - screenseedinput_type["seed_letter_cutouts"] = &ScreenSeedInput::seed_letter_cutouts; - screenseedinput_type["topleft_woodpanel_esc"] = &ScreenSeedInput::topleft_woodpanel_esc; - screenseedinput_type["start_sidepanel"] = &ScreenSeedInput::start_sidepanel; - screenseedinput_type["start_sidepanel_slidein_timer"] = &ScreenSeedInput::start_sidepanel_slidein_timer; - screenseedinput_type["seed_length"] = &ScreenSeedInput::seed_length; - screenseedinput_type["get_seed"] = [](ScreenSeedInput& s) -> std::optional - { - if (s.seed_length == 0) - return std::nullopt; - std::wstringstream ss; - std::wstring seed_str; - for (uint16_t i = 0; i < s.seed_length; ++i) - seed_str.push_back((wchar_t)(s.seed_chars[i])); - ss << std::hex << seed_str; - uint32_t seed{0}; - ss >> seed; - return seed; - }; - screenseedinput_type["set_seed"] = [](ScreenSeedInput& s, std::optional seed, std::optional length) - { - uint16_t len = length.value_or(8); - if (len > 8) - len = 8; - if (seed.has_value()) - { - std::wstringstream ss; - ss << std::uppercase << std::hex << std::setw(len) << std::setfill(L'0') << seed.value(); - memcpy(s.seed_chars, ss.str().c_str(), len * 2); - s.seed_length = len; - } - else - { - s.seed_length = 0; - } - }; + screenoptions_type["pet_icons"] = &ScreenOptions::pet_icons; + screenoptions_type["bottom_scroll"] = &ScreenOptions::bottom_scroll; + screenoptions_type["bottom_left_scrollhandle"] = &ScreenOptions::bottom_left_scrollhandle; + screenoptions_type["bottom_right_scrollhandle"] = &ScreenOptions::bottom_right_scrollhandle; + screenoptions_type["topleft_woodpanel_esc_slidein"] = &ScreenOptions::topleft_woodpanel_esc_slidein; + screenoptions_type["text_fadein"] = &ScreenOptions::text_fadein; + screenoptions_type["vertical_scroll_effect"] = &ScreenOptions::vertical_scroll_effect; + screenoptions_type["options_visiable"] = &ScreenOptions::options_visiable; + screenoptions_type["show_highlight"] = &ScreenOptions::show_highlight; + screenoptions_type["tooltip_text"] = &ScreenOptions::tooltip_text; + screenoptions_type["disable_controls"] = &ScreenOptions::disable_controls; + screenoptions_type["sync_progress_state"] = &ScreenOptions::sync_progress_state; + screenoptions_type["credits_progression"] = &ScreenOptions::credits_progression; + + auto screenseedinput_type = lua.new_usertype("ScreenCodeInput", sol::base_classes, sol::bases()); + screenseedinput_type["screen_panels"] = &ScreenCodeInput::screen_panels; + screenseedinput_type["allow_random"] = &ScreenCodeInput::allow_random; + screenseedinput_type["selected_button_index"] = &ScreenCodeInput::selected_button_index; + screenseedinput_type["pressed_select"] = &ScreenCodeInput::pressed_select; + screenseedinput_type["topleft_woodpanel_esc_slidein"] = &ScreenCodeInput::topleft_woodpanel_esc_slidein; + screenseedinput_type["scroll_text_id"] = &ScreenCodeInput::scroll_text_id; + screenseedinput_type["start_text_id"] = &ScreenCodeInput::start_text_id; + screenseedinput_type["main_woodpanel_left_border"] = &ScreenCodeInput::main_woodpanel_left_border; + screenseedinput_type["main_woodpanel_center"] = &ScreenCodeInput::main_woodpanel_center; + screenseedinput_type["main_woodpanel_right_border"] = &ScreenCodeInput::main_woodpanel_right_border; + screenseedinput_type["top_scroll"] = &ScreenCodeInput::top_scroll; + screenseedinput_type["letter_cutouts"] = &ScreenCodeInput::letter_cutouts; + screenseedinput_type["hand_pointer"] = &ScreenCodeInput::hand_pointer; + screenseedinput_type["key_background"] = &ScreenCodeInput::key_background; + screenseedinput_type["topleft_woodpanel_esc"] = &ScreenCodeInput::topleft_woodpanel_esc; + screenseedinput_type["start_sidepanel"] = &ScreenCodeInput::start_sidepanel; + screenseedinput_type["start_sidepanel_slidein"] = &ScreenCodeInput::start_sidepanel_slidein; + screenseedinput_type["seed_length"] = &ScreenCodeInput::code_length; + screenseedinput_type["get_seed"] = &ScreenCodeInput::get_seed; + screenseedinput_type["set_seed"] = &ScreenCodeInput::set_seed; - /* ScreenSeedInput - // get_seed - // Get the seed currently entered in the seed dialog or nil if nothing is entered. Will also return incomplete seeds, check seed_length to verify it's ready. - // set_seed - // Params: optional seed, optional length - // Set the seed entered in the seed dialog. Call without arguments to clear entered seed. Optionally enter a length to set partial seed. - */ + lua.new_usertype( + "FlyingThing", + "texture_info", + &FlyingThing::texture_info, + "entity_type", + &FlyingThing::entity_type, + "spritesheet_column", + &FlyingThing::spritesheet_column, + "spritesheet_row", + &FlyingThing::spritesheet_row, + "spritesheet_animation_length", + &FlyingThing::spritesheet_animation_length, + "velocity_x", + &FlyingThing::velocity_x, + "amplitude", + &FlyingThing::amplitude, + "frequency", + &FlyingThing::frequency, + "sinewave_angle", + &FlyingThing::sinewave_angle); auto screencharacterselect_type = lua.new_usertype("ScreenCharacterSelect", sol::base_classes, sol::bases()); + screencharacterselect_type["main_background_zoom_progress"] = &ScreenCharacterSelect::main_background_zoom_progress; screencharacterselect_type["main_background_zoom_target"] = &ScreenCharacterSelect::main_background_zoom_target; + screencharacterselect_type["blurred_border_zoom_progress"] = &ScreenCharacterSelect::blurred_border_zoom_progress; screencharacterselect_type["blurred_border_zoom_target"] = &ScreenCharacterSelect::blurred_border_zoom_target; - screencharacterselect_type["top_bottom_woodpanel_slidein_timer"] = &ScreenCharacterSelect::top_bottom_woodpanel_slidein_timer; - screencharacterselect_type["top_scroll_unfurl_timer"] = &ScreenCharacterSelect::top_scroll_unfurl_timer; - screencharacterselect_type["bottom_woodpanel"] = &ScreenCharacterSelect::bottom_woodpanel; - screencharacterselect_type["top_woodpanel"] = &ScreenCharacterSelect::top_woodpanel; - screencharacterselect_type["left_scroll_handle"] = &ScreenCharacterSelect::left_scroll_handle; - screencharacterselect_type["right_scroll_handle"] = &ScreenCharacterSelect::right_scroll_handle; - screencharacterselect_type["left_button_text_id"] = &ScreenCharacterSelect::left_button_text_id; - screencharacterselect_type["right_button_text_id"] = &ScreenCharacterSelect::right_button_text_id; - screencharacterselect_type["middle_button_text_id"] = &ScreenCharacterSelect::middle_button_text_id; - screencharacterselect_type["top_woodpanel_visible"] = &ScreenCharacterSelect::top_woodpanel_visible; - screencharacterselect_type["bottom_woodpanel_visible"] = &ScreenCharacterSelect::bottom_woodpanel_visible; - screencharacterselect_type["toggle_woodpanel_slidein_animation"] = &ScreenCharacterSelect::toggle_woodpanel_slidein_animation; + screencharacterselect_type["screen_panels"] = &ScreenCharacterSelect::screen_panels; screencharacterselect_type["mine_entrance_background"] = &ScreenCharacterSelect::mine_entrance_background; screencharacterselect_type["character"] = &ScreenCharacterSelect::character; screencharacterselect_type["character_shadow"] = &ScreenCharacterSelect::character_shadow; @@ -317,16 +344,18 @@ void register_usertypes(sol::state& lua) screencharacterselect_type["player_quickselect_fadein_timer"] = &ScreenCharacterSelect::player_quickselect_fadein_timer; screencharacterselect_type["player_quickselect_coords"] = &ScreenCharacterSelect::player_quickselect_coords; screencharacterselect_type["player_quickselect_wiggle_angle"] = &ScreenCharacterSelect::player_quickselect_wiggle_angle; - screencharacterselect_type["topleft_woodpanel_esc_slidein_timer"] = &ScreenCharacterSelect::topleft_woodpanel_esc_slidein_timer; - screencharacterselect_type["start_panel_slidein_timer"] = &ScreenCharacterSelect::start_panel_slidein_timer; + screencharacterselect_type["topleft_woodpanel_esc_slidein"] = &ScreenCharacterSelect::topleft_woodpanel_esc_slidein; + screencharacterselect_type["start_panel_slidein"] = &ScreenCharacterSelect::start_panel_slidein; screencharacterselect_type["action_buttons_keycap_size"] = &ScreenCharacterSelect::action_buttons_keycap_size; + screencharacterselect_type["next_screen_to_load"] = &ScreenCharacterSelect::next_screen_to_load; screencharacterselect_type["not_ready_to_start_yet"] = &ScreenCharacterSelect::not_ready_to_start_yet; screencharacterselect_type["available_mine_entrances"] = &ScreenCharacterSelect::available_mine_entrances; screencharacterselect_type["amount_of_mine_entrances_activated"] = &ScreenCharacterSelect::amount_of_mine_entrances_activated; - screencharacterselect_type["buttons"] = &ScreenCharacterSelect::buttons; - screencharacterselect_type["opacity"] = &ScreenCharacterSelect::opacity; + screencharacterselect_type["screen_blackout"] = &ScreenCharacterSelect::screen_blackout; + screencharacterselect_type["blackout_transparency"] = &ScreenCharacterSelect::blackout_transparency; screencharacterselect_type["start_pressed"] = &ScreenCharacterSelect::start_pressed; screencharacterselect_type["transition_to_game_started"] = &ScreenCharacterSelect::transition_to_game_started; + screencharacterselect_type["disable_controls"] = &ScreenCharacterSelect::disable_controls; screencharacterselect_type["flying_things"] = &ScreenCharacterSelect::flying_things; screencharacterselect_type["flying_thing_countdown"] = &ScreenCharacterSelect::flying_thing_countdown; screencharacterselect_type["particle_ceilingdust_smoke"] = &ScreenCharacterSelect::particle_ceilingdust_smoke; @@ -340,40 +369,22 @@ void register_usertypes(sol::state& lua) screencharacterselect_type["particle_torchflame_flames3"] = &ScreenCharacterSelect::particle_torchflame_flames3; screencharacterselect_type["particle_torchflame_smoke4"] = &ScreenCharacterSelect::particle_torchflame_smoke4; screencharacterselect_type["particle_torchflame_flames4"] = &ScreenCharacterSelect::particle_torchflame_flames4; - screencharacterselect_type["sound"] = &ScreenCharacterSelect::sound; - - lua.new_usertype( - "FlyingThing", - "texture_info", - &FlyingThing::texture_info, - "entity_type", - &FlyingThing::entity_type, - "spritesheet_column", - &FlyingThing::spritesheet_column, - "spritesheet_row", - &FlyingThing::spritesheet_row, - "spritesheet_animation_length", - &FlyingThing::spritesheet_animation_length, - "velocity_x", - &FlyingThing::velocity_x, - "amplitude", - &FlyingThing::amplitude, - "frequency", - &FlyingThing::frequency, - "sinewave_angle", - &FlyingThing::sinewave_angle); + screencharacterselect_type["torch_sound"] = &ScreenCharacterSelect::torch_sound; + screencharacterselect_type["buttons"] = &ScreenCharacterSelect::buttons; auto screenteamselect_type = lua.new_usertype("ScreenTeamSelect", sol::base_classes, sol::bases()); - screenteamselect_type["ana_carrying_torch"] = &ScreenTeamSelect::ana_carrying_torch; + screenteamselect_type["player_portrait"] = &ScreenTeamSelect::player_portrait; screenteamselect_type["scroll_bottom_left"] = &ScreenTeamSelect::scroll_bottom_left; screenteamselect_type["scrollend_bottom_left"] = &ScreenTeamSelect::scrollend_bottom_left; screenteamselect_type["four_ropes"] = &ScreenTeamSelect::four_ropes; - screenteamselect_type["unknown4"] = &ScreenTeamSelect::unknown4; + screenteamselect_type["gems_above_the_ropes"] = &ScreenTeamSelect::gems_above_the_ropes; screenteamselect_type["four_characters"] = &ScreenTeamSelect::four_characters; screenteamselect_type["left_arrow"] = &ScreenTeamSelect::left_arrow; screenteamselect_type["right_arrow"] = &ScreenTeamSelect::right_arrow; screenteamselect_type["start_panel"] = &ScreenTeamSelect::start_panel; - screenteamselect_type["start_panel_slide_timer"] = &ScreenTeamSelect::start_panel_slide_timer; + screenteamselect_type["go_back_wooden_panel"] = &ScreenTeamSelect::go_back_wooden_panel; + screenteamselect_type["start_panel_slide"] = &ScreenTeamSelect::start_panel_slide; + screenteamselect_type["go_back_wooden_panel_slide"] = &ScreenTeamSelect::go_back_wooden_panel_slide; screenteamselect_type["pulsating_arrows_timer"] = &ScreenTeamSelect::pulsating_arrows_timer; screenteamselect_type["selected_player"] = &ScreenTeamSelect::selected_player; screenteamselect_type["buttons"] = &ScreenTeamSelect::buttons; @@ -414,6 +425,7 @@ void register_usertypes(sol::state& lua) screentransition_type["stats_scroll_horizontal_posaa"] = &ScreenTransition::stats_scroll_horizontal_pos; screentransition_type["stats_scroll_vertical_pos"] = &ScreenTransition::stats_scroll_vertical_pos; screentransition_type["level_completed_pos"] = &ScreenTransition::level_completed_pos; + screentransition_type["stats_scroll_unfurl_actualvalue"] = &ScreenTransition::stats_scroll_unfurl_actualvalue; screentransition_type["stats_scroll_unfurl_targetvalue"] = &ScreenTransition::stats_scroll_unfurl_targetvalue; screentransition_type["woodpanel1"] = &ScreenTransition::woodpanel1; screentransition_type["woodpanel2"] = &ScreenTransition::woodpanel2; @@ -425,7 +437,7 @@ void register_usertypes(sol::state& lua) screentransition_type["woodpanel_bottomcutout1"] = &ScreenTransition::woodpanel_bottomcutout1; screentransition_type["woodpanel_bottomcutout2"] = &ScreenTransition::woodpanel_bottomcutout2; screentransition_type["woodpanel_bottomcutout3"] = &ScreenTransition::woodpanel_bottomcutout3; - screentransition_type["unknown_all_forced"] = &ScreenTransition::unknown_all_forced; + screentransition_type["scroll"] = &ScreenTransition::scroll; screentransition_type["stats_scroll_top_bottom"] = &ScreenTransition::stats_scroll_top_bottom; screentransition_type["killcount_rounded_rect"] = &ScreenTransition::killcount_rounded_rect; screentransition_type["level_completed_panel"] = &ScreenTransition::level_completed_panel; @@ -435,6 +447,7 @@ void register_usertypes(sol::state& lua) screentransition_type["mama_tunnel"] = &ScreenTransition::mama_tunnel; screentransition_type["speechbubble"] = &ScreenTransition::speechbubble; screentransition_type["speechbubble_arrow"] = &ScreenTransition::speechbubble_arrow; + screentransition_type["mama_tunnel_fade_targetvalue"] = &ScreenTransition::mama_tunnel_fade_actualvalue; screentransition_type["mama_tunnel_fade_targetvalue"] = &ScreenTransition::mama_tunnel_fade_targetvalue; screentransition_type["mama_tunnel_text_id"] = &ScreenTransition::mama_tunnel_text_id; screentransition_type["mama_tunnel_choice_visible"] = &ScreenTransition::mama_tunnel_choice_visible; @@ -447,7 +460,7 @@ void register_usertypes(sol::state& lua) screentransition_type["woodpanel_cutout_big_money2"] = &ScreenTransition::woodpanel_cutout_big_money2; screentransition_type["woodpanel_cutout_big_money3"] = &ScreenTransition::woodpanel_cutout_big_money3; screentransition_type["big_dollar_sign"] = &ScreenTransition::big_dollar_sign; - screentransition_type["unknown26"] = &ScreenTransition::unknown26; + screentransition_type["stats_scroll_unfurl_sequence"] = &ScreenTransition::stats_scroll_unfurl_sequence; screentransition_type["player_stats_scroll_numeric_value"] = &ScreenTransition::player_stats_scroll_numeric_value; screentransition_type["player_secondary_icon"] = &ScreenTransition::player_secondary_icon; screentransition_type["player_icon"] = &ScreenTransition::player_icon; @@ -456,6 +469,7 @@ void register_usertypes(sol::state& lua) screentransition_type["hourglasses"] = &ScreenTransition::hourglasses; screentransition_type["small_dollar_signs"] = &ScreenTransition::small_dollar_signs; screentransition_type["this_level_money_color"] = &ScreenTransition::this_level_money_color; + screentransition_type["buttons"] = &ScreenTransition::buttons; lua.new_usertype( "ScreenDeath", @@ -477,6 +491,8 @@ void register_usertypes(sol::state& lua) lua.new_usertype( "ScreenCredits", + "credits_progression", + &ScreenCredits::credits_progression, "bg_music_info", &ScreenCredits::bg_music_info, sol::base_classes, @@ -550,29 +566,21 @@ void register_usertypes(sol::state& lua) lua.new_usertype( "OnlineLobbyScreenPlayer", + "platform_icon", + &OnlineLobbyScreenPlayer::platform_icon, "character", &OnlineLobbyScreenPlayer::character, "ready", - &OnlineLobbyScreenPlayer::ready); + &OnlineLobbyScreenPlayer::ready, + "searching", + &OnlineLobbyScreenPlayer::searching); auto screenonlinelobby_type = lua.new_usertype("ScreenOnlineLobby", sol::base_classes, sol::bases()); - screenonlinelobby_type["woodpanels_slidein_timer"] = &ScreenOnlineLobby::woodpanels_slidein_timer; - screenonlinelobby_type["scroll_unfurl_timer"] = &ScreenOnlineLobby::scroll_unfurl_timer; - screenonlinelobby_type["woodpanel_bottom"] = &ScreenOnlineLobby::woodpanel_bottom; - screenonlinelobby_type["woodpanel_top"] = &ScreenOnlineLobby::woodpanel_top; - screenonlinelobby_type["left_scroll_handle"] = &ScreenOnlineLobby::left_scroll_handle; - screenonlinelobby_type["right_scroll_handle"] = &ScreenOnlineLobby::right_scroll_handle; - screenonlinelobby_type["scroll_text_id"] = &ScreenOnlineLobby::scroll_text_id; - screenonlinelobby_type["btn_left_text_id"] = &ScreenOnlineLobby::btn_left_text_id; - screenonlinelobby_type["btn_right_text_id"] = &ScreenOnlineLobby::btn_right_text_id; - screenonlinelobby_type["btn_center_text_id"] = &ScreenOnlineLobby::btn_center_text_id; - screenonlinelobby_type["woodpanel_top_visible"] = &ScreenOnlineLobby::woodpanel_top_visible; - screenonlinelobby_type["woodpanel_bottom_visible"] = &ScreenOnlineLobby::woodpanel_bottom_visible; - screenonlinelobby_type["toggle_panels_slidein"] = &ScreenOnlineLobby::toggle_panels_slidein; + screenonlinelobby_type["screen_panels"] = &ScreenOnlineLobby::screen_panels; screenonlinelobby_type["players"] = &ScreenOnlineLobby::players; screenonlinelobby_type["background_image"] = &ScreenOnlineLobby::background_image; screenonlinelobby_type["topleft_woodpanel_esc"] = &ScreenOnlineLobby::topleft_woodpanel_esc; - screenonlinelobby_type["topleft_woodpanel_esc_slidein_timer"] = &ScreenOnlineLobby::topleft_woodpanel_esc_slidein_timer; + screenonlinelobby_type["topleft_woodpanel_esc_slidein"] = &ScreenOnlineLobby::topleft_woodpanel_esc_slidein; screenonlinelobby_type["character_walk_offset"] = &ScreenOnlineLobby::character_walk_offset; screenonlinelobby_type["character_facing_left"] = &ScreenOnlineLobby::character_facing_left; screenonlinelobby_type["move_direction"] = &ScreenOnlineLobby::move_direction; @@ -586,37 +594,27 @@ void register_usertypes(sol::state& lua) screenonlinelobby_type["player_count"] = &ScreenOnlineLobby::player_count; screenonlinelobby_type["searching_for_players"] = &ScreenOnlineLobby::searching_for_players; screenonlinelobby_type["show_code_panel"] = &ScreenOnlineLobby::show_code_panel; - screenonlinelobby_type["enter_code_woodpanel_bottom_slidein_pos"] = &ScreenOnlineLobby::enter_code_woodpanel_bottom_slidein_pos; - screenonlinelobby_type["enter_code_woodpanel_bottom"] = &ScreenOnlineLobby::enter_code_woodpanel_bottom; - screenonlinelobby_type["enter_code_btn_right_text_id"] = &ScreenOnlineLobby::enter_code_btn_right_text_id; - screenonlinelobby_type["enter_code_woodpanel_top_visible"] = &ScreenOnlineLobby::enter_code_woodpanel_top_visible; - screenonlinelobby_type["enter_code_woodpanel_bottom_visible"] = &ScreenOnlineLobby::enter_code_woodpanel_bottom_visible; - screenonlinelobby_type["enter_code_toggle_panels_slidein"] = &ScreenOnlineLobby::enter_code_toggle_panels_slidein; - screenonlinelobby_type["selected_character"] = &ScreenOnlineLobby::selected_character; - screenonlinelobby_type["characters_entered_count"] = &ScreenOnlineLobby::characters_entered_count; - screenonlinelobby_type["enter_code_topleft_woodpanel_esc_slidein_timer"] = &ScreenOnlineLobby::enter_code_topleft_woodpanel_esc_slidein_timer; - screenonlinelobby_type["enter_code_banner_text_id"] = &ScreenOnlineLobby::enter_code_banner_text_id; - screenonlinelobby_type["enter_code_OK_text_id"] = &ScreenOnlineLobby::enter_code_OK_text_id; - screenonlinelobby_type["enter_code_main_woodpanel_left"] = &ScreenOnlineLobby::enter_code_main_woodpanel_left; - screenonlinelobby_type["enter_code_main_woodpanel_center"] = &ScreenOnlineLobby::enter_code_main_woodpanel_center; - screenonlinelobby_type["enter_code_main_woodpanel_right"] = &ScreenOnlineLobby::enter_code_main_woodpanel_right; - screenonlinelobby_type["enter_code_banner"] = &ScreenOnlineLobby::enter_code_banner; - screenonlinelobby_type["enter_code_char_cutouts"] = &ScreenOnlineLobby::enter_code_char_cutouts; - screenonlinelobby_type["enter_code_pointing_hand"] = &ScreenOnlineLobby::enter_code_pointing_hand; - screenonlinelobby_type["enter_code_buttons"] = &ScreenOnlineLobby::enter_code_buttons; - screenonlinelobby_type["enter_code_OK_panel"] = &ScreenOnlineLobby::enter_code_OK_panel; - screenonlinelobby_type["enter_code_OK_panel_slidein_timer"] = &ScreenOnlineLobby::enter_code_OK_panel_slidein_timer; - screenonlinelobby_type["enter_code_your_code_scroll"] = &ScreenOnlineLobby::enter_code_your_code_scroll; - screenonlinelobby_type["enter_code_your_code_scroll_left_handle"] = &ScreenOnlineLobby::enter_code_your_code_scroll_left_handle; - screenonlinelobby_type["enter_code_your_code_scroll_right_handle"] = &ScreenOnlineLobby::enter_code_your_code_scroll_right_handle; - screenonlinelobby_type["set_code"] = &ScreenOnlineLobby::set_code; + screenonlinelobby_type["screen_code_input"] = sol::property([](ScreenOnlineLobby* screen) -> ScreenEnterOnlineCode* + { return reinterpret_cast(&screen->screen_code_input); }); + + /// Available in ScreenOnlineLobby + lua.new_usertype( + "ScreenEnterOnlineCode", + "enter_code_your_code_scroll", + &ScreenEnterOnlineCode::enter_code_your_code_scroll, + "enter_code_your_code_scroll_left_handle", + &ScreenEnterOnlineCode::enter_code_your_code_scroll_left_handle, + "enter_code_your_code_scroll_right_handle", + &ScreenEnterOnlineCode::enter_code_your_code_scroll_right_handle, + sol::base_classes, + sol::bases()); lua.new_usertype( "PauseUI", "menu_slidein_progress", &PauseUI::menu_slidein_progress, "blurred_background", - &PauseUI::blurred_background, + &PauseUI::blackout_background, "woodpanel_left", &PauseUI::woodpanel_left, "woodpanel_middle", @@ -629,8 +627,14 @@ void register_usertypes(sol::state& lua) &PauseUI::scroll, "confirmation_panel", &PauseUI::confirmation_panel, - "previously_selected_menu_index", - &PauseUI::previously_selected_menu_index, + "selected_option", + &PauseUI::selected_option, + "prompt_visible", + &PauseUI::prompt_visible, + "buttons_actions", + &PauseUI::buttons_actions, + "buttons_movement", + &PauseUI::buttons_movement, "visibility", &PauseUI::visibility); @@ -652,14 +656,12 @@ void register_usertypes(sol::state& lua) &JournalUI::arrow_left, "arrow_right", &JournalUI::arrow_right, - "unknown23", - &JournalUI::unknown23, "entire_book", &JournalUI::entire_book, - "page_timer", - &JournalUI::page_timer, "fade_timer", &JournalUI::fade_timer, + "page_timer", + &JournalUI::page_timer, "opacity", sol::property([](JournalUI& ui) -> float { @@ -695,11 +697,9 @@ void register_usertypes(sol::state& lua) lua["JournalPage"]["as_journal_page_bestiary"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_items"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_traps"] = &JournalPage::as; - lua["JournalPage"]["as_journal_page_story"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_feats"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_deathcause"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_deathmenu"] = &JournalPage::as; - lua["JournalPage"]["as_journal_page_recap"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_playerprofile"] = &JournalPage::as; lua["JournalPage"]["as_journal_page_lastgameplayed"] = &JournalPage::as; @@ -712,8 +712,6 @@ void register_usertypes(sol::state& lua) lua.new_usertype( "JournalPageJournalMenu", - "selected_menu_index", - &JournalPageJournalMenu::selected_menu_index, "journal_text_info", &JournalPageJournalMenu::journal_text_info, "completion_badge", @@ -789,11 +787,6 @@ void register_usertypes(sol::state& lua) sol::base_classes, sol::bases()); - lua.new_usertype( - "JournalPageStory", - sol::base_classes, - sol::bases()); - lua.new_usertype( "JournalPageFeats", "chapter_title_text_info", @@ -812,8 +805,6 @@ void register_usertypes(sol::state& lua) lua.new_usertype( "JournalPageDeathMenu", - "selected_menu_index", - &JournalPageDeathMenu::selected_menu_index, "game_over_text_info", &JournalPageDeathMenu::game_over_text_info, "level_text_info", @@ -831,11 +822,6 @@ void register_usertypes(sol::state& lua) sol::base_classes, sol::bases()); - lua.new_usertype( - "JournalPageRecap", - sol::base_classes, - sol::bases()); - auto journalpageplayerprofile_type = lua.new_usertype("JournalPagePlayerProfile", sol::base_classes, sol::bases()); journalpageplayerprofile_type["player_icon"] = &JournalPagePlayerProfile::player_icon; journalpageplayerprofile_type["player_icon_id"] = &JournalPagePlayerProfile::player_icon_id; diff --git a/src/game_api/state.hpp b/src/game_api/state.hpp index b93472090..22b701081 100644 --- a/src/game_api/state.hpp +++ b/src/game_api/state.hpp @@ -215,6 +215,7 @@ struct StateMemory // screen pointers below are most likely in an array and indexed through the screen ID (-10), hence the nullptrs for // screens that are available in GameManager ScreenCharacterSelect* screen_character_select; + /// For the arena ScreenTeamSelect* screen_team_select; ScreenStateCamp* screen_camp; ScreenStateLevel* screen_level; @@ -222,9 +223,12 @@ struct StateMemory ScreenDeath* screen_death; size_t unknown_screen_spaceship; // potentially ScreenSpaceship, but is nullptr (there is no UI rendering on spaceship anyway) ScreenWin* screen_win; + /// The spaceship minigame ScreenCredits* screen_credits; + /// Landing on the moon after win ScreenScores* screen_scores; ScreenConstellation* screen_constellation; + /// Journal after CO win ScreenRecap* screen_recap; ScreenArenaMenu* screen_arena_menu; ScreenArenaStagesSelect* screen_arena_stages_select1;