Extra consistency checks to attempt to avoid "ERROR: status is STATUS_DEAD, not STATUS_DOCKED, but dockedStation is not nil" - player can't dock normally while dead, and player can't be destroyed while docked.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@3315 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
084248f98f
commit
efd5097efa
@ -4014,6 +4014,7 @@ static GLfloat launchRoll;
|
||||
|
||||
- (void) getDestroyedBy:(Entity *)whom context:(NSString *)why
|
||||
{
|
||||
if ([self isDocked]) return; // Can't die while docked. (Doing so would cause breakage elsewhere.)
|
||||
|
||||
OOLog(@"player.ship.damage", @"Player destroyed by %@ due to %@", whom, why);
|
||||
NSString *scoreMS = [NSString stringWithFormat:DESC(@"gameoverscreen-score-@-f"),
|
||||
|
@ -302,7 +302,7 @@ static NSDictionary* instructions(int station_id, Vector coords, float speed, fl
|
||||
NSArray* ships = [shipsOnApproach allKeys];
|
||||
for (i = 0; i < [ships count]; i++)
|
||||
{
|
||||
int sid = [(NSString *)[ships objectAtIndex:i] intValue];
|
||||
int sid = [ships oo_intAtIndex:i];
|
||||
if ([UNIVERSE entityForUniversalID:sid])
|
||||
[[UNIVERSE entityForUniversalID:sid] enterDock:self];
|
||||
}
|
||||
@ -311,7 +311,7 @@ static NSDictionary* instructions(int station_id, Vector coords, float speed, fl
|
||||
ships = [shipsOnHold allKeys];
|
||||
for (i = 0; i < [ships count]; i++)
|
||||
{
|
||||
int sid = [(NSString *)[ships objectAtIndex:i] intValue];
|
||||
int sid = [ships oo_intAtIndex:i];
|
||||
if ([UNIVERSE entityForUniversalID:sid])
|
||||
[[UNIVERSE entityForUniversalID:sid] enterDock:self];
|
||||
}
|
||||
@ -853,10 +853,10 @@ static NSDictionary* instructions(int station_id, Vector coords, float speed, fl
|
||||
}
|
||||
|
||||
|
||||
- (BOOL) shipIsInDockingCorridor:(ShipEntity*) ship
|
||||
- (BOOL) shipIsInDockingCorridor:(ShipEntity *)ship
|
||||
{
|
||||
if ((!ship)||(!ship->isShip))
|
||||
return NO;
|
||||
if (!ship || ![ship isShip]) return NO;
|
||||
if ([ship isPlayer] && [ship status] == STATUS_DEAD) return NO;
|
||||
|
||||
Quaternion q0 = quaternion_multiply(port_orientation, orientation);
|
||||
Vector vi = vector_right_from_quaternion(q0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user