[Add] Refuel button should appear more often now.
This commit is contained in:
parent
0817a156b9
commit
e10e6d4bcb
34
src/land.c
34
src/land.c
@ -108,6 +108,7 @@ static void misn_accept(unsigned int wid, char* str);
|
||||
static void misn_genList(unsigned int wid, int first);
|
||||
static void misn_update(unsigned int wid, char* str);
|
||||
/* Refuel. */
|
||||
static void land_checkAddRefuel(void);
|
||||
static unsigned int refuel_price(void);
|
||||
static void spaceport_refuel(unsigned int wid, char* str);
|
||||
|
||||
@ -224,6 +225,7 @@ static void commodity_sell(unsigned int wid, char* str) {
|
||||
|
||||
q = pilot_rmCargo(player, com, q);
|
||||
player->credits += q * com->medium;
|
||||
land_checkAddRefuel();
|
||||
commodity_update(wid, NULL);
|
||||
}
|
||||
|
||||
@ -487,6 +489,7 @@ static void outfits_sell(unsigned int wid, char* str) {
|
||||
if(outfit_canSell(outfit, q, 1) == 0) return;
|
||||
|
||||
player->credits += outfit->price * pilot_rmOutfit(player, outfit, q);
|
||||
land_checkAddRefuel();
|
||||
outfits_update(wid, NULL);
|
||||
}
|
||||
|
||||
@ -893,6 +896,7 @@ static void shipyard_yoursSell(unsigned int wid, char* str) {
|
||||
|
||||
/* Sold. */
|
||||
player->credits += price;
|
||||
land_checkAddRefuel();
|
||||
player_rmShip(shipname);
|
||||
dialogue_msg("Ship Sold", "You have sold your ship %s for %s SCred.",
|
||||
shipname, buf);
|
||||
@ -1119,6 +1123,36 @@ static void spaceport_refuel(unsigned int wid, char* str) {
|
||||
window_destroyWidget(wid, "btnRefuel");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if should add the refuel button and does if needed.
|
||||
*/
|
||||
static void land_checkAddRefuel(void) {
|
||||
char buf[32], cred[16];
|
||||
|
||||
/* Check to see if fuel conditions are met. */
|
||||
if(!planet_hasService(land_planet, PLANET_SERVICE_BASIC))
|
||||
return;
|
||||
|
||||
/* Full fuel. */
|
||||
if(player->fuel >= player->fuel_max)
|
||||
return;
|
||||
|
||||
/* Just enable button if it exists. */
|
||||
if(widget_exists(land_wid, "btnRefuel")) {
|
||||
window_enableButton(land_wid, "btnRefuel");
|
||||
} else { /* Create it. */
|
||||
credits2str(cred, refuel_price(), 2);
|
||||
snprintf(buf, 32, "Refuel %s", cred);
|
||||
window_addButton(land_wid, -20, 20+2*(BUTTON_HEIGHT+20),
|
||||
BUTTON_WIDTH, BUTTON_HEIGHT, "btnRefuel",
|
||||
buf, spaceport_refuel);
|
||||
}
|
||||
|
||||
/* Make sure player can click it. */
|
||||
if(player->credits < refuel_price())
|
||||
window_disableButton(land_wid, "btnRefuel");
|
||||
}
|
||||
|
||||
/* Land the player. */
|
||||
void land(Planet* p) {
|
||||
char buf[32], cred[16];
|
||||
|
@ -729,6 +729,31 @@ void window_destroy(const unsigned int wid) {
|
||||
toolkit_clearKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check to see if a widget exists.
|
||||
* @param wid Window to check widget in
|
||||
* @param wgtname Name of the widget to check.
|
||||
*/
|
||||
int widget_exists(const unsigned int wid, const char* wgtname) {
|
||||
Window* w = window_wget(wid);
|
||||
int i;
|
||||
|
||||
/* Get window. */
|
||||
if(w == NULL) {
|
||||
if(w == NULL) {
|
||||
WARN("Window '%d' does not exist", wid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Check for widget. */
|
||||
for(i = 0; i < w->nwidgets; i++)
|
||||
if(strcmp(wgtname, w->widgets[i].name)==0)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief wid Window to destroy widget in.
|
||||
* @param wid Window to destroy widget in.
|
||||
@ -1369,6 +1394,29 @@ static int toolkit_inputInput(Uint8 type, Widget* inp, SDLKey key) {
|
||||
|
||||
if(inp->type != WIDGET_INPUT) return 0;
|
||||
|
||||
/*
|
||||
* Handle arrow keys.
|
||||
* @todo Finish implementin, no cursor makes it complicated
|
||||
* to see where you are.
|
||||
*/
|
||||
#if 0
|
||||
if((type == SDL_KEYDOWN) &&
|
||||
((key == SDLK_LEFT) || (key == SDLK_RETURN))) {
|
||||
/* Move pointer. */
|
||||
if(key == SDLK_LEFT) {
|
||||
if(inp->dat.inp.pos > 0)
|
||||
inp->dat.inp.pos -= 1;
|
||||
}
|
||||
else if(key == SDLK_RIGHT) {
|
||||
if((inp->dat.inp.pos < inp->dat.inp.max-1) &&
|
||||
(inp->dat.inp.input[inp->dat.inp.pos+1] != '\0'))
|
||||
inp->dat.inp.pos += 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
mods = SDL_GetModState();
|
||||
if(inp->dat.inp.oneline && isascii(key)) {
|
||||
/* Backspace -> delete text. */
|
||||
|
@ -65,6 +65,7 @@ void window_imgColour(const unsigned int wid, char* name, glColour* colour);
|
||||
/* Get. */
|
||||
/* Generic. */
|
||||
int window_exists(const char* wdwname);
|
||||
int widget_exists(const unsigned int wid, const char* wgtname);
|
||||
unsigned int window_get(const char* wdwname);
|
||||
char* window_getInput(const unsigned int wid, char* name);
|
||||
void window_posWidget(const unsigned int wid,
|
||||
|
Loading…
Reference in New Issue
Block a user