Various minor fixes I've forgotten about. Much too little work on camera system. JS shipLaunchedEscapePod called (for player) before resetting legal status and trumbles.

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@1701 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
Jens Ayton 2008-07-25 13:18:56 +00:00
parent 8f745e8978
commit f16c5b3629
8 changed files with 230 additions and 53 deletions

View File

@ -3552,6 +3552,119 @@
}; };
name = TestRelease; name = TestRelease;
}; };
1A581F5C0E311A59007594C1 /* Debug GCC 4.2/Leopard */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_VERSION = 4.2;
HEADER_SEARCH_PATHS = "$(HEADER_SEARCH_PATHS_QUOTED_1)";
HEADER_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/Cocoa-deps/Ogg Vorbis\"";
LIBRARY_SEARCH_PATHS = "$(LIBRARY_SEARCH_PATHS_QUOTED_1)";
LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/Cocoa-deps/Ogg Vorbis\"";
MACOSX_DEPLOYMENT_TARGET = 10.3;
MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.3;
OTHER_CFLAGS = "-DLOADSAVEGUI";
SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
};
name = "Debug GCC 4.2/Leopard";
};
1A581F5D0E311A59007594C1 /* Debug GCC 4.2/Leopard */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
PRODUCT_NAME = "Build All";
};
name = "Debug GCC 4.2/Leopard";
};
1A581F5E0E311A59007594C1 /* Debug GCC 4.2/Leopard */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1A846BA90D79F9570081280D /* oolite-version.xcconfig */;
buildSettings = {
COPY_PHASE_STRIP = NO;
COPY_SCHEMATA = 1;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
EXPORTED_SYMBOLS_FILE = "src/Cocoa/debug-exports.exp";
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/deps/Cocoa-deps/\"";
GCC_DEBUGGING_SYMBOLS = full;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = XP_UNIX;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
OO_DEBUG,
DEBUG_GRAPHVIZ,
DEBUG,
);
GCC_REUSE_STRINGS = YES;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
"$(HEADER_SEARCH_PATHS_QUOTED_1)",
"$(HEADER_SEARCH_PATHS_QUOTED_2)",
"$(HEADER_SEARCH_PATHS_QUOTED_3)",
"$(HEADER_SEARCH_PATHS_QUOTED_4)",
"$(HEADER_SEARCH_PATHS_QUOTED_5)",
"$(HEADER_SEARCH_PATHS_QUOTED_6)",
);
HEADER_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/deps/Cocoa-deps/Ogg Vorbis\"";
HEADER_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/src/Core/\"";
HEADER_SEARCH_PATHS_QUOTED_3 = "\"$(SRCROOT)/src/Core/Entites/\"";
HEADER_SEARCH_PATHS_QUOTED_4 = "\"$(SRCROOT)/src/Core/Materials/\"";
HEADER_SEARCH_PATHS_QUOTED_5 = "\"$(SRCROOT)/deps/Cross-platform-deps/SpiderMonkey/js/src\"";
HEADER_SEARCH_PATHS_QUOTED_6 = "\"$(SRCROOT)/deps/Cross-platform-deps/SpiderMonkey/js/xcode\"";
INFOPLIST_EXPAND_BUILD_SETTINGS = YES;
INFOPLIST_FILE = "src/Cocoa/Info-OoliteDev.plist";
INSTALL_PATH = "$(HOME)/Applications";
LIBRARY_SEARCH_PATHS = "";
MACOSX_DEPLOYMENT_TARGET = 10.3;
OGGVORBISROOT = "$(SRCROOT)/deps/Cocoa-deps/Ogg\\ Vorbis";
OTHER_CFLAGS = "-DLOADSAVEGUIXX";
OTHER_LDFLAGS = (
"$(OTHER_LDFLAGS_QUOTED_FOR_TARGET_1)",
"$(OTHER_LDFLAGS_QUOTED_FOR_TARGET_2)",
);
OTHER_LDFLAGS_QUOTED_FOR_TARGET_1 = "\"$(OGGVORBISROOT)/libOgg.a\"";
OTHER_LDFLAGS_QUOTED_FOR_TARGET_2 = "\"$(OGGVORBISROOT)/libVorbisAll.a\"";
PRODUCT_NAME = OoliteDev;
SECTORDER_FLAGS = "";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/src/Core/\" \"$(SRCROOT)/src/Core/Entites/\" \"$(SRCROOT)/src/Core/Materials/\" \"$(SRCROOT)/src/BSDCompat/\"";
WARNING_CFLAGS = (
"-Wall",
"-Wextra",
"-Wno-unused-parameter",
"-Wno-missing-field-initializers",
);
WRAPPER_EXTENSION = app;
ZERO_LINK = NO;
};
name = "Debug GCC 4.2/Leopard";
};
1A581F5F0E311A59007594C1 /* Debug GCC 4.2/Leopard */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = PNG_USER_CONFIG;
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/src/Core/Materials/\"";
INSTALL_PATH = /usr/local/lib;
MACOSX_DEPLOYMENT_TARGET = 10.3;
PREBINDING = NO;
PRODUCT_NAME = png;
SDKROOT_i386 = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
ZERO_LINK = NO;
};
name = "Debug GCC 4.2/Leopard";
};
1A71E6FD0BCE345800CD5C13 /* Development */ = { 1A71E6FD0BCE345800CD5C13 /* Development */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
@ -3628,6 +3741,7 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
08B31CAD08FE63D70038D42F /* Development */, 08B31CAD08FE63D70038D42F /* Development */,
1A581F5E0E311A59007594C1 /* Debug GCC 4.2/Leopard */,
08B31CAE08FE63D70038D42F /* Deployment */, 08B31CAE08FE63D70038D42F /* Deployment */,
1A0832D70C2F105000E3AE25 /* TestRelease */, 1A0832D70C2F105000E3AE25 /* TestRelease */,
); );
@ -3638,6 +3752,7 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
08B31CB108FE63D70038D42F /* Development */, 08B31CB108FE63D70038D42F /* Development */,
1A581F5C0E311A59007594C1 /* Debug GCC 4.2/Leopard */,
08B31CB208FE63D70038D42F /* Deployment */, 08B31CB208FE63D70038D42F /* Deployment */,
1A0832D80C2F105000E3AE25 /* TestRelease */, 1A0832D80C2F105000E3AE25 /* TestRelease */,
); );
@ -3648,6 +3763,7 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1A71E6FD0BCE345800CD5C13 /* Development */, 1A71E6FD0BCE345800CD5C13 /* Development */,
1A581F5F0E311A59007594C1 /* Debug GCC 4.2/Leopard */,
1A71E6FE0BCE345800CD5C13 /* Deployment */, 1A71E6FE0BCE345800CD5C13 /* Deployment */,
1A0832D60C2F105000E3AE25 /* TestRelease */, 1A0832D60C2F105000E3AE25 /* TestRelease */,
); );
@ -3658,6 +3774,7 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1AD267690C8305A200B4BFD1 /* Development */, 1AD267690C8305A200B4BFD1 /* Development */,
1A581F5D0E311A59007594C1 /* Debug GCC 4.2/Leopard */,
1AD2676A0C8305A200B4BFD1 /* Deployment */, 1AD2676A0C8305A200B4BFD1 /* Deployment */,
1AD2676B0C8305A200B4BFD1 /* TestRelease */, 1AD2676B0C8305A200B4BFD1 /* TestRelease */,
); );

