diff --git a/src/land.c b/src/land.c index 0be240b..31b257a 100644 --- a/src/land.c +++ b/src/land.c @@ -514,6 +514,10 @@ static void shipyard_update(char* str) { window_modifyText(secondary_wid, "txtDDesc", buf); + if(ship->price > player->credits) + window_disableButton(secondary_wid, "btnBuyShip"); + else window_enableButton(secondary_wid, "btnBuyShip"); + } static void shipyard_info(char* str) { @@ -539,6 +543,10 @@ static void shipyard_buy(char* str) { player_newShip(ship, player->solid->pos.x, player->solid->pos.y, 0., 0., player->solid->dir); + + player->credits -= ship->price; // Auch! Paying is hard! + + shipyard_update(NULL); } static void shipyard_yours(char* str) { @@ -610,16 +618,19 @@ static void shipyard_yoursUpdate(char* str) { char* shipname; Pilot* ship; char* loc; + int price; shipname = toolkit_getList(terciary_wid, "lstYourShips"); if(strcmp(shipname, "None")==0) return; // No ships. ship = player_getShip(shipname); loc = player_getLoc(ship->name); + price = shipyard_yoursTransportPrice(shipname); // Update the image. window_modifyImage(terciary_wid, "imgTarget", ship->ship->gfx_target); - credits2str(buf2, shipyard_yoursTransportPrice(shipname), 2); // Transport. + // Update text. + credits2str(buf2, price, 2); // Transport. credits2str(buf3, 0, 2); // Sell price. snprintf(buf, 256, @@ -647,6 +658,18 @@ static void shipyard_yoursUpdate(char* str) { buf4 = pilot_getOutfits(ship); window_modifyText(terciary_wid, "txtDOutfits", buf4); free(buf4); + + // Button disabling. + if(strcmp(land_planet->name, loc)) { + // Ship not here. + window_disableButton(terciary_wid, "btnChangeShip"); + if(price > player->credits) + window_disableButton(terciary_wid, "btnTransportShip"); + else window_enableButton(terciary_wid, "btnTransportShip"); + } else { + window_enableButton(terciary_wid, "btnChangeShip"); + window_disableButton(terciary_wid, "btnTransportShip"); + } } static void shipyard_yoursChange(char* str) {