[Change] Everything is now conforming with major toolkit changes.
This commit is contained in:
parent
f0c8e3d158
commit
be74e72b26
167
src/menu.c
167
src/menu.c
@ -53,30 +53,28 @@ int menu_open = 0; /**< Store the opened/closed menus. */
|
||||
|
||||
/* Main menu. */
|
||||
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);
|
||||
static void menu_main_load(unsigned int wid, char* str);
|
||||
static void menu_main_new(unsigned int wid, char* str);
|
||||
static void menu_main_exit(unsigned int wid, char* str);
|
||||
/* Small menu. */
|
||||
static void menu_small_close(char* str);
|
||||
static void menu_small_exit(char* str);
|
||||
static void menu_small_close(unsigned int wid, char* str);
|
||||
static void menu_small_exit(unsigned int wid, char* str);
|
||||
static void exit_game(void);
|
||||
/* Information menu. */
|
||||
static void menu_info_close(char* str);
|
||||
static void menu_info_close(unsigned int wid, char* str);
|
||||
/* Outfits submenu. */
|
||||
static void info_outfits_menu(char* str);
|
||||
static void info_outfits_menu(unsigned int parent, char* str);
|
||||
/* Cargo submenu. */
|
||||
static void info_cargo_menu(char* str);
|
||||
static void cargo_update(char* str);
|
||||
static void cargo_jettison(char* str);
|
||||
static void info_cargo_menu(unsigned int parent, char* str);
|
||||
static void cargo_update(unsigned int wid, char* str);
|
||||
static void cargo_jettison(unsigned int wid, char* str);
|
||||
/* Mission submenu. */
|
||||
static void info_missions_menu(char* str);
|
||||
static void mission_menu_abort(char* str);
|
||||
static void mission_menu_genList(int first);
|
||||
static void mission_menu_update(char* str);
|
||||
static void info_missions_menu(unsigned int parent, char* str);
|
||||
static void mission_menu_abort(unsigned int wid, char* str);
|
||||
static void mission_menu_genList(unsigned int wid, int first);
|
||||
static void mission_menu_update(unsigned int wid, char* str);
|
||||
/* Death menu. */
|
||||
static void menu_death_main(char* str);
|
||||
/* Generic. */
|
||||
static void menu_generic_close(char* str);
|
||||
static void menu_death_main(unsigned int parent, char* str);
|
||||
|
||||
/**
|
||||
* @fn void menu_main(void)
|
||||
@ -132,41 +130,38 @@ void menu_main_close(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
static void menu_main_load(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
(void)wid;
|
||||
|
||||
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) {
|
||||
static void menu_main_new(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
(void)wid;
|
||||
|
||||
menu_main_close();
|
||||
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) {
|
||||
static void menu_main_exit(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
unsigned int wid;
|
||||
(void)wid;
|
||||
unsigned int bg;
|
||||
|
||||
wid = window_get("BG");
|
||||
bg = window_get("BG");
|
||||
|
||||
/*
|
||||
* Ugly hack to prevent player.c from segfaulting due to the fact
|
||||
@ -175,8 +170,8 @@ static void menu_main_exit(char* str) {
|
||||
* nor anything of the likes (nor toolkit to stop rendering) while not
|
||||
* leaking any texture.
|
||||
*/
|
||||
gl_freeTexture(window_getImage(wid, "imgLogo"));
|
||||
window_modifyImage(wid, "imgLogo", NULL);
|
||||
gl_freeTexture(window_getImage(bg, "imgLogo"));
|
||||
window_modifyImage(bg, "imgLogo", NULL);
|
||||
|
||||
exit_game();
|
||||
}
|
||||
@ -218,33 +213,27 @@ void menu_small(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static void menu_small_close(char* str)
|
||||
*
|
||||
* @brief Close the small ingame menu.
|
||||
* @param str Unused.
|
||||
*/
|
||||
static void menu_small_close(char* str) {
|
||||
static void menu_small_close(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
window_destroy(window_get("Menu"));
|
||||
window_destroy(wid);
|
||||
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) {
|
||||
static void menu_small_exit(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
window_destroy(window_get("Menu"));
|
||||
window_destroy(wid);
|
||||
menu_Close(MENU_SMALL);
|
||||
menu_main();
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static void exit_game(void)
|
||||
*
|
||||
* @brief Exit the game.
|
||||
*/
|
||||
static void exit_game(void) {
|
||||
@ -323,26 +312,22 @@ void menu_info(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @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"));
|
||||
|
||||
static void menu_info_close(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
window_destroy(wid);
|
||||
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) {
|
||||
static void info_outfits_menu(unsigned int parent, char* str) {
|
||||
(void) str;
|
||||
(void) parent;
|
||||
char* buf;
|
||||
unsigned int wid;
|
||||
|
||||
@ -364,17 +349,16 @@ static void info_outfits_menu(char* str) {
|
||||
/* Buttons. */
|
||||
window_addButton(wid, -20, 20,
|
||||
BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"closeOutfits", "Close", menu_generic_close);
|
||||
"closeOutfits", "Close", window_close);
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static void info_cargo_menu(char* str)
|
||||
*
|
||||
* @brief Show the player her cargo.
|
||||
* @param str Unused.
|
||||
*/
|
||||
static void info_cargo_menu(char* str) {
|
||||
static void info_cargo_menu(unsigned int parent, char* str) {
|
||||
(void)str;
|
||||
(void)parent;
|
||||
unsigned int wid;
|
||||
char** buf;
|
||||
int nbuf;
|
||||
@ -385,7 +369,7 @@ static void info_cargo_menu(char* str) {
|
||||
|
||||
/* Buttons. */
|
||||
window_addButton(wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"closeCargo", "Back", menu_generic_close);
|
||||
"closeCargo", "Back", window_close);
|
||||
window_addButton(wid, -40 - BUTTON_WIDTH, 20,
|
||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnJettisonCargo", "Jettison",
|
||||
cargo_jettison);
|
||||
@ -414,23 +398,19 @@ static void info_cargo_menu(char* str) {
|
||||
CARGO_WIDTH - 40, CARGO_HEIGHT - BUTTON_HEIGHT - 80,
|
||||
"lstCargo", buf, nbuf, 0, cargo_update);
|
||||
|
||||
cargo_update(NULL);
|
||||
cargo_update(wid, 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) {
|
||||
static void cargo_update(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
unsigned int wid;
|
||||
int pos;
|
||||
|
||||
if(player->ncommodities == 0) return; /* No cargo. */
|
||||
|
||||
wid = window_get("Cargo");
|
||||
pos = toolkit_getListPos(wid, "lstCargo");
|
||||
|
||||
/* Can jettison all but mission cargo when not landed. */
|
||||
@ -441,19 +421,15 @@ static void cargo_update(char* str) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
static void cargo_jettison(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
unsigned int wid;
|
||||
int pos;
|
||||
|
||||
if(player->ncommodities == 0) return; /* No cargo, redundant check. */
|
||||
|
||||
wid = window_get("Cargo");
|
||||
pos = toolkit_getListPos(wid, "lstCargo");
|
||||
|
||||
/* Remove the cargo. */
|
||||
@ -463,25 +439,24 @@ static void cargo_jettison(char* str) {
|
||||
player->commodities[pos].quantity);
|
||||
|
||||
/* We reopen the menu to recreate the list now. */
|
||||
menu_generic_close("closeCargo");
|
||||
info_cargo_menu(NULL);
|
||||
window_destroy(wid);
|
||||
info_cargo_menu(0, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static void info_missions_menu(char* str)
|
||||
*
|
||||
* @brief Show the players active missions.
|
||||
* @param str Unused.
|
||||
*/
|
||||
static void info_missions_menu(char* str) {
|
||||
static void info_missions_menu(unsigned int parent, char* str) {
|
||||
(void)str;
|
||||
(void)parent;
|
||||
unsigned int wid;
|
||||
|
||||
wid = window_create("Missions", -1, -1, MISSIONS_WIDTH, MISSIONS_HEIGHT);
|
||||
|
||||
/* Buttons. */
|
||||
window_addButton(wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"closeMissions", "Back", menu_generic_close);
|
||||
"closeMissions", "Back", window_close);
|
||||
|
||||
window_addButton(wid, -20, 40+BUTTON_HEIGHT,
|
||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnAbortMission", "Abort",
|
||||
@ -500,21 +475,16 @@ static void info_missions_menu(char* str) {
|
||||
"txtDesc", &gl_smallFont, &cBlack, NULL);
|
||||
|
||||
/* List. */
|
||||
mission_menu_genList(1);
|
||||
mission_menu_genList(wid, 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) {
|
||||
static void mission_menu_genList(unsigned int wid, int first) {
|
||||
int i, j;
|
||||
char** misn_names;
|
||||
unsigned int wid;
|
||||
|
||||
wid = window_get("Missions");
|
||||
|
||||
if(!first)
|
||||
window_destroyWidget(wid, "lstMission");
|
||||
@ -536,23 +506,17 @@ static void mission_menu_genList(int first) {
|
||||
300, MISSIONS_HEIGHT-60,
|
||||
"lstMission", misn_names, j, 0, mission_menu_update);
|
||||
|
||||
mission_menu_update(NULL);
|
||||
mission_menu_update(wid, 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) {
|
||||
static void mission_menu_update(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
char* active_misn;
|
||||
Mission* misn;
|
||||
unsigned int wid;
|
||||
|
||||
(void)str;
|
||||
|
||||
wid = window_get("Missions");
|
||||
|
||||
active_misn = toolkit_getList(wid, "lstMission");
|
||||
if(strcmp(active_misn, "No Missions")==0) {
|
||||
@ -568,20 +532,15 @@ static void mission_menu_update(char* str) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
static void mission_menu_abort(unsigned int wid, char* str) {
|
||||
(void)str;
|
||||
char* selected_misn;
|
||||
int pos;
|
||||
unsigned int wid;
|
||||
Mission* misn;
|
||||
|
||||
wid = window_get("Missions");
|
||||
|
||||
selected_misn = toolkit_getList(wid, "lstMission");
|
||||
|
||||
if(dialogue_YesNo("Abort Mission",
|
||||
@ -591,7 +550,7 @@ static void mission_menu_abort(char* str) {
|
||||
mission_cleanup(misn);
|
||||
memmove(misn, &player_missions[pos+1],
|
||||
sizeof(Mission) * (MISSION_MAX-pos-1));
|
||||
mission_menu_genList(0);
|
||||
mission_menu_genList(wid, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -608,7 +567,7 @@ void menu_death(void) {
|
||||
BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"btnMain", "Main Menu", menu_death_main);
|
||||
window_addButton(wid, 20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||
"btnExit", "Exit Game", (void(*)(char*)) exit_game);
|
||||
"btnExit", "Exit Game", (void(*)(unsigned int,char*)) exit_game);
|
||||
|
||||
menu_Open(MENU_DEATH);
|
||||
|
||||
@ -617,12 +576,11 @@ void menu_death(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn static void menu_death_main(char* str)
|
||||
*
|
||||
* @brief Close the player death menu.
|
||||
* @param str Unused.
|
||||
*/
|
||||
static void menu_death_main(char* str) {
|
||||
static void menu_death_main(unsigned int parent, char* str) {
|
||||
(void)parent;
|
||||
(void)str;
|
||||
unsigned int wid;
|
||||
|
||||
@ -634,16 +592,3 @@ static void menu_death_main(char* str) {
|
||||
menu_main();
|
||||
}
|
||||
|
||||
/**
|
||||
* @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. */
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user