[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. */
|
/* Main menu. */
|
||||||
void menu_main_close(void); /**< Externed in save.c */
|
void menu_main_close(void); /**< Externed in save.c */
|
||||||
static void menu_main_load(char* str);
|
static void menu_main_load(unsigned int wid, char* str);
|
||||||
static void menu_main_new(char* str);
|
static void menu_main_new(unsigned int wid, char* str);
|
||||||
static void menu_main_exit(char* str);
|
static void menu_main_exit(unsigned int wid, char* str);
|
||||||
/* Small menu. */
|
/* Small menu. */
|
||||||
static void menu_small_close(char* str);
|
static void menu_small_close(unsigned int wid, char* str);
|
||||||
static void menu_small_exit(char* str);
|
static void menu_small_exit(unsigned int wid, char* str);
|
||||||
static void exit_game(void);
|
static void exit_game(void);
|
||||||
/* Information menu. */
|
/* Information menu. */
|
||||||
static void menu_info_close(char* str);
|
static void menu_info_close(unsigned int wid, char* str);
|
||||||
/* Outfits submenu. */
|
/* Outfits submenu. */
|
||||||
static void info_outfits_menu(char* str);
|
static void info_outfits_menu(unsigned int parent, char* str);
|
||||||
/* Cargo submenu. */
|
/* Cargo submenu. */
|
||||||
static void info_cargo_menu(char* str);
|
static void info_cargo_menu(unsigned int parent, char* str);
|
||||||
static void cargo_update(char* str);
|
static void cargo_update(unsigned int wid, char* str);
|
||||||
static void cargo_jettison(char* str);
|
static void cargo_jettison(unsigned int wid, char* str);
|
||||||
/* Mission submenu. */
|
/* Mission submenu. */
|
||||||
static void info_missions_menu(char* str);
|
static void info_missions_menu(unsigned int parent, char* str);
|
||||||
static void mission_menu_abort(char* str);
|
static void mission_menu_abort(unsigned int wid, char* str);
|
||||||
static void mission_menu_genList(int first);
|
static void mission_menu_genList(unsigned int wid, int first);
|
||||||
static void mission_menu_update(char* str);
|
static void mission_menu_update(unsigned int wid, char* str);
|
||||||
/* Death menu. */
|
/* Death menu. */
|
||||||
static void menu_death_main(char* str);
|
static void menu_death_main(unsigned int parent, char* str);
|
||||||
/* Generic. */
|
|
||||||
static void menu_generic_close(char* str);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn void menu_main(void)
|
* @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.
|
* @brief Function to activate the load game menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_main_load(char* str) {
|
static void menu_main_load(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
|
(void)wid;
|
||||||
|
|
||||||
load_game_menu();
|
load_game_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void menu_main_new(char* str)
|
|
||||||
*
|
|
||||||
* @brief Function to activate the new game menu.
|
* @brief Function to activate the new game menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_main_new(char* str) {
|
static void menu_main_new(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
|
(void)wid;
|
||||||
|
|
||||||
menu_main_close();
|
menu_main_close();
|
||||||
player_new();
|
player_new();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void menu_main_new(char* str)
|
|
||||||
*
|
|
||||||
* @brief Function to exit the main menu and game.
|
* @brief Function to exit the main menu and game.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_main_exit(char* str) {
|
static void menu_main_exit(unsigned int wid, char* str) {
|
||||||
(void)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
|
* 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
|
* nor anything of the likes (nor toolkit to stop rendering) while not
|
||||||
* leaking any texture.
|
* leaking any texture.
|
||||||
*/
|
*/
|
||||||
gl_freeTexture(window_getImage(wid, "imgLogo"));
|
gl_freeTexture(window_getImage(bg, "imgLogo"));
|
||||||
window_modifyImage(wid, "imgLogo", NULL);
|
window_modifyImage(bg, "imgLogo", NULL);
|
||||||
|
|
||||||
exit_game();
|
exit_game();
|
||||||
}
|
}
|
||||||
@ -218,33 +213,27 @@ void menu_small(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void menu_small_close(char* str)
|
|
||||||
*
|
|
||||||
* @brief Close the small ingame menu.
|
* @brief Close the small ingame menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_small_close(char* str) {
|
static void menu_small_close(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
window_destroy(window_get("Menu"));
|
window_destroy(wid);
|
||||||
menu_Close(MENU_SMALL);
|
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.
|
* @brief Close the small ingame menu and go back to the main menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_small_exit(char* str) {
|
static void menu_small_exit(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
window_destroy(window_get("Menu"));
|
window_destroy(wid);
|
||||||
menu_Close(MENU_SMALL);
|
menu_Close(MENU_SMALL);
|
||||||
menu_main();
|
menu_main();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void exit_game(void)
|
|
||||||
*
|
|
||||||
* @brief Exit the game.
|
* @brief Exit the game.
|
||||||
*/
|
*/
|
||||||
static void exit_game(void) {
|
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.
|
* @brief Close the information menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_info_close(char* str) {
|
static void menu_info_close(unsigned int wid, char* str) {
|
||||||
if(strcmp(str, "btnClose")==0)
|
(void)str;
|
||||||
window_destroy(window_get("Info"));
|
window_destroy(wid);
|
||||||
|
|
||||||
menu_Close(MENU_INFO);
|
menu_Close(MENU_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void info_outfits_menu(char* str)
|
|
||||||
*
|
|
||||||
* @brief Show the player what outfits she has.
|
* @brief Show the player what outfits she has.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void info_outfits_menu(char* str) {
|
static void info_outfits_menu(unsigned int parent, char* str) {
|
||||||
(void) str;
|
(void) str;
|
||||||
|
(void) parent;
|
||||||
char* buf;
|
char* buf;
|
||||||
unsigned int wid;
|
unsigned int wid;
|
||||||
|
|
||||||
@ -364,17 +349,16 @@ static void info_outfits_menu(char* str) {
|
|||||||
/* Buttons. */
|
/* Buttons. */
|
||||||
window_addButton(wid, -20, 20,
|
window_addButton(wid, -20, 20,
|
||||||
BUTTON_WIDTH, BUTTON_HEIGHT,
|
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.
|
* @brief Show the player her cargo.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void info_cargo_menu(char* str) {
|
static void info_cargo_menu(unsigned int parent, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
|
(void)parent;
|
||||||
unsigned int wid;
|
unsigned int wid;
|
||||||
char** buf;
|
char** buf;
|
||||||
int nbuf;
|
int nbuf;
|
||||||
@ -385,7 +369,7 @@ static void info_cargo_menu(char* str) {
|
|||||||
|
|
||||||
/* Buttons. */
|
/* Buttons. */
|
||||||
window_addButton(wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
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,
|
window_addButton(wid, -40 - BUTTON_WIDTH, 20,
|
||||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnJettisonCargo", "Jettison",
|
BUTTON_WIDTH, BUTTON_HEIGHT, "btnJettisonCargo", "Jettison",
|
||||||
cargo_jettison);
|
cargo_jettison);
|
||||||
@ -414,23 +398,19 @@ static void info_cargo_menu(char* str) {
|
|||||||
CARGO_WIDTH - 40, CARGO_HEIGHT - BUTTON_HEIGHT - 80,
|
CARGO_WIDTH - 40, CARGO_HEIGHT - BUTTON_HEIGHT - 80,
|
||||||
"lstCargo", buf, nbuf, 0, cargo_update);
|
"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.
|
* @brief Update the players cargo in the cargo menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void cargo_update(char* str) {
|
static void cargo_update(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
unsigned int wid;
|
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
if(player->ncommodities == 0) return; /* No cargo. */
|
if(player->ncommodities == 0) return; /* No cargo. */
|
||||||
|
|
||||||
wid = window_get("Cargo");
|
|
||||||
pos = toolkit_getListPos(wid, "lstCargo");
|
pos = toolkit_getListPos(wid, "lstCargo");
|
||||||
|
|
||||||
/* Can jettison all but mission cargo when not landed. */
|
/* 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.
|
* @brief Make the player jettison the currently selected cargo.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void cargo_jettison(char* str) {
|
static void cargo_jettison(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
unsigned int wid;
|
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
if(player->ncommodities == 0) return; /* No cargo, redundant check. */
|
if(player->ncommodities == 0) return; /* No cargo, redundant check. */
|
||||||
|
|
||||||
wid = window_get("Cargo");
|
|
||||||
pos = toolkit_getListPos(wid, "lstCargo");
|
pos = toolkit_getListPos(wid, "lstCargo");
|
||||||
|
|
||||||
/* Remove the cargo. */
|
/* Remove the cargo. */
|
||||||
@ -463,25 +439,24 @@ static void cargo_jettison(char* str) {
|
|||||||
player->commodities[pos].quantity);
|
player->commodities[pos].quantity);
|
||||||
|
|
||||||
/* We reopen the menu to recreate the list now. */
|
/* We reopen the menu to recreate the list now. */
|
||||||
menu_generic_close("closeCargo");
|
window_destroy(wid);
|
||||||
info_cargo_menu(NULL);
|
info_cargo_menu(0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fn static void info_missions_menu(char* str)
|
|
||||||
*
|
|
||||||
* @brief Show the players active missions.
|
* @brief Show the players active missions.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void info_missions_menu(char* str) {
|
static void info_missions_menu(unsigned int parent, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
|
(void)parent;
|
||||||
unsigned int wid;
|
unsigned int wid;
|
||||||
|
|
||||||
wid = window_create("Missions", -1, -1, MISSIONS_WIDTH, MISSIONS_HEIGHT);
|
wid = window_create("Missions", -1, -1, MISSIONS_WIDTH, MISSIONS_HEIGHT);
|
||||||
|
|
||||||
/* Buttons. */
|
/* Buttons. */
|
||||||
window_addButton(wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
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,
|
window_addButton(wid, -20, 40+BUTTON_HEIGHT,
|
||||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnAbortMission", "Abort",
|
BUTTON_WIDTH, BUTTON_HEIGHT, "btnAbortMission", "Abort",
|
||||||
@ -500,21 +475,16 @@ static void info_missions_menu(char* str) {
|
|||||||
"txtDesc", &gl_smallFont, &cBlack, NULL);
|
"txtDesc", &gl_smallFont, &cBlack, NULL);
|
||||||
|
|
||||||
/* List. */
|
/* 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.
|
* @brief Create the current mission list for the mission menu.
|
||||||
* @param first 1 if it's the first time run.
|
* @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;
|
int i, j;
|
||||||
char** misn_names;
|
char** misn_names;
|
||||||
unsigned int wid;
|
|
||||||
|
|
||||||
wid = window_get("Missions");
|
|
||||||
|
|
||||||
if(!first)
|
if(!first)
|
||||||
window_destroyWidget(wid, "lstMission");
|
window_destroyWidget(wid, "lstMission");
|
||||||
@ -536,23 +506,17 @@ static void mission_menu_genList(int first) {
|
|||||||
300, MISSIONS_HEIGHT-60,
|
300, MISSIONS_HEIGHT-60,
|
||||||
"lstMission", misn_names, j, 0, mission_menu_update);
|
"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.
|
* @brief Update the mission menu mission info based on what's selected.
|
||||||
* @param str Unused.
|
* @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;
|
char* active_misn;
|
||||||
Mission* misn;
|
Mission* misn;
|
||||||
unsigned int wid;
|
|
||||||
|
|
||||||
(void)str;
|
|
||||||
|
|
||||||
wid = window_get("Missions");
|
|
||||||
|
|
||||||
active_misn = toolkit_getList(wid, "lstMission");
|
active_misn = toolkit_getList(wid, "lstMission");
|
||||||
if(strcmp(active_misn, "No Missions")==0) {
|
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.
|
* @brief Abort a mission in the mission menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void mission_menu_abort(char* str) {
|
static void mission_menu_abort(unsigned int wid, char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
char* selected_misn;
|
char* selected_misn;
|
||||||
int pos;
|
int pos;
|
||||||
unsigned int wid;
|
|
||||||
Mission* misn;
|
Mission* misn;
|
||||||
|
|
||||||
wid = window_get("Missions");
|
|
||||||
|
|
||||||
selected_misn = toolkit_getList(wid, "lstMission");
|
selected_misn = toolkit_getList(wid, "lstMission");
|
||||||
|
|
||||||
if(dialogue_YesNo("Abort Mission",
|
if(dialogue_YesNo("Abort Mission",
|
||||||
@ -591,7 +550,7 @@ static void mission_menu_abort(char* str) {
|
|||||||
mission_cleanup(misn);
|
mission_cleanup(misn);
|
||||||
memmove(misn, &player_missions[pos+1],
|
memmove(misn, &player_missions[pos+1],
|
||||||
sizeof(Mission) * (MISSION_MAX-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,
|
BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||||
"btnMain", "Main Menu", menu_death_main);
|
"btnMain", "Main Menu", menu_death_main);
|
||||||
window_addButton(wid, 20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
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);
|
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.
|
* @brief Close the player death menu.
|
||||||
* @param str Unused.
|
* @param str Unused.
|
||||||
*/
|
*/
|
||||||
static void menu_death_main(char* str) {
|
static void menu_death_main(unsigned int parent, char* str) {
|
||||||
|
(void)parent;
|
||||||
(void)str;
|
(void)str;
|
||||||
unsigned int wid;
|
unsigned int wid;
|
||||||
|
|
||||||
@ -634,16 +592,3 @@ static void menu_death_main(char* str) {
|
|||||||
menu_main();
|
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