View File

@ -32,7 +32,7 @@ MA 02110-1301, USA.
@class GuiDisplayGen, OOTrumble, MyOpenGLView, HeadUpDisplay, ShipEntity; @class GuiDisplayGen, OOTrumble, MyOpenGLView, HeadUpDisplay, ShipEntity;
@class OOSound, OOSoundSource, OOSoundReferencePoint; @class OOSound, OOSoundSource, OOSoundReferencePoint;
@class JoystickHandler, OOTexture; @class JoystickHandler, OOTexture, OOCamera;
#define SCRIPT_TIMER_INTERVAL 10.0 #define SCRIPT_TIMER_INTERVAL 10.0
@ -293,7 +293,7 @@ typedef enum
OOCargoQuantity current_cargo; OOCargoQuantity current_cargo;
NSPoint cursor_coordinates; NSPoint cursor_coordinates;
double witchspaceCountdown; float witchspaceCountdown;
// player commander data // player commander data
NSString *player_name; NSString *player_name;
@ -659,6 +659,8 @@ waitingForStickCallback: 1;
- (Vector) viewpointPosition; - (Vector) viewpointPosition;
- (Vector) viewpointOffset; - (Vector) viewpointOffset;
- (OOCamera *) currentCamera;
- (NSArray *) worldScriptNames; - (NSArray *) worldScriptNames;
- (NSDictionary *) worldScriptsByName; - (NSDictionary *) worldScriptsByName;

