Fixed incorrect counting of cargo when docked, which partially resulted in misbehaviour of -availableCargoSpace.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2336 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
3c10a9b2be
commit
6bb49554d3
@ -410,6 +410,248 @@ enabled by default in 1.73. To enable it, change
|
|||||||
shipData.load.shipyard.unknown to yes in logcontrol.plist.
|
shipData.load.shipyard.unknown to yes in logcontrol.plist.
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Changes between Oolite 1.72.1 and Oolite 1.72.2:
|
||||||
|
* Fixed bug in selecting ships after a spawn condition blocked the initial
|
||||||
|
selection. This was causing disappearing buoys and police ships with some
|
||||||
|
OXPs.
|
||||||
|
* Fixed a bug where by flooding the market when selling a ship, cargo remained
|
||||||
|
on the newly acquired ship even if said ship had no cargo carry capability.
|
||||||
|
Now, all cargo that cannot be sold when changing ships due to flooding the
|
||||||
|
market will be lost.
|
||||||
|
* Fixed an AI bug where a police ship that received a distress call while
|
||||||
|
returning to the station could get stuck after dealing with the call.
|
||||||
|
* Fixed a bug where defense ships launched by stations had a patrol AI instead
|
||||||
|
of a combat AI.
|
||||||
|
* Cloaking device mission now works again.
|
||||||
|
* Background images in HUD are now affected by HUD alpha (and thus HUD hiding).
|
||||||
|
* key_docking_clearance_request is now set in keyconfig.plist.
|
||||||
|
* Possible fix for texture corruption bug on Windows machines with more than
|
||||||
|
two processors.
|
||||||
|
* Cargo pods added by scripts now have cargo.
|
||||||
|
* Fixed a problem with JavaScript system property setup.
|
||||||
|
* playerStartedJumpCountdown JS event is now always playerStartedJumpCountdown
|
||||||
|
and never playerStartedJumpCountDown.
|
||||||
|
* Improved various error messages.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Changes between Oolite 1.72 and Oolite 1.72.1:
|
||||||
|
Crashes:
|
||||||
|
* (Non-Mac) Fixed crash when no sound device available.
|
||||||
|
* Fixed a bug making random ship selection take unnecessarily long when script
|
||||||
|
conditions failed - sometimes infinitely long.
|
||||||
|
* Strict play mode partially fixed - switching no longer crashes, but OXP
|
||||||
|
world scripts keep running, which they shouldn't.
|
||||||
|
* Fixed crash when colliding with a ship whose model couldn't be loaded, and
|
||||||
|
took steps to ensure that such ships don't exist anyway.
|
||||||
|
|
||||||
|
Game behaviour:
|
||||||
|
* Fuel now costs money as nature intended.
|
||||||
|
* Thargoid death curses no longer have infinite range.
|
||||||
|
* Tharglets created by scripts are now unpiloted.
|
||||||
|
* Probabilities for high-tech optional extras on ships are now calculated
|
||||||
|
correctly.
|
||||||
|
* Fix for stations/carriers becoming main station in interstellar space.
|
||||||
|
* Docking clearance cancelling works as intended, and docking clearance is not
|
||||||
|
required for escape pods.
|
||||||
|
|
||||||
|
Technicalities:
|
||||||
|
* (Mac) Enabled docking clearance system.
|
||||||
|
* Trumble sounds fixed.
|
||||||
|
* Fixed bug where going into any of the F6 screens with the injectors key
|
||||||
|
pressed would result in injectors continuing to run even after releasing the
|
||||||
|
key.
|
||||||
|
* SystemDescription.dot file (a tool for people translating Oolite) now
|
||||||
|
appears in the same directory as the log on all systems.
|
||||||
|
* Possible fix for rendering problems with Windows and ATI cards (but it's a
|
||||||
|
long shot).
|
||||||
|
|
||||||
|
Ship registry:
|
||||||
|
* Ships whose model can't be found are now dropped from the ship registry
|
||||||
|
(with a warning message).
|
||||||
|
* is_template now works properly (specifically, ships inheriting from
|
||||||
|
templates do not inherit the is_template value and get dropped).
|
||||||
|
* Subentities are no longer required to have roles.
|
||||||
|
* Ships with bad subentity definitions are reported and dropped.
|
||||||
|
* New ship key is_external_dependency suppresses warning when like_ships
|
||||||
|
resolution fails. (The ship is silently dropped.)
|
||||||
|
|
||||||
|
Misc configuration:
|
||||||
|
* "hasShipyard" shipdata key now works.
|
||||||
|
* Setting a shader uniform to a constant float with short syntax (e.g.
|
||||||
|
myUniform = 42;) in OpenStep-format property lists now works.
|
||||||
|
* Overall HUD alpha now affects comm log and message log. This also affects
|
||||||
|
hiding the HUD ("o" key while paused).
|
||||||
|
|
||||||
|
JavaScript:
|
||||||
|
* Galactic hyperspace behaviour properties updated in accordance with documentation
|
||||||
|
(http://wiki.alioth.net/index.php/Oolite_JavaScript_Reference:_PlayerShip#galacticHyperspaceBehaviour).
|
||||||
|
* playerBoughtEquipment event now fires even when equipment cost is 0.
|
||||||
|
* player.bounty fixed.
|
||||||
|
* player.spawnOne() now works (with deprecation warning, will be removed for
|
||||||
|
version 1.74).
|
||||||
|
* equipmentDamaged and equipmentDestroyed events now consistently provide the
|
||||||
|
equipment key rather than localized name.
|
||||||
|
* player.ship.setEquipmentStatus() now raises an equipmentDamaged event when
|
||||||
|
appropriate.
|
||||||
|
* Passing invalid parameters to Sound.play(), Sound.playSound(),
|
||||||
|
expandDescription() and displayNameForCommodity() no longer crashes Oolite.
|
||||||
|
* Ship.heatInsulation setter now works properly.
|
||||||
|
* System.infoForSystem() no longer causes delayed crash.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Changes between Oolite 1.71.2 and Oolite 1.72:
|
||||||
|
* New "ship registry" handles ship types and ship roles more robustly and
|
||||||
|
efficiently. Benefits include less stutter when generating ships (especially
|
||||||
|
traders and pirates) and various shipdata.plist errors being reported up
|
||||||
|
front (when rebuilding cache). Also adds new shipdata-overrides.plist and
|
||||||
|
shipyard-override.plist, which can be used to selectively override certain
|
||||||
|
properties of ships without redefining them completely. Overrides are
|
||||||
|
silently ignored for ships that don't have a "primary"
|
||||||
|
shipdata.plist/shipyard.plist entry.
|
||||||
|
* New equipment type handling. This is less far-reaching than the ship
|
||||||
|
registry, and isn't used everywhere, but it's exposed to JavaScript as
|
||||||
|
EquipmentInfo objects (see EliteWiki for documentation).
|
||||||
|
* Missiles no longer collide with parent on launch.
|
||||||
|
* Disarmed missiles now stay disarmed when cycling through targets with
|
||||||
|
Target System Memory Expansion.
|
||||||
|
* Workaround for key conflict in old BBC key config files: if both roll and
|
||||||
|
yaw are assigned to ,/. keys, yaw is disabled.
|
||||||
|
* Fix for NPCs becoming offenders when counterattacking player.
|
||||||
|
* Only one energy unit is allowed at a time. Thargoid Plans mission script now
|
||||||
|
reflects this.
|
||||||
|
* Approaching non-main planets (including the sun) no longer points compass at
|
||||||
|
main station.
|
||||||
|
* Player ship turrets now work.
|
||||||
|
* Escort turrets now work.
|
||||||
|
* Carriers can now control their launched defenders.
|
||||||
|
* Miniature planets from F7 screen no longer float around invisibly
|
||||||
|
mass-locking you.
|
||||||
|
* (Non-Mac) Fix failure to launch when cache is corrupt.
|
||||||
|
* Fixed rounding behaviour of some currency displays.
|
||||||
|
* Suppressed pointless "Cannot iterate into directory" messages.
|
||||||
|
* (Non-Mac) Support for joysticks with up to 16 axes and 64 buttons. If you
|
||||||
|
need more than 16 axes, I shall require photo evidence.
|
||||||
|
* More (all?) sound goes through customsounds.plist.
|
||||||
|
* (Non-Mac) SDL sound code rewritten to be more like Mac code. Most noticeable
|
||||||
|
effect is that more than one instance of a sound can be played at once. As a
|
||||||
|
result, afterburner2.ogg is no longer needed.
|
||||||
|
* (Non-Mac) Logs are now written to ~/.Oolite/Logs/under Linux and
|
||||||
|
\Oolite\Logs\ under Windows. (Oh yes, I intended to change it to GNUstep
|
||||||
|
default locations. Oh well.) OXP verifier logs also end up there, named by
|
||||||
|
OXP.
|
||||||
|
* (Mac only) Updated Smart Crash Reports to 1.5 for Leopard compatibility.
|
||||||
|
* Similarly, showShipModel: no longer generates escorts.
|
||||||
|
* More stuff made localizable.
|
||||||
|
* New is_template shipdata.plist property. Set this to yes/ for ships which
|
||||||
|
are only used through like_ships and are not intended to be used directly.
|
||||||
|
If your (otherwise working) OXP generates warnings about ships with no roles
|
||||||
|
or model attribute, you probably need this.
|
||||||
|
* New is_submunition shipdata.plist property for cluster weapons. Missiles
|
||||||
|
with this property inherit their launcher's current target.
|
||||||
|
* New shipdata.plist key hyperspace_motor_spin_time to modify jump countdown
|
||||||
|
time.
|
||||||
|
* New planetinfo.plist keys star_count_multiplier and nebula_count_multiplier.
|
||||||
|
(Can be used in universal section to modify overall star and nebula density.)
|
||||||
|
* Putting planets in interstellar space no longer breaks the game.
|
||||||
|
* Failure to set up a station is now handled somewhat more gracefully, with
|
||||||
|
useful diagnostic log messages.
|
||||||
|
* Added commsMessageByUnpiloted: for AIs and legacy scripts.
|
||||||
|
* switchLightsOn/Off now applies to subentities.
|
||||||
|
* Fixed some spurious errors in OXP verifier.
|
||||||
|
* Condition flags for equipment are now enforced when adding items directly,
|
||||||
|
not only when shopping. More condition flags are now available. The full
|
||||||
|
list is: available_to_all, requires_empty_pylon, requires_mounted_pylon,
|
||||||
|
requires_clean, requires_not_clean, portable_between_ships,
|
||||||
|
requires_free_passenger_berth, requires_full_fuel, requires_non_full_fuel.
|
||||||
|
Other types of condition are: requires_cargo_space, requires_equipment,
|
||||||
|
requires_any_equipment, incompatible_with_equipment. Legacy script
|
||||||
|
conditions can also be used (only apply to player).
|
||||||
|
* New HUD plist key reticle_target_sensitive makes target selection box go red
|
||||||
|
when active target is in position (requires Scanner Targeting Enhancement).
|
||||||
|
Also exposed to JS as player.ship.reticleTargetSensitive.
|
||||||
|
* Fix for the occasional 15-20 seconds slowdowns experienced during gameplay.
|
||||||
|
* Some AI tweaks from Eric, and general cleanup of AI formatting.
|
||||||
|
* Docking clearance support, see http://www.aegidian.org/bb/viewtopic.php?t=5060
|
||||||
|
* Oolite now builds for Irix, but (last I heard) doesn't run due to threading
|
||||||
|
issues in GNUstep.
|
||||||
|
* New shader uniform types randomFloat, randomUnitVector, randomVectorSpatial,
|
||||||
|
randomVectorRadial and randomQuaternion (which supports asMatrix option,
|
||||||
|
default is true).
|
||||||
|
* Various changes for 64-bit compatibility under OS X and Linux. This release
|
||||||
|
is not 64-bit, though.
|
||||||
|
* Oolite can now correctly count CPUs under Linux, not that this makes much
|
||||||
|
difference.
|
||||||
|
* New web site at oolite.org. (Hey, it's in the subversion log.)
|
||||||
|
* Spot the graphical tweaks!
|
||||||
|
|
||||||
|
|
||||||
|
JavaScript changes:
|
||||||
|
* Potential crashing bugs throughout JS code fixed (exceptions weren't being
|
||||||
|
handled properly). Also added more and better JS error checking.
|
||||||
|
* missionVariables object no longer treats strings starting with digits but
|
||||||
|
containing letters as numbers.
|
||||||
|
* AI sendScriptMessage: can now pass parameters. The AI statement
|
||||||
|
"sendScriptMessage: foo bar baz" is equivalent to the JS
|
||||||
|
ship.script.foo(["bar", "baz"]). Note that the parameters are passed as an
|
||||||
|
array of words.
|
||||||
|
* Debug console now allows definitions to be split over several lines; for
|
||||||
|
instance, you can type "this.test = function() {" on one line and
|
||||||
|
"return 3: }" on the next. Enter an empty line to cancel multi-line input.
|
||||||
|
Lines which are considered "incomplete" are echoed with a _ prefix instead
|
||||||
|
of >. (Mac-only: the integrated console also supports multi-line input using
|
||||||
|
option-return, as it always has.)
|
||||||
|
* New global function randomInhabitantsDescription(plural : Boolean) : String.
|
||||||
|
* Entity.call() is now only available when debug OXP is active.
|
||||||
|
* Entity.isValid now works for invalid entities.
|
||||||
|
* New Ship properties and methods: desiredSpeed, cargoSpaceUsed,
|
||||||
|
availableCargoSpace, passengerCount, passengerCapacity, remove().
|
||||||
|
* Renamed Ship properties: maxCargo -> cargoCapacity, shipDescription -> name,
|
||||||
|
shipDisplayName -> displayName.
|
||||||
|
* player split into player and player.ship. All Entity/Ship methods now live
|
||||||
|
in player.ship. There are compatibility accessors in player, which will be
|
||||||
|
removed in future (and generate warnings).
|
||||||
|
* New Player properties and methods: contractReputation, passengerReputation,
|
||||||
|
increaseContractReputation(), decreaseContractReputation(),
|
||||||
|
increasePassengerReputation(), decreasePassengerReputation(),
|
||||||
|
reticleTargetSensitive, rank, legalStatus, forwardShield, aftShield,
|
||||||
|
maxForwardShield, maxAftShield, forwardShieldRechargeRate,
|
||||||
|
aftShieldRechargeRate.
|
||||||
|
* player.orientation is now right way around.
|
||||||
|
* New System properties and methods: info and infoForSystem(), equivalent to
|
||||||
|
legact setPlanetInfo: and setSpecificPlanetInfo:. For example,
|
||||||
|
system.info["foo"] = "bar" is equivalent to "setPlanetInfo: foo bar".
|
||||||
|
Currently, values can only be written, not read. Also
|
||||||
|
countShipsWithPrimaryRole(), pseudoRandomNumber, pseudoRandom100,
|
||||||
|
pseudoRandom256.
|
||||||
|
* system.setSunNova() deprecated in favour of system.sun.goNova().
|
||||||
|
* Better error messages for legacy_addShip*() family.
|
||||||
|
* system properties now make some sort of sense in interstellar space.
|
||||||
|
* Vector renamed to Vector3D.
|
||||||
|
* Ability to pass several numbers instead of a vector or quaternion is
|
||||||
|
deprecated. Use an array or Vector3D instead. (For instance, instead of
|
||||||
|
ship.position.add(100, 0, 0) use ship.position.add([100, 0, 0]).)
|
||||||
|
* New script events: playerBoughtEquipment(equipmentKey),
|
||||||
|
equipmentDamaged(eqipmentKey), equipmentDestroyed(equipmentKey).
|
||||||
|
* New events for approaching and leaving planets:
|
||||||
|
shipEnteredPlanetaryVicinity(planet)/shipExitedPlanetaryVicinity(planet) for
|
||||||
|
JS, CLOSE_TO_PLANET/AWAY_FROM_PLANET for AIs. (Actually, I'm not clear on
|
||||||
|
how CLOSE_TO_PLANET differs from AEGIS_CLOSE_TO_PLANET. If none, suggest
|
||||||
|
removing CLOSE_TO_PLANET. Kaks?)
|
||||||
|
* shipLaunchedEscapePod() is now triggered slightly earlier, before resetting
|
||||||
|
legal status and trumbles.
|
||||||
|
|
||||||
|
|
||||||
|
NOTE: one warning generated by the ship registry is disabled by default for
|
||||||
|
the benefit of Realistic Shipyards, namely the warning when a shipyard.plist
|
||||||
|
entry does not correspond to a shipdata.plist entry. This warning will be
|
||||||
|
enabled by default in 1.73. To enable it, change
|
||||||
|
shipData.load.shipyard.unknown to yes in logcontrol.plist.
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Changes between Oolite 1.71.1 and Oolite 1.71.2:
|
Changes between Oolite 1.71.1 and Oolite 1.71.2:
|
||||||
@ -417,7 +659,7 @@ Changes between Oolite 1.71.1 and Oolite 1.71.2:
|
|||||||
space.
|
space.
|
||||||
* Fixed crash when an array in descriptions.plist is empty.
|
* Fixed crash when an array in descriptions.plist is empty.
|
||||||
* Suns, Q-mine explosions and wormholes are now the same size no matter which
|
* Suns, Q-mine explosions and wormholes are now the same size no matter which
|
||||||
direction youíre looking at them from.
|
direction you’re looking at them from.
|
||||||
* Fix for ships launching with the wrong AI.
|
* Fix for ships launching with the wrong AI.
|
||||||
* ECM, space compass and ident are now reset properly when restarting the game.
|
* ECM, space compass and ident are now reset properly when restarting the game.
|
||||||
* Fixed HUD alpha/hiddenness for empty missile slots.
|
* Fixed HUD alpha/hiddenness for empty missile slots.
|
||||||
@ -426,7 +668,7 @@ Changes between Oolite 1.71.1 and Oolite 1.71.2:
|
|||||||
* Creating a JavaScript timer with a negative delay value now creates a paused
|
* Creating a JavaScript timer with a negative delay value now creates a paused
|
||||||
timer as documented.
|
timer as documented.
|
||||||
* Player.alertEnergy and Player.alertHostiles now work on Windows and Linux.
|
* Player.alertEnergy and Player.alertHostiles now work on Windows and Linux.
|
||||||
* Squashed spurious ìship generated with infinite top speed!î log messages.
|
* Squashed spurious “ship generated with infinite top speed!” log messages.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -727,7 +969,7 @@ Changes between Oolite 1.68 and 1.69:
|
|||||||
* Advanced Navigation Array default key changed to ^ (shift-6 on UK keyboards)
|
* Advanced Navigation Array default key changed to ^ (shift-6 on UK keyboards)
|
||||||
to avoid surprise launches.
|
to avoid surprise launches.
|
||||||
* Save/load screens now show more information, and show the correct ship type
|
* Save/load screens now show more information, and show the correct ship type
|
||||||
even if it isnít currently installed (only applies to games saved with 1.69
|
even if it isn’t currently installed (only applies to games saved with 1.69
|
||||||
or later). Also, a question mark is now shown in place of unknown ships (but
|
or later). Also, a question mark is now shown in place of unknown ships (but
|
||||||
looks bad due to bugs in setting up smoothed models).
|
looks bad due to bugs in setting up smoothed models).
|
||||||
Under Mac OS X, this only applies in full-screen mode as standard system
|
Under Mac OS X, this only applies in full-screen mode as standard system
|
||||||
@ -737,7 +979,7 @@ Changes between Oolite 1.68 and 1.69:
|
|||||||
* (Mac OS X only) Support for a new Debug menu added. It is enabled by a
|
* (Mac OS X only) Support for a new Debug menu added. It is enabled by a
|
||||||
special OXP, Debug Menu.oxp.
|
special OXP, Debug Menu.oxp.
|
||||||
* New debugging key, key_dump_target_state, which dumps a lot of information
|
* New debugging key, key_dump_target_state, which dumps a lot of information
|
||||||
about the playerís target (or the player, if there is no target) to the log.
|
about the player’s target (or the player, if there is no target) to the log.
|
||||||
Not bound to anything by default.
|
Not bound to anything by default.
|
||||||
* New requires.plist key added: max_version. This is not expected to be useful
|
* New requires.plist key added: max_version. This is not expected to be useful
|
||||||
very often, except for Debug Menu.oxp. Any unknown keys in required.plist
|
very often, except for Debug Menu.oxp. Any unknown keys in required.plist
|
||||||
@ -745,7 +987,7 @@ Changes between Oolite 1.68 and 1.69:
|
|||||||
* Improved robustness in various ways, especially with regards to property
|
* Improved robustness in various ways, especially with regards to property
|
||||||
list parsing.
|
list parsing.
|
||||||
* Various redundant bits of code removed; code cleanup; some optimization.
|
* Various redundant bits of code removed; code cleanup; some optimization.
|
||||||
* Cache is no longer pruned at all. Since itís rebuilt when OXPs are changed,
|
* Cache is no longer pruned at all. Since it’s rebuilt when OXPs are changed,
|
||||||
the maximum size of the cache is limited by the installed OXPs. In practice,
|
the maximum size of the cache is limited by the installed OXPs. In practice,
|
||||||
sizes of a few MB can be expected. Under GNUstep, cache read/write should be
|
sizes of a few MB can be expected. Under GNUstep, cache read/write should be
|
||||||
more efficient and the folder the cache lives in will be created if needed.
|
more efficient and the folder the cache lives in will be created if needed.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
PlayerEntity.m
|
PlayerEntity.h
|
||||||
|
|
||||||
Entity subclass nominally representing the player's ship, but also
|
Entity subclass nominally representing the player's ship, but also
|
||||||
implementing much of the interaction, menu system etc. Breaking it up into
|
implementing much of the interaction, menu system etc. Breaking it up into
|
||||||
@ -524,6 +524,7 @@ waitingForStickCallback: 1;
|
|||||||
|
|
||||||
- (void) unloadCargoPods;
|
- (void) unloadCargoPods;
|
||||||
- (void) loadCargoPods;
|
- (void) loadCargoPods;
|
||||||
|
- (NSMutableArray *) shipCommodityData;
|
||||||
|
|
||||||
- (int) random_factor;
|
- (int) random_factor;
|
||||||
- (Random_Seed) galaxy_seed;
|
- (Random_Seed) galaxy_seed;
|
||||||
|
@ -253,6 +253,12 @@ static PlayerEntity *sSharedPlayer = nil;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (NSMutableArray *) shipCommodityData
|
||||||
|
{
|
||||||
|
return shipCommodityData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (int) random_factor
|
- (int) random_factor
|
||||||
{
|
{
|
||||||
return market_rnd;
|
return market_rnd;
|
||||||
|
@ -565,6 +565,7 @@ MA 02110-1301, USA.
|
|||||||
|
|
||||||
- (OOCargoQuantity) maxCargo;
|
- (OOCargoQuantity) maxCargo;
|
||||||
- (OOCargoQuantity) availableCargoSpace;
|
- (OOCargoQuantity) availableCargoSpace;
|
||||||
|
- (OOCargoQuantity) cargoQuantityOnBoard;
|
||||||
- (OOCargoType) cargoType;
|
- (OOCargoType) cargoType;
|
||||||
- (NSMutableArray *) cargo;
|
- (NSMutableArray *) cargo;
|
||||||
- (void) setCargo:(NSArray *) some_cargo;
|
- (void) setCargo:(NSArray *) some_cargo;
|
||||||
|
@ -1995,6 +1995,11 @@ ShipEntity* doOctreesCollide(ShipEntity* prime, ShipEntity* other)
|
|||||||
}
|
}
|
||||||
[_equipment removeObject:alterKey];
|
[_equipment removeObject:alterKey];
|
||||||
|
|
||||||
|
if ([equipmentKey isEqual:@"EQ_CARGO_BAY"])
|
||||||
|
{
|
||||||
|
max_cargo += extra_cargo;
|
||||||
|
}
|
||||||
|
|
||||||
// add the equipment
|
// add the equipment
|
||||||
[_equipment addObject:equipmentKey];
|
[_equipment addObject:equipmentKey];
|
||||||
}
|
}
|
||||||
@ -4453,10 +4458,47 @@ NSComparisonResult ComparePlanetsBySurfaceDistance(id i1, id i2, void* context)
|
|||||||
|
|
||||||
- (OOCargoQuantity) availableCargoSpace
|
- (OOCargoQuantity) availableCargoSpace
|
||||||
{
|
{
|
||||||
return [self maxCargo] - [[self cargo] count];
|
return [self maxCargo] - [self cargoQuantityOnBoard];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (OOCargoQuantity) cargoQuantityOnBoard
|
||||||
|
{
|
||||||
|
OOCargoQuantity cargoQtyOnBoard = 0;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
if ([self isPlayer] && [self status] == STATUS_DOCKED)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
The cargo array is nil when the player ship is docked, due to action in unloadCargopods. For
|
||||||
|
this reason, we must use a slightly more complex method to determine the quantity of cargo
|
||||||
|
carried in this case - Nikos 20090830
|
||||||
|
*/
|
||||||
|
PlayerEntity* player = [PlayerEntity sharedPlayer];
|
||||||
|
NSMutableArray* manifest = [[NSMutableArray arrayWithArray:[player shipCommodityData]] retain];
|
||||||
|
for (i = 0; i < [manifest count]; i++)
|
||||||
|
{
|
||||||
|
NSMutableArray* commodityInfo = [[NSMutableArray arrayWithArray:(NSArray *)[manifest objectAtIndex:i]] retain]; // retain
|
||||||
|
OOCargoQuantity quantity = [[commodityInfo objectAtIndex:MARKET_QUANTITY] intValue];
|
||||||
|
OOMassUnit commodityUnits = [[commodityInfo objectAtIndex:MARKET_UNITS] intValue];
|
||||||
|
|
||||||
|
if (commodityUnits == UNITS_KILOGRAMS) quantity /= 1000;
|
||||||
|
if (commodityUnits == UNITS_GRAMS) quantity /= 1000000;
|
||||||
|
cargoQtyOnBoard += quantity;
|
||||||
|
[commodityInfo release];
|
||||||
|
}
|
||||||
|
[manifest release];
|
||||||
|
}
|
||||||
|
else // if not docked, the cargo array is valid and can be used as per standard
|
||||||
|
{
|
||||||
|
cargoQtyOnBoard = [[self cargo] count];
|
||||||
|
}
|
||||||
|
|
||||||
|
return cargoQtyOnBoard;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (OOCargoType) cargoType
|
- (OOCargoType) cargoType
|
||||||
{
|
{
|
||||||
return cargo_type;
|
return cargo_type;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user