diff --git a/src/menu.c b/src/menu.c index e5ff326..5fe4394 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1,3 +1,9 @@ +/** + * @file menu.h + * + * @brief Handle the important game menus. + */ + #include <string.h> #include <SDL.h> @@ -16,37 +22,36 @@ #include "nebulae.h" #include "menu.h" -#define MAIN_WIDTH 130 -#define MAIN_HEIGHT 250 +#define MAIN_WIDTH 130 /**< Main menu width. */ +#define MAIN_HEIGHT 250 /**< Main menu height. */ -#define MENU_WIDTH 130 -#define MENU_HEIGHT 200 +#define MENU_WIDTH 130 /**< Escape menu width. */ +#define MENU_HEIGHT 200 /**< Escape menu height. */ -#define INFO_WIDTH 360 -#define INFO_HEIGHT 280 +#define INFO_WIDTH 360 /**< Information menu width. */ +#define INFO_HEIGHT 280 /**< Information menu height. */ -#define OUTFITS_WIDTH 400 -#define OUTFITS_HEIGHT 200 +#define OUTFITS_WIDTH 400 /**< Outfit menu width. */ +#define OUTFITS_HEIGHT 200 /**< Outfit menu height. */ -#define CARGO_WIDTH 300 -#define CARGO_HEIGHT 300 +#define CARGO_WIDTH 300 /**< Cargo menu width. */ +#define CARGO_HEIGHT 300 /**< Cargo menu height. */ -#define MISSIONS_WIDTH 600 -#define MISSIONS_HEIGHT 400 +#define MISSIONS_WIDTH 600 /**< Mission menu width. */ +#define MISSIONS_HEIGHT 400 /**< Mission menu height. */ -#define DEATH_WIDTH 130 -#define DEATH_HEIGHT 150 +#define DEATH_WIDTH 130 /**< Death menu width. */ +#define DEATH_HEIGHT 150 /**< Death menu height. */ -#define BUTTON_WIDTH 90 -#define BUTTON_HEIGHT 30 +#define BUTTON_WIDTH 90 /**< Button width, standard across menus. */ +#define BUTTON_HEIGHT 30 /**< Button height, standard across menus. */ -#define menu_Open(f) (menu_open |= (f)) -#define menu_Close(f) (menu_open ^= (f)) - -int menu_open = 0; +#define menu_Open(f) (menu_open |= (f)) /**< Mark a menu as open. */ +#define menu_Close(f) (menu_open ^= (f)) /**< Mark a menu as closed. */ +int menu_open = 0; /**< Store the opened/closed menus. */ /* Main menu. */ -void menu_main_close(void); +void menu_main_close(void); /**< Externed in save.c */ static void menu_main_load(char* str); static void menu_main_new(char* str); static void menu_main_exit(char* str); @@ -73,6 +78,11 @@ static void menu_death_main(char* str); /* Generic. */ static void menu_generic_close(char* str); +/** + * @fn void menu_main(void) + * + * @brief Open the main menu (titlescreen). + */ void menu_main(void) { unsigned int bwid, wid; glTexture* tex; @@ -107,6 +117,11 @@ void menu_main(void) { menu_Open(MENU_MAIN); } +/** + * @fn void menu_main_close(void) + * + * @brief Close the main menu. + */ void menu_main_close(void) { window_destroy(window_get("Main Menu")); @@ -116,12 +131,24 @@ void menu_main_close(void) { menu_Close(MENU_MAIN); } +/** + * @fn static void menu_main_load(char* str) + * + * @brief Function to activate the load game menu. + * @param str Unused. + */ static void menu_main_load(char* str) { (void)str; load_game_menu(); } +/** + * @fn static void menu_main_new(char* str) + * + * @brief Function to activate the new game menu. + * @param str Unused. + */ static void menu_main_new(char* str) { (void)str; @@ -129,6 +156,12 @@ static void menu_main_new(char* str) { player_new(); } +/** + * @fn static void menu_main_new(char* str) + * + * @brief Function to exit the main menu and game. + * @param str Unused. + */ static void menu_main_exit(char* str) { (void)str; unsigned int wid; @@ -149,16 +182,22 @@ static void menu_main_exit(char* str) { } /* Ze ingame menu. */ -/* Small ingame menu. */ + +/** + * @fn void menu_small(void) + * + * @brief Open the small ingame menu. + */ void menu_small(void) { + unsigned int wid; + + /* Check if menu should be openable. */ if((player == NULL) || player_isFlag(PLAYER_DESTROYED) || pilot_isFlag(player, PILOT_DEAD) || (menu_isOpen(MENU_MAIN) || menu_isOpen(MENU_SMALL) || menu_isOpen(MENU_DEATH))) - return; /* It's already open.. */ - - unsigned int wid; + return; wid = window_create("Menu", -1, -1, MENU_WIDTH, MENU_HEIGHT); @@ -178,12 +217,24 @@ void menu_small(void) { menu_Open(MENU_SMALL); } +/** + * @fn static void menu_small_close(char* str) + * + * @brief Close the small ingame menu. + * @param str Unused. + */ static void menu_small_close(char* str) { (void)str; window_destroy(window_get("Menu")); menu_Close(MENU_SMALL); } +/** + * @fn static void menu_small_exit(char* str) + * + * @brief Close the small ingame menu and go back to the main menu. + * @param str Unused. + */ static void menu_small_exit(char* str) { (void)str; window_destroy(window_get("Menu")); @@ -191,13 +242,23 @@ static void menu_small_exit(char* str) { menu_main(); } -/* Edit the options. */ +/** + * @fn static void edit_options(char* str) + * + * @brief Edit the options. + * @param str Unused. + * @todo Make the options menu. + */ static void edit_options(char* str) { (void)str; /* @todo Make options menu */ } -/* Exit the game. */ +/** + * @fn static void exit_game(void) + * + * @brief Exit the game. + */ static void exit_game(void) { /* If landed we must save anyways. */ if(landed) { @@ -210,15 +271,20 @@ static void exit_game(void) { SDL_PushEvent(&quit); } -/* Info menu. */ +/** + * @fn void menu_info(void) + * + * @brief Open the information window. + */ void menu_info(void) { - if(menu_isOpen(MENU_INFO)) return; - char str[128]; char* lt; unsigned int wid; wid = window_create("Info", -1, -1, INFO_WIDTH, INFO_HEIGHT); + /* Can't open menu twise. */ + if(menu_isOpen(MENU_INFO)) return; + /* Pilot generics. */ lt = ltime_pretty(ltime_get()); window_addText(wid, 20, 20, 120, INFO_HEIGHT-60, @@ -268,6 +334,12 @@ void menu_info(void) { menu_Open(MENU_INFO); } +/** + * @fn static void menu_info_close(char* str) + * + * @brief Close the information menu. + * @param str Unused. + */ static void menu_info_close(char* str) { if(strcmp(str, "btnClose")==0) window_destroy(window_get("Info")); @@ -275,6 +347,12 @@ static void menu_info_close(char* str) { menu_Close(MENU_INFO); } +/** + * @fn static void info_outfits_menu(char* str) + * + * @brief Show the player what outfits she has. + * @param str Unused. + */ static void info_outfits_menu(char* str) { (void) str; char* buf; @@ -301,7 +379,12 @@ static void info_outfits_menu(char* str) { "closeOutfits", "Close", menu_generic_close); } -/* Show the players cargo. */ +/** + * @fn static void info_cargo_menu(char* str) + * + * @brief Show the player her cargo. + * @param str Unused. + */ static void info_cargo_menu(char* str) { (void)str; unsigned int wid; @@ -346,6 +429,12 @@ static void info_cargo_menu(char* str) { cargo_update(NULL); } +/** + * @fn static void cargo_update(char* str) + * + * @brief Update the players cargo in the cargo menu. + * @param str Unused. + */ static void cargo_update(char* str) { (void)str; unsigned int wid; @@ -363,6 +452,12 @@ static void cargo_update(char* str) { window_enableButton(wid, "btnJettisonCargo"); } +/** + * @fn static void cargo_jettison(char* str) + * + * @brief Make the player jettison the currently selected cargo. + * @param str Unused. + */ static void cargo_jettison(char* str) { (void)str; unsigned int wid; @@ -384,7 +479,12 @@ static void cargo_jettison(char* str) { info_cargo_menu(NULL); } -/* Show the player's active missions. */ +/** + * @fn static void info_missions_menu(char* str) + * + * @brief Show the players active missions. + * @param str Unused. + */ static void info_missions_menu(char* str) { (void)str; unsigned int wid; @@ -415,6 +515,12 @@ static void info_missions_menu(char* str) { mission_menu_genList(1); } +/** + * @fn static void mission_menu_genList(int first) + * + * @brief Create the current mission list for the mission menu. + * @param first 1 if it's the first time run. + */ static void mission_menu_genList(int first) { int i, j; char** misn_names; @@ -445,6 +551,12 @@ static void mission_menu_genList(int first) { mission_menu_update(NULL); } +/** + * @fn static void mission_menu_update(char* str) + * + * @brief Update the mission menu mission info based on what's selected. + * @param str Unused. + */ static void mission_menu_update(char* str) { char* active_misn; Mission* misn; @@ -467,6 +579,12 @@ static void mission_menu_update(char* str) { window_enableButton(wid, "btnAbortMission"); } +/** + * @fn static void mission_menu_abort(char* str) + * + * @brief Abort a mission in the mission menu. + * @param str Unused. + */ static void mission_menu_abort(char* str) { (void)str; char* selected_misn; @@ -489,7 +607,11 @@ static void mission_menu_abort(char* str) { } } -/* Pilot dead. */ +/** + * @fn void menu_death(void) + * + * @brief Player death menu, appears when player got killed. + */ void menu_death(void) { unsigned int wid; wid = window_create("Death", -1, -1, DEATH_WIDTH, DEATH_HEIGHT); @@ -503,6 +625,12 @@ void menu_death(void) { menu_Open(MENU_DEATH); } +/** + * @fn static void menu_death_main(char* str) + * + * @brief Close the player death menu. + * @param str Unused. + */ static void menu_death_main(char* str) { (void)str; unsigned int wid; @@ -514,7 +642,15 @@ static void menu_death_main(char* str) { menu_main(); } -/* Generic close approach. */ +/** + * @fn static void menu_generic_close(char* str) + * + * @brief Generic function to close the current window. + * + * Only works if the button is labeled "closeFoo", where "Foo" would be the + * window name. + * @param str Used by the button it's assigned to internally. + */ static void menu_generic_close(char* str) { window_destroy(window_get(str+5)); /* closeFoo -> Foo. */ } diff --git a/src/menu.h b/src/menu.h index 4d1eeb8..6e34cd7 100644 --- a/src/menu.h +++ b/src/menu.h @@ -1,12 +1,13 @@ #pragma once -#define MENU_MAIN (1<<0) -#define MENU_SMALL (1<<1) -#define MENU_INFO (1<<2) -#define MENU_DEATH (1<<3) -#define menu_isOpen(f) (menu_open & (f)) +#define MENU_MAIN (1<<0) /**< Main menu (titlescreen). */ +#define MENU_SMALL (1<<1) /**< Small ingame menu. */ +#define MENU_INFO (1<<2) /**< Player information menu. */ +#define MENU_DEATH (1<<3) /**< Player death menu. */ +#define menu_isOpen(f) (menu_open & (f)) /**< Check if a certain menu is opened. */ extern int menu_open; +/* Menu opening routines. */ void menu_main(void); void menu_small(void); void menu_info(void);