[Add] player_getLoc and don't allow player to repeat ship names.
This commit is contained in:
parent
8da2cb1299
commit
269de8dcfe
24
src/land.c
24
src/land.c
@ -194,10 +194,14 @@ static void outfits(void) {
|
|||||||
int noutfits;
|
int noutfits;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
|
// Create window.
|
||||||
snprintf(buf, 128, "%s - Outfits", land_planet->name);
|
snprintf(buf, 128, "%s - Outfits", land_planet->name);
|
||||||
secondary_wid = window_create(buf, -1, -1,
|
secondary_wid = window_create(buf, -1, -1,
|
||||||
OUTFITS_WIDTH, OUTFITS_HEIGHT);
|
OUTFITS_WIDTH, OUTFITS_HEIGHT);
|
||||||
|
// Will allow buying from keyboard.
|
||||||
|
window_setFptr(secondary_wid, outfits_buy);
|
||||||
|
|
||||||
|
// Buttons.
|
||||||
window_addButton(secondary_wid, -20, 20,
|
window_addButton(secondary_wid, -20, 20,
|
||||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnCloseOutfits",
|
BUTTON_WIDTH, BUTTON_HEIGHT, "btnCloseOutfits",
|
||||||
"Close", outfits_close);
|
"Close", outfits_close);
|
||||||
@ -447,8 +451,8 @@ static void shipyard_update(char* str) {
|
|||||||
shipname = toolkit_getList(secondary_wid, "lstShipyard");
|
shipname = toolkit_getList(secondary_wid, "lstShipyard");
|
||||||
ship = ship_get(shipname);
|
ship = ship_get(shipname);
|
||||||
|
|
||||||
window_modifyText(secondary_wid, "txtDescription", ship->description);
|
|
||||||
window_modifyImage(secondary_wid, "imgTarget", ship->gfx_target);
|
window_modifyImage(secondary_wid, "imgTarget", ship->gfx_target);
|
||||||
|
window_modifyText(secondary_wid, "txtDescription", ship->description);
|
||||||
|
|
||||||
credits2str(buf2, ship->price, 2);
|
credits2str(buf2, ship->price, 2);
|
||||||
credits2str(buf3, player_credits, 2);
|
credits2str(buf3, player_credits, 2);
|
||||||
@ -516,11 +520,6 @@ static void shipyard_yoursClose(char* str) {
|
|||||||
static void spaceport_bar(void) {
|
static void spaceport_bar(void) {
|
||||||
secondary_wid = window_create("SpacePort Bar", -1, -1, BAR_WIDTH, BAR_HEIGHT);
|
secondary_wid = window_create("SpacePort Bar", -1, -1, BAR_WIDTH, BAR_HEIGHT);
|
||||||
|
|
||||||
window_addText(secondary_wid, 20, -30,
|
|
||||||
BAR_WIDTH-40, BAR_HEIGHT - 40 - BUTTON_HEIGHT, 0,
|
|
||||||
"txtDescription", &gl_smallFont, &cBlack,
|
|
||||||
land_planet->bar_description);
|
|
||||||
|
|
||||||
window_addButton(secondary_wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
window_addButton(secondary_wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||||
"btnCloseBar", "Close", spaceport_bar_close);
|
"btnCloseBar", "Close", spaceport_bar_close);
|
||||||
|
|
||||||
@ -528,7 +527,12 @@ static void spaceport_bar(void) {
|
|||||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnNews",
|
BUTTON_WIDTH, BUTTON_HEIGHT, "btnNews",
|
||||||
"News", (void(*)(char*))news);
|
"News", (void(*)(char*))news);
|
||||||
|
|
||||||
|
window_addText(secondary_wid, 20, -30,
|
||||||
|
BAR_WIDTH-40, BAR_HEIGHT - 40 - BUTTON_HEIGHT, 0,
|
||||||
|
"txtDescription", &gl_smallFont, &cBlack,
|
||||||
|
land_planet->bar_description);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spaceport_bar_close(char* str) {
|
static void spaceport_bar_close(char* str) {
|
||||||
if(strcmp(str, "btnCloseBar")==0)
|
if(strcmp(str, "btnCloseBar")==0)
|
||||||
window_destroy(secondary_wid);
|
window_destroy(secondary_wid);
|
||||||
@ -539,14 +543,14 @@ static void news(void) {
|
|||||||
terciary_wid = window_create("News Reports",
|
terciary_wid = window_create("News Reports",
|
||||||
-1, -1, NEWS_WIDTH, NEWS_HEIGHT);
|
-1, -1, NEWS_WIDTH, NEWS_HEIGHT);
|
||||||
|
|
||||||
|
window_addButton(terciary_wid, -20, 20,
|
||||||
|
BUTTON_WIDTH, BUTTON_HEIGHT,
|
||||||
|
"btnCloseNews", "Close", news_close);
|
||||||
|
|
||||||
window_addText(terciary_wid, 20, 20 + BUTTON_HEIGHT + 20,
|
window_addText(terciary_wid, 20, 20 + BUTTON_HEIGHT + 20,
|
||||||
NEWS_WIDTH-40, NEWS_HEIGHT - 20 - BUTTON_HEIGHT - 20 - 20 -20,
|
NEWS_WIDTH-40, NEWS_HEIGHT - 20 - BUTTON_HEIGHT - 20 - 20 -20,
|
||||||
0, "txtNews", &gl_smallFont, &cBlack,
|
0, "txtNews", &gl_smallFont, &cBlack,
|
||||||
"News reporters report that they are on strike right now! D:");
|
"News reporters report that they are on strike right now! D:");
|
||||||
|
|
||||||
window_addButton(terciary_wid, -20, 20,
|
|
||||||
BUTTON_WIDTH, BUTTON_HEIGHT,
|
|
||||||
"btnCloseNews", "Close", news_close);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void news_close(char* str) {
|
static void news_close(char* str) {
|
||||||
|
@ -810,7 +810,8 @@ void pilot_destroy(Pilot* p) {
|
|||||||
// Free the prisoned pilot!
|
// Free the prisoned pilot!
|
||||||
void pilots_free(void) {
|
void pilots_free(void) {
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < pilots; i++)
|
if(player) pilot_free(player);
|
||||||
|
for(i = 1; i < pilots; i++)
|
||||||
pilot_free(pilot_stack[i]);
|
pilot_free(pilot_stack[i]);
|
||||||
free(pilot_stack);
|
free(pilot_stack);
|
||||||
pilot_stack = NULL;
|
pilot_stack = NULL;
|
||||||
|
52
src/player.c
52
src/player.c
@ -139,6 +139,7 @@ void player_dead(void);
|
|||||||
void player_destroyed(void);
|
void player_destroyed(void);
|
||||||
char** player_ships(int* nships);
|
char** player_ships(int* nships);
|
||||||
Pilot* player_getShip(char* shipname);
|
Pilot* player_getShip(char* shipname);
|
||||||
|
char* player_getLoc(char* shipname);
|
||||||
|
|
||||||
// Prompt player name.
|
// Prompt player name.
|
||||||
void player_new(void) {
|
void player_new(void) {
|
||||||
@ -277,6 +278,7 @@ void player_newShip(Ship* ship, double px, double py,
|
|||||||
|
|
||||||
static void player_nameShipClose(char* str) {
|
static void player_nameShipClose(char* str) {
|
||||||
(void)str;
|
(void)str;
|
||||||
|
int i;
|
||||||
char* ship_name;
|
char* ship_name;
|
||||||
unsigned int wid;
|
unsigned int wid;
|
||||||
|
|
||||||
@ -287,6 +289,19 @@ static void player_nameShipClose(char* str) {
|
|||||||
toolkit_alert("Your ship's name must be at least three characters long.");
|
toolkit_alert("Your ship's name must be at least three characters long.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do not repeat the same ship name.
|
||||||
|
if(player && (strcmp(ship_name, player->name)==0)) {
|
||||||
|
toolkit_alert("You cannot name two ships the same!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < player_nstack; i++) {
|
||||||
|
if(strcmp(player_stack[i]->name, ship_name)==0) {
|
||||||
|
toolkit_alert("You cannot name two ships the same");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
player_newShipMake(ship_name);
|
player_newShipMake(ship_name);
|
||||||
|
|
||||||
@ -391,14 +406,8 @@ const char* player_rating(void) {
|
|||||||
else return player_ratings[7];
|
else return player_ratings[7];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return how much weapon. space the player has remaining.
|
|
||||||
int player_freeSpace(void) {
|
int player_freeSpace(void) {
|
||||||
int i, s;
|
// TODO: Get rid of it.
|
||||||
s = player->ship->cap_weapon;
|
|
||||||
for(i = 0; i < player->noutfits; i++)
|
|
||||||
s -= player->outfits[i].quantity * player->outfits[i].outfit->mass;
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return amount of outfits the player owns.
|
// Return amount of outfits the player owns.
|
||||||
@ -1325,15 +1334,22 @@ void player_destroyed(void) {
|
|||||||
player_timer = SDL_GetTicks() + 5000;
|
player_timer = SDL_GetTicks() + 5000;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a buffer with all the ships names.
|
// Return a buffer with all the ships names, or none if there
|
||||||
|
// aren't any.
|
||||||
char** player_ships(int* nships) {
|
char** player_ships(int* nships) {
|
||||||
int i;
|
int i;
|
||||||
char** shipnames;
|
char** shipnames;
|
||||||
|
|
||||||
(*nships) = player_nstack;
|
if(player_nstack==0) {
|
||||||
shipnames = malloc(sizeof(char*) * player_nstack);
|
(*nships) = 1;
|
||||||
for(i = 0; i < player_nstack; i++)
|
shipnames = malloc(sizeof(char*));
|
||||||
shipnames[i] = strdup(player_stack[i]->name);
|
shipnames[0] = strdup("None");
|
||||||
|
} else {
|
||||||
|
(*nships) = player_nstack;
|
||||||
|
shipnames = malloc(sizeof(char*) * player_nstack);
|
||||||
|
for(i = 0; i < player_nstack; i++)
|
||||||
|
shipnames[i] = strdup(player_stack[i]->name);
|
||||||
|
}
|
||||||
|
|
||||||
return shipnames;
|
return shipnames;
|
||||||
}
|
}
|
||||||
@ -1350,3 +1366,15 @@ Pilot* player_getShip(char* shipname) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return location of a specific ship.
|
||||||
|
char* player_getLoc(char* shipname) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < player_nstack; i++)
|
||||||
|
if(strcmp(player_stack[i]->name, shipname)==0)
|
||||||
|
return player_lstack[i];
|
||||||
|
|
||||||
|
WARN("Player ship '%s' not found in stack", shipname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user