diff --git a/inc/audio/audio.manager.lua b/inc/audio/audio.manager.lua index 95cb62b..583ffd2 100644 --- a/inc/audio/audio.manager.lua +++ b/inc/audio/audio.manager.lua @@ -1,28 +1,43 @@ +--- @section Audio + --- Stops current music. +--- @within Audio function Audio.music_stop() music() end --- Plays main menu music. +--- @within Audio function Audio.music_play_mainmenu() end --- Plays waking up music. +--- @within Audio function Audio.music_play_wakingup() end --- Plays room morning music. +--- @within Audio function Audio.music_play_room_morning() end --- Plays room street 1 music. +--- @within Audio function Audio.music_play_room_street_1() end --- Plays room street 2 music. +--- @within Audio function Audio.music_play_room_street_2() end --- Plays room music. -- TODO: function name is incomplete, determine the correct room identifier +--- @within Audio function Audio.music_play_room_() end --- Plays room work music. +--- @within Audio function Audio.music_play_room_work() end --- Plays select sound effect. +--- @within Audio function Audio.sfx_select() sfx(17, 'C-7', 30) end --- Plays deselect sound effect. +--- @within Audio function Audio.sfx_deselect() sfx(18, 'C-7', 30) end --- Plays beep sound effect. +--- @within Audio function Audio.sfx_beep() sfx(19, 'C-6', 30) end --- Plays success sound effect. +--- @within Audio function Audio.sfx_success() sfx(16, 'C-7', 60) end --- Plays bloop sound effect. +--- @within Audio function Audio.sfx_bloop() sfx(21, 'C-3', 60) end diff --git a/inc/audio/audio.songs.lua b/inc/audio/audio.songs.lua index ec16b3c..671e158 100644 --- a/inc/audio/audio.songs.lua +++ b/inc/audio/audio.songs.lua @@ -1,6 +1,7 @@ +--- @section Songs + -- DDR Arrow Spawn Patterns -- Each song defines when arrows should spawn, synced to music beats - Songs = { -- Example song pattern test_song = { @@ -108,6 +109,7 @@ Songs = { } --- Converts beats to frames. +--- @within Songs -- @param beat number The beat number. -- @param bpm number Beats per minute. -- @param[opt] fps number Frames per second (default: 60). @@ -120,6 +122,7 @@ function frame_from_beat(beat, bpm, fps) end --- Converts beat notation to frame pattern. +--- @within Songs -- @param beats table A table of beat data, e.g., {{1, "left"}, {2, "down"}}. -- @param bpm number Beats per minute. -- @param[opt] fps number Frames per second (default: 60). diff --git a/inc/decision/decision.manager.lua b/inc/decision/decision.manager.lua index de414ad..459b0b2 100644 --- a/inc/decision/decision.manager.lua +++ b/inc/decision/decision.manager.lua @@ -1,6 +1,8 @@ +--- @section Decision local _decisions = {} --- Registers a decision definition. +--- @within Decision -- @param decision table The decision data table. function Decision.register(decision) if not decision or not decision.id then @@ -25,6 +27,7 @@ function Decision.register(decision) end --- Gets a decision by ID. +--- @within Decision -- @param id string The ID of the decision. -- @return table The decision table or nil. function Decision.get_by_id(id) @@ -32,12 +35,14 @@ function Decision.get_by_id(id) end --- Gets all registered decisions. +--- @within Decision -- @return table A table of all registered decisions. function Decision.get_all() return _decisions end --- Gets decision objects based on a screen's data. +--- @within Decision -- @param screen_data table The data for the screen, containing a 'decisions' field (list of decision IDs). -- @return table A table containing decision objects relevant to the screen. function Decision.get_for_screen(screen_data) @@ -56,6 +61,7 @@ function Decision.get_for_screen(screen_data) end --- Filters a list of decision objects based on their condition function. +--- @within Decision -- @param decisions_list table A table of decision objects. -- @return table A new table containing only the decisions for which condition() is true. function Decision.filter_available(decisions_list) diff --git a/inc/init/init.config.lua b/inc/init/init.config.lua index 8e56e87..34ca206 100644 --- a/inc/init/init.config.lua +++ b/inc/init/init.config.lua @@ -1,5 +1,7 @@ Config = {} +--- Return initial data for Config +--- @within Config function Config.initial_data() return { screen = { @@ -24,6 +26,7 @@ function Config.initial_data() end --- Restores default configuration settings. +--- @within Config function Config.reset() local initial = Config.initial_data() Config.screen = initial.screen @@ -37,12 +40,14 @@ local CONFIG_SPLASH_DURATION_ADDRESS = 3 local CONFIG_MAGIC_VALUE = 0xDE --- Saves the current configuration. +--- @within Config function Config.save() mset(CONFIG_MAGIC_VALUE, CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) mset(Config.timing.splash_duration, CONFIG_SPLASH_DURATION_ADDRESS, CONFIG_SAVE_BANK) end --- Loads saved configuration. +--- @within Config function Config.load() if mget(CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) == CONFIG_MAGIC_VALUE then Config.timing.splash_duration = mget(CONFIG_SPLASH_DURATION_ADDRESS, CONFIG_SAVE_BANK) diff --git a/inc/init/init.context.lua b/inc/init/init.context.lua index e2aab9a..32d33ae 100644 --- a/inc/init/init.context.lua +++ b/inc/init/init.context.lua @@ -3,9 +3,11 @@ local SAVE_GAME_MAGIC_VALUE_ADDRESS = 0 local SAVE_GAME_MAGIC_VALUE = 0xCA --- Global game context. +--- @section Context Context = {} --- Gets initial data for Context. +--- @within Context -- @return table Initial context data. function Context.initial_data() return { @@ -28,6 +30,7 @@ function Context.initial_data() end --- Resets game context to initial state. +--- @within Context function Context.reset() local initial_data = Context.initial_data() for k in pairs(Context) do @@ -42,6 +45,7 @@ function Context.reset() end --- Starts a new game. +--- @within Context function Context.new_game() Context.reset() Context.game_in_progress = true @@ -50,12 +54,14 @@ function Context.new_game() end --- Saves the current game state. +--- @within Context function Context.save_game() if not Context.game_in_progress then return end mset(SAVE_GAME_MAGIC_VALUE, SAVE_GAME_MAGIC_VALUE_ADDRESS, SAVE_GAME_BANK) end --- Loads a saved game state. +--- @within Context function Context.load_game() if mget(SAVE_GAME_MAGIC_VALUE_ADDRESS, SAVE_GAME_BANK) ~= SAVE_GAME_MAGIC_VALUE then Context.new_game() diff --git a/inc/init/init.meter.lua b/inc/init/init.meter.lua index 7520e85..e0b3ca5 100644 --- a/inc/init/init.meter.lua +++ b/inc/init/init.meter.lua @@ -1,3 +1,4 @@ +--- @section Meter local METER_MAX = 1000 local METER_DEFAULT = 500 local METER_DECAY_PER_FRAME = 0.02 @@ -13,6 +14,7 @@ Meter.COLOR_BM = Config.colors.black Meter.COLOR_BG = Config.colors.meter_bg --- Gets initial meter values. +--- @within Meter -- @return table A table of initial meter values. function Meter.get_initial() return { @@ -26,22 +28,26 @@ function Meter.get_initial() end --- Hides meters. +--- @within Meter function Meter.hide() if Context and Context.meters then Context.meters.hidden = true end end --- Shows meters. +--- @within Meter function Meter.show() if Context and Context.meters then Context.meters.hidden = false end end --- Gets max meter value. +--- @within Meter -- @return number The maximum meter value. function Meter.get_max() return METER_MAX end --- Gets combo multiplier. +--- @within Meter -- @return number The current combo multiplier. function Meter.get_combo_multiplier() if not Context or not Context.meters then return 1 end @@ -51,6 +57,7 @@ function Meter.get_combo_multiplier() end --- Updates all meters. +--- @within Meter function Meter.update() if not Context or not Context.game_in_progress or not Context.meters then return end local m = Context.meters @@ -67,6 +74,7 @@ function Meter.update() end --- Adds amount to a meter. +--- @within Meter -- @param key string The meter key (e.g., "wpm", "ism", "bm"). -- @param amount number The amount to add. function Meter.add(key, amount) @@ -78,6 +86,7 @@ function Meter.add(key, amount) end --- Called on minigame completion. +--- @within Meter function Meter.on_minigame_complete() local m = Context.meters local gain = math.floor(METER_GAIN_PER_CHORE * Meter.get_combo_multiplier()) diff --git a/inc/init/init.minigame.lua b/inc/init/init.minigame.lua index 7aaaa43..624fcb2 100644 --- a/inc/init/init.minigame.lua +++ b/inc/init/init.minigame.lua @@ -1,6 +1,8 @@ -- Manages minigame configurations and initial states. +--- @section Minigame ---- Applies parameters to defaults. +--- Applies parameters to defaults +--- @within Minigame -- @param defaults table The default configuration table. -- @param params table The parameters to apply. -- @return table The updated configuration table. @@ -13,6 +15,7 @@ local function apply_params(defaults, params) end --- Gets default DDR minigame configuration. +--- @within Minigame -- @return table The default DDR minigame configuration. function Minigame.get_default_ddr() local arrow_size = 12 @@ -54,6 +57,7 @@ function Minigame.get_default_ddr() end --- Gets default button mash minigame configuration. +--- @within Minigame -- @return table The default button mash minigame configuration. function Minigame.get_default_button_mash() return { @@ -76,6 +80,7 @@ function Minigame.get_default_button_mash() end --- Gets default rhythm minigame configuration. +--- @within Minigame -- @return table The default rhythm minigame configuration. function Minigame.get_default_rhythm() return { @@ -105,6 +110,7 @@ function Minigame.get_default_rhythm() end --- Configures DDR minigame. +--- @within Minigame -- @param params table Optional parameters to override defaults. -- @return table The configured DDR minigame state. function Minigame.configure_ddr(params) @@ -112,6 +118,7 @@ function Minigame.configure_ddr(params) end --- Configures button mash minigame. +--- @within Minigame -- @param params table Optional parameters to override defaults. -- @return table The configured button mash minigame state. function Minigame.configure_button_mash(params) @@ -119,6 +126,7 @@ function Minigame.configure_button_mash(params) end --- Configures rhythm minigame. +--- @within Minigame -- @param params table Optional parameters to override defaults. -- @return table The configured rhythm minigame state. function Minigame.configure_rhythm(params) diff --git a/inc/map/map.manager.lua b/inc/map/map.manager.lua index 6ddae9f..127e49a 100644 --- a/inc/map/map.manager.lua +++ b/inc/map/map.manager.lua @@ -1,8 +1,11 @@ -- Manages game maps. +--- @section Map + local _maps = {} --- Gets all registered maps as an array. +--- @within Map -- @return table An array of registered map data. function Map.get_maps_array() local maps_array = {} @@ -13,6 +16,7 @@ function Map.get_maps_array() end --- Registers a map definition. +--- @within Map -- @param map_data table The map data table. function Map.register(map_data) if _maps[map_data.id] then @@ -22,6 +26,7 @@ function Map.register(map_data) end --- Gets a map by ID. +--- @within Map -- @param map_id string The ID of the map. -- @return table The map data table or nil. function Map.get_by_id(map_id) @@ -29,6 +34,7 @@ function Map.get_by_id(map_id) end --- Draws a map. +--- @within Map -- @param map_id string The ID of the map to draw. function Map.draw(map_id) local map_data = Map.get_by_id(map_id) diff --git a/inc/screen/screen.manager.lua b/inc/screen/screen.manager.lua index becd690..0570f14 100644 --- a/inc/screen/screen.manager.lua +++ b/inc/screen/screen.manager.lua @@ -1,6 +1,8 @@ +--- @section Screen local _screens = {} --- Registers a screen definition. +--- @within Screen -- @param screen_data table The screen data table. function Screen.register(screen_data) if _screens[screen_data.id] then @@ -19,6 +21,7 @@ function Screen.register(screen_data) end --- Gets a screen by ID. +--- @within Screen -- @param screen_id string The ID of the screen. -- @return table The screen table or nil. function Screen.get_by_id(screen_id) @@ -26,6 +29,7 @@ function Screen.get_by_id(screen_id) end --- Gets all registered screens. +--- @within Screen -- @return table A table containing all registered screen data, indexed by their IDs. function Screen.get_all() return _screens diff --git a/inc/situation/situation.manager.lua b/inc/situation/situation.manager.lua index 18eb0c0..b65f054 100644 --- a/inc/situation/situation.manager.lua +++ b/inc/situation/situation.manager.lua @@ -1,6 +1,8 @@ +--- @section Situation local _situations = {} --- Registers a situation definition. +--- @within Situation -- @param situation table The situation data table. function Situation.register(situation) if not situation or not situation.id then @@ -20,6 +22,7 @@ function Situation.register(situation) end --- Gets a situation by ID. +--- @within Situation -- @param id string The situation ID. -- @return table The situation table or nil. function Situation.get_by_id(id) @@ -27,6 +30,7 @@ function Situation.get_by_id(id) end --- Gets all registered situations, optionally filtered by screen ID. +--- @within Situation -- @param screen_id string Optional. If provided, returns situations associated with this screen ID. -- @return table A table containing all registered situation data, indexed by their IDs, or filtered by screen_id. function Situation.get_all(screen_id) @@ -43,6 +47,7 @@ function Situation.get_all(screen_id) end --- Applies a situation, checking screen compatibility and returning the new situation ID if successful. +--- @within Situation -- @param id string The situation ID to apply. -- @param current_screen_id string The ID of the currently active screen. -- @return string|nil The ID of the applied situation if successful, otherwise nil. diff --git a/inc/sprite/sprite.manager.lua b/inc/sprite/sprite.manager.lua index 021ce39..bb3b0a4 100644 --- a/inc/sprite/sprite.manager.lua +++ b/inc/sprite/sprite.manager.lua @@ -1,7 +1,9 @@ +--- @section Sprite local _sprites = {} local _active_sprites = {} --- Registers a sprite definition. +--- @within Sprite -- @param sprite_data table A table containing the sprite definition. function Sprite.register(sprite_data) if not sprite_data or not sprite_data.id then @@ -15,6 +17,7 @@ function Sprite.register(sprite_data) end --- Schedules a sprite for drawing. +--- @within Sprite -- @param id string The unique identifier of the sprite. -- @param x number The x-coordinate. -- @param y number The y-coordinate. @@ -42,12 +45,14 @@ function Sprite.show(id, x, y, colorkey, scale, flip_x, flip_y, rot) end --- Hides a displayed sprite. +--- @within Sprite -- @param id string The unique identifier of the sprite. function Sprite.hide(id) _active_sprites[id] = nil end --- Draws all scheduled sprites. +--- @within Sprite function Sprite.draw() for id, params in pairs(_active_sprites) do local sprite_data = _sprites[id] diff --git a/inc/system/system.input.lua b/inc/system/system.input.lua index 8d66c57..2efd882 100644 --- a/inc/system/system.input.lua +++ b/inc/system/system.input.lua @@ -1,3 +1,4 @@ +--- @section Input local INPUT_KEY_UP = 0 local INPUT_KEY_DOWN = 1 local INPUT_KEY_LEFT = 2 @@ -10,20 +11,29 @@ local INPUT_KEY_BACKSPACE = 51 local INPUT_KEY_ENTER = 50 --- Checks if Up is pressed. +--- @within Input function Input.up() return btnp(INPUT_KEY_UP) end --- Checks if Down is pressed. +--- @within Input function Input.down() return btnp(INPUT_KEY_DOWN) end --- Checks if Left is pressed. +--- @within Input function Input.left() return btnp(INPUT_KEY_LEFT) end --- Checks if Right is pressed. +--- @within Input function Input.right() return btnp(INPUT_KEY_RIGHT) end --- Checks if Select is pressed. +--- @within Input function Input.select() return btnp(INPUT_KEY_A) or keyp(INPUT_KEY_SPACE) end --- Checks if Menu Confirm is pressed. +--- @within Input function Input.menu_confirm() return btnp(INPUT_KEY_A) or keyp(INPUT_KEY_ENTER) end --- Checks if Player Interact is pressed. +--- @within Input function Input.player_interact() return btnp(INPUT_KEY_B) or keyp(INPUT_KEY_ENTER) end --- Checks if Menu Back is pressed. +--- @within Input function Input.menu_back() return btnp(INPUT_KEY_Y) or keyp(INPUT_KEY_BACKSPACE) end --- Checks if Toggle Popup is pressed. +--- @within Input function Input.toggle_popup() return keyp(INPUT_KEY_ENTER) end diff --git a/inc/system/system.main.lua b/inc/system/system.main.lua index ce4438d..aa63c1f 100644 --- a/inc/system/system.main.lua +++ b/inc/system/system.main.lua @@ -1,6 +1,8 @@ +--- @section Main local initialized_game = false --- Initializes game state. +--- @within Main local function init_game() if initialized_game then return end Context.reset() @@ -10,6 +12,7 @@ local function init_game() end --- Main game loop (TIC-80 callback). +--- @within Main function TIC() init_game() cls(Config.colors.black) diff --git a/inc/system/system.print.lua b/inc/system/system.print.lua index f575bdd..98cc915 100644 --- a/inc/system/system.print.lua +++ b/inc/system/system.print.lua @@ -1,4 +1,7 @@ +--- @section Print + --- Prints text with shadow. +--- @within Print -- @param text string The text to print. -- @param x number The x-coordinate. -- @param y number The y-coordinate. @@ -14,6 +17,7 @@ function Print.text(text, x, y, color, fixed, scale) end --- Prints centered text with shadow. +--- @within Print -- @param text string The text to print. -- @param x number The x-coordinate for centering. -- @param y number The y-coordinate. diff --git a/inc/system/system.ui.lua b/inc/system/system.ui.lua index 1cf100e..65ef4a7 100644 --- a/inc/system/system.ui.lua +++ b/inc/system/system.ui.lua @@ -1,4 +1,7 @@ +--- @section UI + --- Draws the top bar. +--- @within UI -- @param title string The title text to display. function UI.draw_top_bar(title) rect(0, 0, Config.screen.width, 10, Config.colors.dark_grey) @@ -6,11 +9,13 @@ function UI.draw_top_bar(title) end --- Draws dialog window. +--- @within UI function UI.draw_dialog() PopupWindow.draw() end --- Draws a menu. +--- @within UI -- @param items table A table of menu items. -- @param selected_item number The index of the currently selected item. -- @param x number The x-coordinate for the menu. @@ -26,6 +31,7 @@ function UI.draw_menu(items, selected_item, x, y) end --- Updates menu selection. +--- @within UI -- @param items table A table of menu items. -- @param selected_item number The current index of the selected item. -- @return number The updated index of the selected item. @@ -47,6 +53,7 @@ function UI.update_menu(items, selected_item) end --- Wraps text. +--- @within UI -- @param text string The text to wrap. -- @param max_chars_per_line number The maximum characters per line. -- @return table A table of wrapped lines. @@ -80,6 +87,7 @@ function UI.word_wrap(text, max_chars_per_line) end --- Creates a numeric stepper. +--- @within UI -- @param label string The label for the stepper. -- @param value_getter function Function to get the current value. -- @param value_setter function Function to set the current value. @@ -102,6 +110,7 @@ function UI.create_numeric_stepper(label, value_getter, value_setter, min, max, end --- Creates an action item. +--- @within UI -- @param label string The label for the action item. -- @param action function The function to execute when the item is selected. -- @return table An action item control definition. @@ -114,6 +123,7 @@ function UI.create_action_item(label, action) end --- Draws decision selector. +--- @within UI -- @param decisions table A table of decision items. -- @param selected_decision_index number The index of the selected decision. function UI.draw_decision_selector(decisions, selected_decision_index) @@ -133,6 +143,7 @@ function UI.draw_decision_selector(decisions, selected_decision_index) end --- Draws meters. +--- @within UI function UI.draw_meters() if not Context or not Context.game_in_progress or not Context.meters then return end if Context.meters.hidden then return end @@ -166,6 +177,7 @@ function UI.draw_meters() end --- Updates decision selector. +--- @within UI -- @param decisions table A table of decision items. -- @param selected_decision_index number The current index of the selected decision. -- @return number The updated index of the selected decision. diff --git a/inc/system/system.util.lua b/inc/system/system.util.lua index 6903431..a98e227 100644 --- a/inc/system/system.util.lua +++ b/inc/system/system.util.lua @@ -1,5 +1,8 @@ +--- @section Util + --- Safely wraps an index for an array. +--- @within Util -- @param array table The array to index. -- @param index number The desired index (can be out of bounds). -- @return number The wrapped index within the array's bounds. @@ -8,6 +11,7 @@ function Util.safeindex(array, index) end --- Navigates to a screen by its ID. +--- @within Util -- @param screen_id string The ID of the screen to go to. function Util.go_to_screen_by_id(screen_id) local screen = Screen.get_by_id(screen_id) @@ -20,6 +24,7 @@ function Util.go_to_screen_by_id(screen_id) end --- Checks if a table contains a specific value. +--- @within Util -- @param t table The table to check. -- @param value any The value to look for. function Util.contains(t, value) diff --git a/inc/window/window.audiotest.lua b/inc/window/window.audiotest.lua index 6db8aeb..73bda0b 100644 --- a/inc/window/window.audiotest.lua +++ b/inc/window/window.audiotest.lua @@ -1,3 +1,4 @@ +--- @section AudioTestWindow AudioTestWindow = { index_menu = 1, index_func = 1, @@ -7,6 +8,7 @@ AudioTestWindow = { } --- Generates menu items for audio test. +--- @within AudioTestWindow -- @param list_func table List of audio functions. -- @param index_func number Current index of selected function. -- @return table Generated menu items. @@ -39,6 +41,7 @@ function AudioTestWindow.generate_menuitems(list_func, index_func) end --- Generates list of audio functions. +--- @within AudioTestWindow -- @return table A sorted list of audio function names. function AudioTestWindow.generate_listfunc() local result = {} @@ -55,12 +58,14 @@ function AudioTestWindow.generate_listfunc() end --- Navigates back from audio test window. +--- @within AudioTestWindow function AudioTestWindow.back() Audio.sfx_deselect() GameWindow.set_state("menu") end --- Initializes audio test window. +--- @within AudioTestWindow function AudioTestWindow.init() AudioTestWindow.last_pressed = false AudioTestWindow.index_menu = 1 @@ -72,12 +77,14 @@ function AudioTestWindow.init() end --- Draws audio test window. +--- @within AudioTestWindow function AudioTestWindow.draw() UI.draw_top_bar("Audio test") UI.draw_menu(AudioTestWindow.menuitems, AudioTestWindow.index_menu, 20, 50) end --- Updates audio test window logic. +--- @within AudioTestWindow function AudioTestWindow.update() if Input.up() then AudioTestWindow.index_menu = Util.safeindex(AudioTestWindow.menuitems, AudioTestWindow.index_menu - 1) diff --git a/inc/window/window.configuration.lua b/inc/window/window.configuration.lua index 697efec..2680429 100644 --- a/inc/window/window.configuration.lua +++ b/inc/window/window.configuration.lua @@ -1,9 +1,11 @@ +--- @section ConfigurationWindow ConfigurationWindow = { controls = {}, selected_control = 1, } --- Initializes configuration window. +--- @within ConfigurationWindow function ConfigurationWindow.init() ConfigurationWindow.controls = { UI.create_action_item( @@ -18,6 +20,7 @@ function ConfigurationWindow.init() end --- Draws configuration window. +--- @within ConfigurationWindow function ConfigurationWindow.draw() UI.draw_top_bar("Configuration") @@ -60,6 +63,7 @@ function ConfigurationWindow.draw() end --- Updates configuration window logic. +--- @within ConfigurationWindow function ConfigurationWindow.update() if Input.menu_back() then GameWindow.set_state("menu") diff --git a/inc/window/window.game.lua b/inc/window/window.game.lua index 6b37b53..db9584f 100644 --- a/inc/window/window.game.lua +++ b/inc/window/window.game.lua @@ -1,7 +1,9 @@ +--- @section GameWindow local _available_decisions = {} local _selected_decision_index = 1 --- Draws the game window. +--- @within GameWindow function GameWindow.draw() local screen = Screen.get_by_id(Context.game.current_screen) if screen.background then Map.draw(screen.background) end @@ -13,6 +15,7 @@ function GameWindow.draw() end --- Updates the game window logic. +--- @within GameWindow function GameWindow.update() if Input.menu_back() then Window.set_current("menu") @@ -60,6 +63,7 @@ function GameWindow.update() end --- Sets the active window. +--- @within GameWindow -- @param new_state string The ID of the new active window. function GameWindow.set_state(new_state) Window.set_current(new_state) diff --git a/inc/window/window.intro.lua b/inc/window/window.intro.lua index 82800e2..ff7796e 100644 --- a/inc/window/window.intro.lua +++ b/inc/window/window.intro.lua @@ -1,3 +1,4 @@ +--- @section IntroWindow IntroWindow.y = Config.screen.height IntroWindow.speed = 0.5 IntroWindow.text = [[ @@ -14,12 +15,14 @@ on than meets the eye. ]] --- Draws the intro window. +--- @within IntroWindow function IntroWindow.draw() local x = (Config.screen.width - 132) / 2 Print.text(IntroWindow.text, x, IntroWindow.y, Config.colors.green) end --- Updates the intro window logic. +--- @within IntroWindow function IntroWindow.update() IntroWindow.y = IntroWindow.y - IntroWindow.speed diff --git a/inc/window/window.manager.lua b/inc/window/window.manager.lua index 55e0c9b..3a89c99 100644 --- a/inc/window/window.manager.lua +++ b/inc/window/window.manager.lua @@ -1,6 +1,8 @@ +--- @section Window local _windows = {} --- Registers a window table. +--- @within Window -- @param id string The ID of the window (e.g., "splash", "menu"). -- @param window_table table The actual window module table (e.g., SplashWindow). function Window.register(id, window_table) @@ -8,6 +10,7 @@ function Window.register(id, window_table) end --- Retrieves a registered window table by its ID. +--- @within Window -- @param id string The ID of the window. -- @return table The window module table. function Window.get(id) @@ -15,12 +18,14 @@ function Window.get(id) end --- Sets the currently active window. +--- @within Window -- @param id string The ID of the window to activate. function Window.set_current(id) Context.current_window = id end --- Gets the ID of the currently active window. +--- @within Window -- @return string The ID of the active window. function Window.get_current_id() return Context.current_window @@ -28,6 +33,7 @@ end --- Gets the handler function for the currently active window. -- This function is used by the main game loop to update and draw the active window. +--- @within Window -- @return function A function that updates and draws the current window. function Window.get_current_handler() local window_table = Window.get(Context.current_window) diff --git a/inc/window/window.menu.lua b/inc/window/window.menu.lua index b11c31f..656b2ec 100644 --- a/inc/window/window.menu.lua +++ b/inc/window/window.menu.lua @@ -1,12 +1,15 @@ +--- @section MenuWindow local _menu_items = {} --- Draws the menu window. +--- @within MenuWindow function MenuWindow.draw() UI.draw_top_bar("Main Menu") UI.draw_menu(_menu_items, Context.current_menu_item, 108, 70) end --- Updates the menu window logic. +--- @within MenuWindow function MenuWindow.update() Context.current_menu_item = UI.update_menu(_menu_items, Context.current_menu_item) @@ -20,45 +23,53 @@ function MenuWindow.update() end --- Starts a new game from the menu. +--- @within MenuWindow function MenuWindow.new_game() Context.new_game() GameWindow.set_state("game") end --- Loads a game from the menu. +--- @within MenuWindow function MenuWindow.load_game() Context.load_game() GameWindow.set_state("game") end --- Saves the current game from the menu. +--- @within MenuWindow function MenuWindow.save_game() Context.save_game() end --- Resumes the game from the menu. +--- @within MenuWindow function MenuWindow.resume_game() GameWindow.set_state("game") end --- Exits the game. +--- @within MenuWindow function MenuWindow.exit() exit() end --- Opens the configuration menu. +--- @within MenuWindow function MenuWindow.configuration() ConfigurationWindow.init() GameWindow.set_state("configuration") end --- Opens the audio test menu. +--- @within MenuWindow function MenuWindow.audio_test() AudioTestWindow.init() GameWindow.set_state("audiotest") end --- Refreshes menu items. +--- @within MenuWindow function MenuWindow.refresh_menu_items() _menu_items = {} if Context.game_in_progress then diff --git a/inc/window/window.minigame.ddr.lua b/inc/window/window.minigame.ddr.lua index 0f2b876..bb6aa6a 100644 --- a/inc/window/window.minigame.ddr.lua +++ b/inc/window/window.minigame.ddr.lua @@ -1,10 +1,14 @@ +--- @section MinigameDDRWindow + --- Initializes DDR minigame state. +--- @within MinigameDDRWindow -- @param params table Optional parameters for configuration. function MinigameDDRWindow.init(params) Context.minigame_ddr = Minigame.configure_ddr(params) end --- Starts the DDR minigame. +--- @within MinigameDDRWindow -- @param return_window string The window ID to return to after the minigame. -- @param[opt] song_key string The key of the song to play. -- @param[opt] params table Optional parameters for minigame configuration. @@ -29,6 +33,7 @@ function MinigameDDRWindow.start(return_window, song_key, params) end --- Spawns a random arrow. +--- @within MinigameDDRWindow local function spawn_arrow() local mg = Context.minigame_ddr local target = mg.target_arrows[math.random(1, 4)] @@ -40,6 +45,7 @@ local function spawn_arrow() end --- Spawns an arrow in a specific direction. +--- @within MinigameDDRWindow -- @param direction string The direction of the arrow ("left", "down", "up", "right"). local function spawn_arrow_dir(direction) local mg = Context.minigame_ddr @@ -56,6 +62,7 @@ local function spawn_arrow_dir(direction) end --- Checks if an arrow is hit. +--- @within MinigameDDRWindow -- @param arrow table The arrow data. -- @return boolean True if the arrow is hit, false otherwise. local function check_hit(arrow) @@ -65,6 +72,7 @@ local function check_hit(arrow) end --- Checks if an arrow is missed. +--- @within MinigameDDRWindow -- @param arrow table The arrow data. -- @return boolean True if the arrow is missed, false otherwise. local function check_miss(arrow) @@ -73,6 +81,7 @@ local function check_miss(arrow) end --- Draws an arrow. +--- @within MinigameDDRWindow -- @param x number The x-coordinate. -- @param y number The y-coordinate. -- @param direction string The direction of the arrow. @@ -96,6 +105,7 @@ local function draw_arrow(x, y, direction, color) end --- Updates DDR minigame logic. +--- @within MinigameDDRWindow function MinigameDDRWindow.update() local mg = Context.minigame_ddr if mg.bar_fill >= mg.max_fill then @@ -189,6 +199,7 @@ function MinigameDDRWindow.update() end --- Draws DDR minigame. +--- @within MinigameDDRWindow function MinigameDDRWindow.draw() local mg = Context.minigame_ddr if not mg then diff --git a/inc/window/window.minigame.mash.lua b/inc/window/window.minigame.mash.lua index e1a78c1..f2666c3 100644 --- a/inc/window/window.minigame.mash.lua +++ b/inc/window/window.minigame.mash.lua @@ -1,10 +1,14 @@ +--- @section MinigameButtonMashWindow + --- Initializes button mash minigame state. +--- @within MinigameButtonMashWindow -- @param params table Optional parameters for configuration. function MinigameButtonMashWindow.init(params) Context.minigame_button_mash = Minigame.configure_button_mash(params) end --- Starts the button mash minigame. +--- @within MinigameButtonMashWindow -- @param return_window string The window ID to return to after the minigame. -- @param[opt] params table Optional parameters for minigame configuration. function MinigameButtonMashWindow.start(return_window, params) @@ -14,6 +18,7 @@ function MinigameButtonMashWindow.start(return_window, params) end --- Updates button mash minigame logic. +--- @within MinigameButtonMashWindow function MinigameButtonMashWindow.update() local mg = Context.minigame_button_mash if Input.select() then @@ -40,6 +45,7 @@ function MinigameButtonMashWindow.update() end --- Draws button mash minigame. +--- @within MinigameButtonMashWindow function MinigameButtonMashWindow.draw() local mg = Context.minigame_button_mash if mg.return_window == "game" then diff --git a/inc/window/window.minigame.rhythm.lua b/inc/window/window.minigame.rhythm.lua index 97e1f63..a95edcb 100644 --- a/inc/window/window.minigame.rhythm.lua +++ b/inc/window/window.minigame.rhythm.lua @@ -1,10 +1,14 @@ +--- @section MinigameRhythmWindow + --- Initializes rhythm minigame state. +--- @within MinigameRhythmWindow -- @param params table Optional parameters for configuration. function MinigameRhythmWindow.init(params) Context.minigame_rhythm = Minigame.configure_rhythm(params) end --- Starts the rhythm minigame. +--- @within MinigameRhythmWindow -- @param return_window string The window ID to return to after the minigame. -- @param[opt] params table Optional parameters for minigame configuration. function MinigameRhythmWindow.start(return_window, params) @@ -14,6 +18,7 @@ function MinigameRhythmWindow.start(return_window, params) end --- Updates rhythm minigame logic. +--- @within MinigameRhythmWindow function MinigameRhythmWindow.update() local mg = Context.minigame_rhythm mg.line_position = mg.line_position + (mg.line_speed * mg.line_direction) @@ -57,6 +62,7 @@ function MinigameRhythmWindow.update() end --- Draws rhythm minigame. +--- @within MinigameRhythmWindow function MinigameRhythmWindow.draw() local mg = Context.minigame_rhythm if mg.return_window == "game" then diff --git a/inc/window/window.popup.lua b/inc/window/window.popup.lua index e5d93e9..794d562 100644 --- a/inc/window/window.popup.lua +++ b/inc/window/window.popup.lua @@ -1,3 +1,4 @@ +--- @section PopupWindow local POPUP_X = 40 local POPUP_Y = 40 local POPUP_WIDTH = 160 @@ -7,6 +8,7 @@ local TEXT_MARGIN_Y = POPUP_Y + 10 local LINE_HEIGHT = 8 --- Displays a popup window. +--- @within PopupWindow -- @param content_strings table A table of strings to display in the popup. function PopupWindow.show(content_strings) Context.popup.show = true @@ -15,6 +17,7 @@ function PopupWindow.show(content_strings) end --- Hides the popup window. +--- @within PopupWindow function PopupWindow.hide() Context.popup.show = false Context.popup.content = {} @@ -22,6 +25,7 @@ function PopupWindow.hide() end --- Updates popup window logic. +--- @within PopupWindow function PopupWindow.update() if Context.popup.show then if Input.menu_confirm() or Input.menu_back() then @@ -31,6 +35,7 @@ function PopupWindow.update() end --- Draws the popup window. +--- @within PopupWindow function PopupWindow.draw() if Context.popup.show then rect(POPUP_X, POPUP_Y, POPUP_WIDTH, POPUP_HEIGHT, Config.colors.black) diff --git a/inc/window/window.splash.lua b/inc/window/window.splash.lua index 823078c..b8182c0 100644 --- a/inc/window/window.splash.lua +++ b/inc/window/window.splash.lua @@ -1,4 +1,7 @@ +--- @section SplashWindow + --- Draws the splash window. +--- @within SplashWindow function SplashWindow.draw() local txt = "Definitely not an Impostor" local y = (Config.screen.height - 6) / 2 @@ -6,6 +9,7 @@ function SplashWindow.draw() end --- Updates the splash window logic. +--- @within SplashWindow function SplashWindow.update() Context.splash_timer = Context.splash_timer - 1 if Context.splash_timer <= 0 or Input.menu_confirm() then