[Add] Cargo affects weight. Also fixed bug when changing ships.

This commit is contained in:
Allanis 2013-06-02 16:43:16 +01:00
parent 28e936b828
commit 123ddb3d46
2 changed files with 13 additions and 3 deletions

View File

@ -771,13 +771,16 @@ static void shipyard_yoursTransport(char* str) {
static int shipyard_yoursTransportPrice(char* shipname) { static int shipyard_yoursTransportPrice(char* shipname) {
char* loc; char* loc;
Pilot* ship; Pilot* ship;
int price;
ship = player_getShip(shipname); ship = player_getShip(shipname);
loc = player_getLoc(shipname); loc = player_getLoc(shipname);
if(strcmp(loc, land_planet->name)==0) // Already here. if(strcmp(loc, land_planet->name)==0) // Already here.
return 0; return 0;
return (int)ship->solid->mass*500; price = (int)ship->solid->mass*500;
return price;
} }
// Spaceport bar. // Spaceport bar.

View File

@ -672,6 +672,7 @@ int pilot_addCargo(Pilot* pilot, Commodity* cargo, int quantity) {
q = pilot->cargo_free; q = pilot->cargo_free;
pilot->commodities[i].quantity += q; pilot->commodities[i].quantity += q;
pilot->cargo_free -= q; pilot->cargo_free -= q;
pilot->solid->mass += q;
return q; return q;
} }
@ -690,11 +691,14 @@ int pilot_addCargo(Pilot* pilot, Commodity* cargo, int quantity) {
} }
static void pilot_calcCargo(Pilot* pilot) { static void pilot_calcCargo(Pilot* pilot) {
int i; int i, q;
pilot->cargo_free = pilot->ship->cap_cargo; pilot->cargo_free = pilot->ship->cap_cargo;
for(i = 0; i < pilot->ncommodities; i++) for(i = 0; i < pilot->ncommodities; i++)
pilot->cargo_free -= pilot->commodities[i].quantity; q += pilot->commodities[i].quantity;
pilot->cargo_free -= q; // Reduce space left.
pilot->solid->mass = pilot->ship->mass + q; // Cargo affects weight.
} }
unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity) { unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity) {
@ -709,6 +713,7 @@ unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity)
pilot->commodities[pilot->ncommodities].id = ++mission_cargo_id; pilot->commodities[pilot->ncommodities].id = ++mission_cargo_id;
pilot->commodities[pilot->ncommodities].quantity = q; pilot->commodities[pilot->ncommodities].quantity = q;
pilot->cargo_free -= q; pilot->cargo_free -= q;
pilot->solid->mass += q;
pilot->ncommodities++; pilot->ncommodities++;
return pilot->commodities[pilot->ncommodities-1].id; return pilot->commodities[pilot->ncommodities-1].id;
@ -726,6 +731,7 @@ int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) {
// Remove cargo. // Remove cargo.
pilot->cargo_free += pilot->commodities[i].quantity; pilot->cargo_free += pilot->commodities[i].quantity;
pilot->solid->mass -= pilot->commodities[i].quantity;
memmove(pilot->commodities+i, pilot->commodities+i+1, memmove(pilot->commodities+i, pilot->commodities+i+1,
sizeof(PilotCommodity) * (pilot->ncommodities-i-1)); sizeof(PilotCommodity) * (pilot->ncommodities-i-1));
@ -757,6 +763,7 @@ int pilot_rmCargo(Pilot* pilot, Commodity* cargo, int quantity) {
pilot->commodities[i].quantity -= q; pilot->commodities[i].quantity -= q;
pilot->cargo_free += q; pilot->cargo_free += q;
pilot->solid->mass -= q;
return q; return q;
} }