View File

@ -57,6 +57,7 @@ MA 02110-1301, USA.
#import "OOEntityFilterPredicate.h" #import "OOEntityFilterPredicate.h"
#import "OOShipRegistry.h" #import "OOShipRegistry.h"
#import "OOEquipmentType.h" #import "OOEquipmentType.h"
#import "OOCamera.h"
#import "OOScript.h" #import "OOScript.h"
#import "OOScriptTimer.h" #import "OOScriptTimer.h"
@ -950,7 +951,14 @@ static PlayerEntity *sSharedPlayer = nil;
thrust = [shipDict floatForKey:@"thrust" defaultValue:thrust]; thrust = [shipDict floatForKey:@"thrust" defaultValue:thrust];
hyperspaceMotorSpinTime = [shipDict doubleForKey:@"hyperspace_motor_spin_time" defaultValue:15.0]; if (![UNIVERSE strict])
{
hyperspaceMotorSpinTime = [shipDict floatForKey:@"hyperspace_motor_spin_time" defaultValue:DEFAULT_HYPERSPACE_SPIN_TIME];
}
else
{
hyperspaceMotorSpinTime = DEFAULT_HYPERSPACE_SPIN_TIME;
}
maxEnergy = [shipDict floatForKey:@"max_energy" defaultValue:maxEnergy]; maxEnergy = [shipDict floatForKey:@"max_energy" defaultValue:maxEnergy];
energy_recharge_rate = [shipDict floatForKey:@"energy_recharge_rate" defaultValue:energy_recharge_rate]; energy_recharge_rate = [shipDict floatForKey:@"energy_recharge_rate" defaultValue:energy_recharge_rate];
@ -1691,12 +1699,12 @@ double scoopSoundPlayTime = 0.0;
{ {
[self doBookkeeping:delta_t]; [self doBookkeeping:delta_t];
witchspaceCountdown -= delta_t; witchspaceCountdown -= delta_t;
if (witchspaceCountdown < 0.0) witchspaceCountdown = 0.0; if (witchspaceCountdown < 0.0f) witchspaceCountdown = 0.0f;
if (galactic_witchjump) if (galactic_witchjump)
[UNIVERSE displayCountdownMessage:[NSString stringWithFormat:DESC(@"witch-galactic-in-f-seconds"), witchspaceCountdown] forCount:1.0]; [UNIVERSE displayCountdownMessage:[NSString stringWithFormat:DESC(@"witch-galactic-in-f-seconds"), witchspaceCountdown] forCount:1.0];
else else
[UNIVERSE displayCountdownMessage:[NSString stringWithFormat:DESC(@"witch-to-@-in-f-seconds"), [UNIVERSE getSystemName:target_system_seed], witchspaceCountdown] forCount:1.0]; [UNIVERSE displayCountdownMessage:[NSString stringWithFormat:DESC(@"witch-to-@-in-f-seconds"), [UNIVERSE getSystemName:target_system_seed], witchspaceCountdown] forCount:1.0];
if (witchspaceCountdown == 0.0) if (witchspaceCountdown == 0.0f)
{ {
BOOL go = YES; BOOL go = YES;
@ -2006,6 +2014,46 @@ double scoopSoundPlayTime = 0.0;
} }
/* Return the current player-centric camera.
FIXME: this should store a set of cameras and return the current one.
Currently, it synthesizes a camera based on the various legacy things.
*/
- (OOCamera *) currentCamera
{
OOCamera *camera = nil;
Quaternion orient = kIdentityQuaternion;
camera = [[OOCamera alloc] init];
[camera autorelease];
[camera setPosition:[self viewpointPosition]];
/*switch ([UNIVERSE viewDirection])
{
case VIEW_FORWARD:
case VIEW_NONE:
case VIEW_GUI_DISPLAY:
case VIEW_BREAK_PATTERN:
orient = kIdentityQuaternion;
break;
case VIEW_AFT:
static const OOMatrix aft_matrix =
{{
{-1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, -1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f }
}};
}*/
[camera setOrientation:orient];
return camera;
}
- (void) drawEntity:(BOOL) immediate :(BOOL) translucent - (void) drawEntity:(BOOL) immediate :(BOOL) translucent
{ {
if ((status == STATUS_DEAD)||(status == STATUS_COCKPIT_DISPLAY)||(status == STATUS_DOCKED)||(status == STATUS_START_GAME)||[UNIVERSE breakPatternHide]) if ((status == STATUS_DEAD)||(status == STATUS_COCKPIT_DISPLAY)||(status == STATUS_DOCKED)||(status == STATUS_START_GAME)||[UNIVERSE breakPatternHide])
@ -3121,15 +3169,15 @@ double scoopSoundPlayTime = 0.0;
Vector origin = position; Vector origin = position;
int result = NO; int result = NO;
Quaternion q1 = orientation; Quaternion q1 = orientation;
status = STATUS_ESCAPE_SEQUENCE; // firstly status = STATUS_ESCAPE_SEQUENCE; // firstly
ship_clock_adjust += 43200 + 5400 * (ranrot_rand() & 127); // add up to 8 days until rescue! ship_clock_adjust += 43200 + 5400 * (ranrot_rand() & 127); // add up to 8 days until rescue!
q1.w = -q1.w; // player view is reversed remember! q1.w = -q1.w; // player view is reversed remember!
flightSpeed = OOMax_f(flightSpeed, 50.0f); flightSpeed = OOMax_f(flightSpeed, 50.0f);
vel = vector_multiply_scalar(v_forward, flightSpeed); vel = vector_multiply_scalar(v_forward, flightSpeed);
doppelganger = [UNIVERSE newShipWithName: ship_desc]; // retain count = 1 doppelganger = [UNIVERSE newShipWithName: ship_desc]; // retain count = 1
if (doppelganger) if (doppelganger)
{ {
@ -3143,16 +3191,16 @@ double scoopSoundPlayTime = 0.0;
[doppelganger setOwner:self]; [doppelganger setOwner:self];
[doppelganger setStatus:STATUS_IN_FLIGHT]; // necessary to get it going! [doppelganger setStatus:STATUS_IN_FLIGHT]; // necessary to get it going!
[doppelganger setBehaviour:BEHAVIOUR_IDLE]; [doppelganger setBehaviour:BEHAVIOUR_IDLE];
[UNIVERSE addEntity:doppelganger]; [UNIVERSE addEntity:doppelganger];
[[doppelganger getAI] setStateMachine:@"nullAI.plist"]; // fly straight on [[doppelganger getAI] setStateMachine:@"nullAI.plist"]; // fly straight on
result = [doppelganger universalID]; result = [doppelganger universalID];
[doppelganger release]; //release [doppelganger release]; //release
} }
// set up you // set up you
escapePod = [UNIVERSE newShipWithName:@"escape-capsule"]; // retained escapePod = [UNIVERSE newShipWithName:@"escape-capsule"]; // retained
if (escapePod != nil) if (escapePod != nil)
@ -3166,30 +3214,29 @@ double scoopSoundPlayTime = 0.0;
flightSpeed = 1.0f; flightSpeed = 1.0f;
flightPitch = 0.2f * (randf() - 0.5f); flightPitch = 0.2f * (randf() - 0.5f);
flightRoll = 0.2f * (randf() - 0.5f); flightRoll = 0.2f * (randf() - 0.5f);
float sheight = (float)(boundingBox.max.y - boundingBox.min.y); float sheight = (float)(boundingBox.max.y - boundingBox.min.y);
position = vector_subtract(position, vector_multiply_scalar(v_up, sheight)); position = vector_subtract(position, vector_multiply_scalar(v_up, sheight));
//remove escape pod //remove escape pod
[self removeEquipmentItem:@"EQ_ESCAPE_POD"]; [self removeEquipmentItem:@"EQ_ESCAPE_POD"];
//has_escape_pod = NO;
[self doScriptEvent:@"shipLaunchedEscapePod" withArgument:escapePod];
// reset legal status // reset legal status
legalStatus = 0; legalStatus = 0;
bounty = 0; bounty = 0;
// reset trumbles // reset trumbles
if (trumbleCount != 0) trumbleCount = 1; if (trumbleCount != 0) trumbleCount = 1;
// remove cargo // remove cargo
[cargo removeAllObjects]; [cargo removeAllObjects];
energy = 25; energy = 25;
[UNIVERSE addMessage:DESC(@"escape-sequence") forCount:4.5]; [UNIVERSE addMessage:DESC(@"escape-sequence") forCount:4.5];
shot_time = 0.0; shot_time = 0.0;
[self doScriptEvent:@"shipLaunchedEscapePod" withArgument:escapePod];
return result; return result;
} }

View File

@ -1439,22 +1439,22 @@ static NSTimeInterval time_last_frame;
if ((guiSelectedRow == GUI_ROW_OPTIONS_QUICKSAVE)&&(!disc_operation_in_progress)) if ((guiSelectedRow == GUI_ROW_OPTIONS_QUICKSAVE)&&(!disc_operation_in_progress))
{ {
NS_DURING NS_DURING
disc_operation_in_progress = YES; disc_operation_in_progress = YES;
[self quicksavePlayer]; [self quicksavePlayer];
NS_HANDLER NS_HANDLER
OOLog(kOOLogException, @"\n\n***** Handling localException: %@ : %@ *****\n\n",[localException name], [localException reason]); OOLog(kOOLogException, @"\n\n***** Handling localException: %@ : %@ *****\n\n",[localException name], [localException reason]);
if ([[localException name] isEqual:@"GameNotSavedException"]) // try saving game instead if ([[localException name] isEqual:@"GameNotSavedException"]) // try saving game instead
{ {
OOLog(kOOLogException, @"\n\n***** Trying a normal save instead *****\n\n"); OOLog(kOOLogException, @"\n\n***** Trying a normal save instead *****\n\n");
if ([controller inFullScreenMode]) if ([controller inFullScreenMode])
[controller pauseFullScreenModeToPerform:@selector(savePlayer) onTarget:self]; [controller pauseFullScreenModeToPerform:@selector(savePlayer) onTarget:self];
else
[self savePlayer];
}
else else
[self savePlayer]; {
} [localException raise];
else }
{
[localException raise];
}
NS_ENDHANDLER NS_ENDHANDLER
} }
if ((guiSelectedRow == GUI_ROW_OPTIONS_SAVE)&&(!disc_operation_in_progress)) if ((guiSelectedRow == GUI_ROW_OPTIONS_SAVE)&&(!disc_operation_in_progress))

View File

@ -64,6 +64,7 @@ MA 02110-1301, USA.
#define SHIP_MAX_CABIN_TEMP 256.0f #define SHIP_MAX_CABIN_TEMP 256.0f
#define SHIP_MIN_CABIN_TEMP 60.0f #define SHIP_MIN_CABIN_TEMP 60.0f
#define EJECTA_TEMP_FACTOR 0.85f // Ejected items have 85% of parent's temperature #define EJECTA_TEMP_FACTOR 0.85f // Ejected items have 85% of parent's temperature
#define DEFAULT_HYPERSPACE_SPIN_TIME 15.0f
#define SUN_TEMPERATURE 1250.0f #define SUN_TEMPERATURE 1250.0f
@ -130,7 +131,7 @@ MA 02110-1301, USA.
GLfloat max_flight_yaw; GLfloat max_flight_yaw;
GLfloat thrust; // acceleration GLfloat thrust; // acceleration
double hyperspaceMotorSpinTime; // duration of hyperspace countdown float hyperspaceMotorSpinTime; // duration of hyperspace countdown
// TODO: stick all equipment in a list, and move list from playerEntity to shipEntity. -- Ahruman // TODO: stick all equipment in a list, and move list from playerEntity to shipEntity. -- Ahruman
unsigned military_jammer_active: 1, // military_jammer unsigned military_jammer_active: 1, // military_jammer

View File

@ -294,7 +294,14 @@ static NSString * const kOOLogEntityBehaviourChanged = @"entity.behaviour.change
fuel = [shipDict unsignedShortForKey:@"fuel"]; // Does it make sense that this defaults to 0? Should it not be 70? -- Ahruman fuel = [shipDict unsignedShortForKey:@"fuel"]; // Does it make sense that this defaults to 0? Should it not be 70? -- Ahruman
fuel_accumulator = 1.0; fuel_accumulator = 1.0;
hyperspaceMotorSpinTime = [shipDict doubleForKey:@"hyperspace_motor_spin_time" defaultValue:15.0]; if (![UNIVERSE strict])
{
hyperspaceMotorSpinTime = [shipDict floatForKey:@"hyperspace_motor_spin_time" defaultValue:DEFAULT_HYPERSPACE_SPIN_TIME];
}
else
{
hyperspaceMotorSpinTime = DEFAULT_HYPERSPACE_SPIN_TIME;
}
bounty = [shipDict unsignedIntForKey:@"bounty"]; bounty = [shipDict unsignedIntForKey:@"bounty"];
@ -6980,18 +6987,20 @@ BOOL class_masslocks(int some_class)
if (energy < maxEnergy *0.125 && [self hasEscapePod] && (ranrot_rand() & 3) == 0) // 25% chance he gets to an escape pod if (energy < maxEnergy *0.125 && [self hasEscapePod] && (ranrot_rand() & 3) == 0) // 25% chance he gets to an escape pod
{ {
// TODO: abandoning ship should be split out into a separate method. // TODO: abandoning ship should be split out into a separate method.
[self removeEquipmentItem:@"EQ_ESCAPE_POD"]; if ([self launchEscapeCapsule] != NO_TARGET)
{
[shipAI setStateMachine:@"nullAI.plist"]; [self removeEquipmentItem:@"EQ_ESCAPE_POD"];
[shipAI setState:@"GLOBAL"];
behaviour = BEHAVIOUR_IDLE; [shipAI setStateMachine:@"nullAI.plist"];
frustration = 0.0; [shipAI setState:@"GLOBAL"];
[self launchEscapeCapsule]; behaviour = BEHAVIOUR_IDLE;
[self setScanClass: CLASS_CARGO]; // we're unmanned now! frustration = 0.0;
thrust = thrust * 0.5; [self setScanClass: CLASS_CARGO]; // we're unmanned now!
desired_speed = 0.0; thrust = thrust * 0.5;
maxFlightSpeed = 0.0; desired_speed = 0.0;
[self setHulk:YES]; maxFlightSpeed = 0.0;
[self setHulk:YES];
}
} }
} }
} }
@ -8043,7 +8052,6 @@ static BOOL AuthorityPredicate(Entity *entity, void *parameter)
arguments = [NSArray arrayWithObjects:argument1, argument2, nil]; arguments = [NSArray arrayWithObjects:argument1, argument2, nil];
NS_DURING NS_DURING
[self doScriptEvent:message withArguments:arguments]; [self doScriptEvent:message withArguments:arguments];
NS_HANDLER NS_HANDLER
OOLog(kOOLogException, @"***** Exception while performing script event %@ for %@: %@ : %@", message, [self shortDescription], [localException name], [localException reason]); OOLog(kOOLogException, @"***** Exception while performing script event %@ for %@: %@ : %@", message, [self shortDescription], [localException name], [localException reason]);

View File

@ -291,11 +291,11 @@ static unsigned IntegerFromString(const GLubyte **ioString)
const NSString *requiredExtension[] = const NSString *requiredExtension[] =
{ {
@"GL_ARB_multitexture",
@"GL_ARB_shader_objects",
@"GL_ARB_shading_language_100", @"GL_ARB_shading_language_100",
@"GL_ARB_fragment_shader", @"GL_ARB_fragment_shader",
@"GL_ARB_vertex_shader", @"GL_ARB_vertex_shader",
@"GL_ARB_multitexture",
@"GL_ARB_shader_objects",
nil // sentinel - don't remove! nil // sentinel - don't remove!
}; };
NSString **required = NULL; NSString **required = NULL;

View File

@ -3451,7 +3451,9 @@ static const OOMatrix starboard_matrix =
PlayerEntity *player = [PlayerEntity sharedPlayer]; PlayerEntity *player = [PlayerEntity sharedPlayer];
Entity *drawthing = nil; Entity *drawthing = nil;
OOCamera *camera = [player currentCamera];
OOLog(@"temp", @"%@", camera);
position = kZeroVector; position = kZeroVector;
inGUIMode = [player showDemoShips]; inGUIMode = [player showDemoShips];