53#if OO_USE_CUSTOM_LOAD_SAVE
54#define COMMAND_MODIFIER_KEY "Ctrl"
61#if OO_USE_CUSTOM_LOAD_SAVE
63@interface MyOpenGLView (OOLoadSaveExtensions)
72@interface PlayerEntity (OOLoadSavePrivate)
74#if OOLITE_USE_APPKIT_LOAD_SAVE
81#if OO_USE_CUSTOM_LOAD_SAVE
84- (void) setGuiToSaveCommanderScreen: (NSString *)cdrName;
85- (void) setGuiToOverwriteScreen: (NSString *)cdrName;
86- (void) lsCommanders: (
GuiDisplayGen *)gui directory: (NSString*)directory pageNumber: (
int)page highlightName: (NSString *)highlightName;
87- (void) showCommanderShip: (
int)cdrArrayIndex;
88- (
int) findIndexOfCommander: (NSString *)cdrName;
89- (void) nativeSavePlayer: (NSString *)cdrName;
90- (BOOL) existingNativeSave: (NSString *)cdrName;
94- (void) writePlayerToPath:(NSString *)path;
99@implementation PlayerEntity (LoadSave)
105#if OO_USE_APPKIT_LOAD_SAVE_ALWAYS
107#elif OOLITE_USE_APPKIT_LOAD_SAVE
109 if ([[
UNIVERSE gameController] inFullScreenMode])
127#if OO_USE_APPKIT_LOAD_SAVE_ALWAYS
129#elif OOLITE_USE_APPKIT_LOAD_SAVE
131 if ([[
UNIVERSE gameController] inFullScreenMode])
147 NSString *tmp_path =
nil;
148 NSString *tmp_name =
nil;
149 NSString *dir = [[UNIVERSE gameController] playerFileDirectory];
152 tmp_path = save_path;
157 NSString *autosaveSuffix =
DESC(
@"autosave-commander-suffix");
159 if (![saveName hasSuffix:autosaveSuffix])
161 saveName = [
saveName stringByAppendingString:autosaveSuffix];
163 NSString *savePath = [
dir stringByAppendingPathComponent:[
saveName stringByAppendingString:@".oolite-save"]];
171 @catch (
id exception)
188 NSString *path =
nil;
194 OOLog(
@"quickSave.failed.noName",
@"%@",
@"ERROR no file name returned by [[gameView gameController] playerFileToLoad]");
196 format:@"ERROR no file name returned by [[gameView gameController] playerFileToLoad]"];
202 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
207- (void) setGuiToScenarioScreen:(
int)page
209 NSArray *scenarios = [UNIVERSE scenarios];
210 [UNIVERSE removeDemoShips];
216 BOOL guiChanged = (gui_screen != GUI_SCREEN_NEWGAME);
229 NSDictionary *scenario =
nil;
245 for (i = page*n_rows ; i <
count && row < start_row + n_rows ; i++)
247 scenario = [[UNIVERSE scenarios] objectAtIndex:i];
248 NSString *scenarioName = [
NSString stringWithFormat:@" %@ ",[
scenario oo_stringForKey:@"name"]];
254 if ((page+1) * n_rows <
count)
262 gui_screen = GUI_SCREEN_NEWGAME;
275 [UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
278- (void) addScenarioModel:(NSString *)shipKey
288 [UNIVERSE removeDemoShips];
290 if ([key hasPrefix:
@"Scenario"])
292 int item = [[
key componentsSeparatedByString:@":"] oo_intAtIndex:1];
293 NSDictionary *scenario = [[UNIVERSE scenarios] objectAtIndex:item];
302 NSString *shipKey = [
scenario oo_stringForKey:@"model"];
319 if ([key isEqualToString:
@"exit"])
324 if ([key hasPrefix:
@"__page"])
326 int page = [[
key componentsSeparatedByString:@":"] oo_intAtIndex:1];
330 int selection = [[
key componentsSeparatedByString:@":"] oo_intAtIndex:1];
332 NSDictionary *scenario = [[UNIVERSE scenarios] objectAtIndex:selection];
333 NSString *file = [
scenario oo_stringForKey:@"file" defaultValue:nil];
336 OOLog(
@"scenario.init.error",
@"%@",
@"No file entry found for scenario");
342 OOLog(
@"scenario.init.error",
@"Game file not found for scenario %@",file);
351 scenarioKey = [[
scenario oo_stringForKey:@"scenario" defaultValue:nil] retain];
360#if OO_USE_CUSTOM_LOAD_SAVE
366 NSString *dir = [[UNIVERSE gameController] playerFileDirectory];
369 if([
self handleGUIUpDownArrowKeys])
379 [UNIVERSE removeDemoShips];
392 if (([
self checkKeyPress:n_key_gui_arrow_left] || [
self checkKeyPress:n_key_gui_page_up]) && [[gui keyForRow:
BACKROW] isEqual:
GUI_KEY_OK])
399 if (([
self checkKeyPress:n_key_gui_arrow_right] || [
self checkKeyPress:n_key_gui_page_down]) && [[gui keyForRow:
MOREROW] isEqual:
GUI_KEY_OK])
409 if ([
self checkKeyPress:n_key_gui_select ignore_ctrl:YES]||[gameView isDown:
gvMouseDoubleClick])
412 switch ([gui selectedRow])
415 if ([
self status] == STATUS_START_GAME)
433 if ([cdr oo_boolForKey:
@"isSavedGame"])
434 return [
cdr oo_stringForKey:@"saved_game_path"];
440 NSString* newDir = [
cdr oo_stringForKey:@"saved_game_path"];
441 [[UNIVERSE gameController] setPlayerFileDirectory: newDir];
451 if([gameView isDown: 27])
463 NSString *dir = [[UNIVERSE gameController] playerFileDirectory];
465 if ([
self handleGUIUpDownArrowKeys])
472 if ([(NSDictionary *)[cdrDetailArray objectAtIndex:idx] oo_boolForKey:
@"isSavedGame"])
473 commanderNameString = [[
cdrDetailArray oo_dictionaryAtIndex:idx] oo_stringForKey:@"player_save_name" defaultValue:[[
cdrDetailArray oo_dictionaryAtIndex:idx] oo_stringForKey:@"player_name"]];
479 [UNIVERSE removeDemoShips];
493 [
NSString stringWithFormat:DESC(@"savescreen-commander-name-@"), commanderNameString]
498 if (((([gameView isDown:
gvMouseDoubleClick] || [
self checkKeyPress:n_key_gui_select]) && [gui selectedRow] ==
BACKROW) || ([
self checkKeyPress:n_key_gui_arrow_left] || [
self checkKeyPress:n_key_gui_page_up]))
506 if (((([gameView isDown:
gvMouseDoubleClick] || [
self checkKeyPress:n_key_gui_select]) && [gui selectedRow] ==
MOREROW) || ([
self checkKeyPress:n_key_gui_arrow_right] || [
self checkKeyPress:n_key_gui_page_down]))
515 if(([
self checkKeyPress:n_key_gui_select ignore_ctrl:YES]||[gameView isDown:
gvMouseDoubleClick]) && [commanderNameString length])
523 if (![cdr oo_boolForKey:
@"isSavedGame"])
526 NSString* newDir = [
cdr oo_stringForKey:@"saved_game_path"];
527 [[UNIVERSE gameController] setPlayerFileDirectory: newDir];
537 if ([
self existingNativeSave: commanderNameString])
545 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
551 if([gameView isDown: 27])
555 [[UNIVERSE gameView] resetTypedString];
569 id valueYes = [[[UNIVERSE descriptions] oo_stringForKey:@"load-previous-commander-yes" defaultValue:@"y"] lowercaseString];
570 id valueNo = [[[UNIVERSE descriptions] oo_stringForKey:@"load-previous-commander-no" defaultValue:@"n"] lowercaseString];
571 unsigned char cYes, cNo;
573 cYes = [
valueYes characterAtIndex: 0] & 0x00ff;
574 cNo = [
valueNo characterAtIndex: 0] & 0x00ff;
576 if (([
self checkKeyPress:n_key_gui_select] && ([gui selectedRow] ==
SAVE_OVERWRITE_YES_ROW))||[gameView isDown:cYes]||[gameView isDown:cYes - 32])
581 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
585 if (([
self checkKeyPress:n_key_gui_select] && ([gui selectedRow] ==
SAVE_OVERWRITE_NO_ROW))||[gameView isDown:27]||[gameView isDown:cNo]||[gameView isDown:cNo - 32])
597- (BOOL) loadPlayerFromFile:(NSString *)fileToOpen asNew:(BOOL)asNew
609 NSDictionary *fileDic =
nil;
610 NSString *fail_reason =
nil;
612 if (fileToOpen ==
nil)
614 fail_reason =
DESC(
@"loadfailed-no-file-specified");
620 OOLog(
@"load.progress",
@"%@",
@"Reading file");
624 fail_reason =
DESC(
@"loadfailed-could-not-load-file");
631 OOLog(
@"load.progress",
@"%@",
@"Restricting scenario");
632 NSString *scenarioRestrict = [
fileDic oo_stringForKey:@"scenario_restriction" defaultValue:nil];
633 if (scenarioRestrict ==
nil)
636 BOOL strict = [
fileDic oo_boolForKey:@"strict" defaultValue:NO];
647 if (![
UNIVERSE setUseAddOns:scenarioRestrict fromSaveGame:YES forceReinit:YES])
649 fail_reason =
DESC(
@"loadfailed-saved-game-failed-to-load");
657 OOLog(
@"load.progress",
@"%@",
@"Creating player ship");
659 NSString *shipKey =
nil;
660 NSDictionary *shipDict =
nil;
662 shipKey = [
fileDic oo_stringForKey:@"ship_desc"];
668 if (shipKey !=
nil) fail_reason = [
NSString stringWithFormat:DESC(@"loadfailed-could-not-find-ship-type-@-please-reinstall-the-appropriate-OXP"), shipKey];
669 else fail_reason =
DESC(
@"loadfailed-invalid-saved-game-no-ship-specified");
675 OOLog(
@"load.progress",
@"%@",
@"Initialising player entity");
676 if (![
self setUpAndConfirmOK:YES saveGame:YES])
678 fail_reason =
DESC(
@"loadfailed-could-not-reset-javascript");
685 OOLog(
@"load.progress",
@"%@",
@"Loading commander data");
686 if (![
self setCommanderDataFromDictionary:fileDic])
690 fail_reason =
DESC(
@"loadfailed-could-not-set-up-player-ship");
697 OOLog(
@"load.progress",
@"%@",
@"Recording save path");
703 [[[UNIVERSE gameView] gameController] setPlayerFileToLoad:fileToOpen];
704 [[[UNIVERSE gameView] gameController] setPlayerFileDirectory:fileToOpen];
709 OOLog(
@"load.failed",
@"***** Failed to load saved game \"%@\
": %@", [fileToOpen lastPathComponent], fail_reason ? fail_reason : (NSString *)
@"unknown error");
710 [[UNIVERSE gameController] setPlayerFileToLoad:nil];
711 [UNIVERSE handleGameOver];
712 [UNIVERSE clearPreviousMessage];
713 [UNIVERSE addMessage:DESC(@"loadfailed-saved-game-failed-to-load") forCount: 9.0];
714 if (fail_reason !=
nil) [UNIVERSE addMessage: fail_reason forCount: 9.0];
718 OOLog(
@"load.progress",
@"%@",
@"Creating system");
719 [UNIVERSE setTimeAccelerationFactor:TIME_ACCELERATION_FACTOR_DEFAULT];
720 [UNIVERSE setSystemTo:system_id];
721 [UNIVERSE removeAllEntitiesExceptPlayer];
722 [UNIVERSE setGalaxyTo: galaxy_number andReinit:YES];
723 [UNIVERSE setUpSpace];
724 [UNIVERSE setAutoSaveNow:NO];
726 OOLog(
@"load.progress",
@"%@",
@"Resetting player flight variables");
730 [UNIVERSE enterGUIViewModeWithMouseInteraction:NO];
748 OOLog(
@"load.progress",
@"%@",
@"Loading system market");
751 NSArray *market = [
fileDic oo_arrayForKey:@"localMarket"];
763 OOLog(
@"load.progress",
@"%@",
@"Setting scenario key");
765 NSString *scenario = [
fileDic oo_stringForKey:@"scenario_key" defaultValue:nil];
772 OOLog(
@"load.progress",
@"%@",
@"Starting JS engine");
776 OOLog(
@"load.progress",
@"%@",
@"Populating initial system");
777 [UNIVERSE populateNormalSpace];
785 HPVector dockedPos = [
fileDic oo_hpvectorForKey:@"docked_station_position"];
786 NSString *dockedRole = [
fileDic oo_stringForKey:@"docked_station_role" defaultValue:@""];
787 StationEntity *saveStation = [UNIVERSE stationWithRole:dockedRole andPosition:dockedPos];
788 if (saveStation !=
nil && [saveStation allowsSaving])
794 [UNIVERSE loadStationMarkets:[
fileDic oo_arrayForKey:@"station_markets"]];
796 OOLog(
@"load.progress",
@"%@",
@"Completing JS startup");
800 if ([[
UNIVERSE gameController] finishedLaunching]) [[UNIVERSE gameView] suppressKeysUntilKeyUp];
801 gui_screen = GUI_SCREEN_LOAD;
804 OOLog(
@"load.progress",
@"%@",
@"Loading complete");
811@implementation PlayerEntity (OOLoadSavePrivate)
813#if OOLITE_USE_APPKIT_LOAD_SAVE
819 oPanel.allowsMultipleSelection = NO;
820 oPanel.allowedFileTypes = [
NSArray arrayWithObject:@"oolite-save"];
822 if ([oPanel runModal] == NSOKButton)
824 NSURL *url = oPanel.URL;
839 sPanel.allowedFileTypes = [
NSArray arrayWithObject:@"oolite-save"];
840 sPanel.canSelectHiddenExtension = YES;
841 sPanel.nameFieldStringValue =
self.lastsaveName;
843 if ([sPanel runModal] == NSOKButton)
845 NSURL *url = sPanel.URL;
846 NSAssert(url.isFileURL,
@"Save panel with default configuration should not provide non-file URLs.");
848 NSString *path = url.path;
853 self.lastsaveName = newName;
862- (void) writePlayerToPath:(NSString *)path
864 NSString *errDesc =
nil;
865 NSDictionary *dict =
nil;
867 [[UNIVERSE gameView] resetTypedString];
871 OOLog(
@"save.failed",
@"***** SAVE ERROR: %s called with nil path.", __PRETTY_FUNCTION__);
876 if (dict ==
nil) errDesc =
@"could not construct commander data dictionary.";
877 else didSave = [
dict writeOOXMLToFile:path atomically:YES errorDescription:&errDesc];
880 [UNIVERSE clearPreviousMessage];
881 [UNIVERSE addMessage:DESC(@"game-saved") forCount:2];
883 save_path = [
path copy];
884 [[UNIVERSE gameController] setPlayerFileToLoad:save_path];
885 [[UNIVERSE gameController] setPlayerFileDirectory:save_path];
887 [UNIVERSE setAutoSaveNow:NO];
891 OOLog(
@"save.failed",
@"***** SAVE ERROR: %@", errDesc);
893 format:@"Attempt to save game to file '%@' failed: %@", path, errDesc];
895 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
900- (void)nativeSavePlayer:(NSString *)cdrName
902 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
903 NSString *savePath = [
dir stringByAppendingPathComponent:[
cdrName stringByAppendingPathExtension:@"oolite-save"]];
913#if OO_USE_CUSTOM_LOAD_SAVE
918 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
920 gui_screen = GUI_SCREEN_LOAD;
931 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
934 [UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
938- (void) setGuiToSaveCommanderScreen:(NSString *)cdrName
942 NSString *dir = [[UNIVERSE gameController] playerFileDirectory];
945 gui_screen = GUI_SCREEN_SAVE;
965 [UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
969- (void) setGuiToOverwriteScreen:(NSString *)cdrName
977 gui_screen = GUI_SCREEN_SAVE_OVERWRITE;
982 [
gui setText:[
NSString stringWithFormat:DESC(@"overwritescreen-commander-@-already-exists-overwrite-query"), cdrName]
983 forRow:SAVE_OVERWRITE_WARN_ROW
align: GUI_ALIGN_CENTER];
1001 [UNIVERSE enterGUIViewModeWithMouseInteraction:NO];
1006 return [[
cdr1 objectForKey:@"saved_game_path"] localizedCompare:[
cdr2 objectForKey:@"saved_game_path"]];
1010 directory: (NSString*) directory
1011 pageNumber: (
int)page
1012 highlightName: (NSString *)highlightName
1014 NSFileManager *cdrFileManager=[
NSFileManager defaultManager];
1021 NSArray *cdrArray=[
cdrFileManager commanderContentsOfPath: directory];
1025 if (!cdrDetailArray)
1031 @"YES", @"isParentFolder",
1032 [
directory stringByDeletingLastPathComponent], @"saved_game_path", nil]];
1034 for(i = 0; i < [
cdrArray count]; i++)
1036 NSString* path = [
cdrArray objectAtIndex:i];
1037 BOOL exists, isDirectory = NO;
1039 exists = [
cdrFileManager fileExistsAtPath:path isDirectory:&isDirectory];
1043 if (!isDirectory && [[[path pathExtension] lowercaseString] isEqualToString:
@"oolite-save"])
1050 [
cdr1 setObject: @"YES" forKey:@"isSavedGame"];
1051 [
cdr1 setObject: path forKey:@"saved_game_path"];
1055 if (isDirectory && ![[path lastPathComponent] hasPrefix:
@"."])
1062 if(![cdrDetailArray
count])
1077 if(highlightIdx < 0)
1079 OOLog(
@"save.list.commanders.commanderNotFound",
@"Commander %@ doesn't exist, very bad", highlightName);
1090 unsigned firstIndex=page *
NUMROWS;
1108 [
gui setArray: [
NSArray arrayWithObjects: DESC(@"loadsavescreen-commander-name"), DESC(@"loadsavescreen-rating"), nil]
1120 if ([
self status] == STATUS_START_GAME)
1144 for (i=firstIndex; i < lastIndex; i++)
1147 if ([cdr oo_boolForKey:
@"isSavedGame"])
1151 [
NSString stringWithFormat:@" %@ ",[
cdr oo_stringForKey:@"player_save_name" defaultValue:[
cdr oo_stringForKey:@"player_name"]]],
1152 [
NSString stringWithFormat:@" %@ ",ratingDesc],
1155 if ([[
self lastsaveName] isEqualToString:[cdr oo_stringForKey:
@"player_save_name" defaultValue:[cdr oo_stringForKey:
@"player_name"]]])
1157 highlightRowOnPage = row;
1163 if ([cdr oo_boolForKey:
@"isParentFolder"])
1166 [
NSString stringWithFormat:@" (..) %@ ", [[
cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]],
1174 if ([cdr oo_boolForKey:
@"isFolder"])
1177 [
NSString stringWithFormat:@" >> %@ ", [[
cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]],
1187 highlightIdx = (highlightRowOnPage -
STARTROW) + (currentPage *
NUMROWS);
1194- (BOOL) existingNativeSave: (NSString *)cdrName
1196 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
1198 NSString *savePath=[
dir stringByAppendingPathComponent:[
cdrName stringByAppendingPathExtension:@"oolite-save"]];
1199 return [[
NSFileManager defaultManager] fileExistsAtPath:savePath];
1204- (void) showCommanderShip:(
int)cdrArrayIndex
1207 [UNIVERSE removeDemoShips];
1214 if ([cdr oo_boolForKey:
@"isFolder"])
1216 NSString *folderDesc=[
NSString stringWithFormat: DESC(@"loadsavescreen-hold-@-and-press-return-to-open-folder-@"), @COMMAND_MODIFIER_KEY, [[
cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]];
1222 if ([cdr oo_boolForKey:
@"isParentFolder"])
1224 NSString *folderDesc=[
NSString stringWithFormat: DESC(@"loadsavescreen-hold-@-and-press-return-to-open-parent-folder-@"), @COMMAND_MODIFIER_KEY, [[
cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]];
1231 if (![cdr oo_boolForKey:
@"isSavedGame"])
return;
1236 NSString *shipDesc = [
cdr oo_stringForKey:@"ship_desc"];
1237 NSString *shipName =
nil;
1238 NSDictionary *shipDict =
nil;
1239 NSString *rating =
nil;
1246 [
dict setDictionary:shipDict];
1247 id subEntStatus = [
cdr objectForKey:@"subentities_status"];
1249 if (subEntStatus !=
nil) [
dict setObject:subEntStatus forKey:@"subentities_status"];
1252 shipName = [
shipDict oo_stringForKey:@"display_name"];
1253 if (shipName ==
nil) shipName = [
shipDict oo_stringForKey:KEY_NAME];
1258 shipName = [
cdr oo_stringForKey:@"ship_name" defaultValue:@"unknown"];
1261 shipName = [
shipName stringByAppendingString:@" - OXPs disabled or not installed"];
1265 shipName = [
shipName stringByAppendingString:@" - OXP not installed"];
1279 NSString *timeStamp =
nil;
1280 NSString *locationName = [
cdr oo_stringForKey:@"current_system_name"];
1286 if (locationName ==
nil)
1292 galNumber = [
cdr oo_intForKey:@"galaxy_number"] + 1;
1294 NSString *locationGov =
@"";
1295 NSString *locationEco =
@"";
1296 NSString *locationTL = [
cdr objectForKey:@"current_system_techlevel"] ? [
NSString stringWithFormat:@"%u", [
cdr oo_unsignedIntForKey:@"current_system_techlevel"] + 1] :
nil;
1299 locationGov = [
NSString stringWithFormat:@"%c", [
cdr oo_unsignedCharForKey:@"current_system_government"]];
1300 locationEco = [
NSString stringWithFormat:@" %c", (7 - [
cdr oo_unsignedCharForKey:@"current_system_economy"]) + 16];
1302 else locationTL =
@"";
1308 NSString *cdrDesc =
nil;
1310 cdrDesc = [
NSString stringWithFormat:DESC(@"loadsavescreen-commander-@-rated-@-has-@-legal-status-@-ship-@-location-@-g-@-eco-@-gov-@-tl-@-timestamp-@"),
1311 [
cdr oo_stringForKey:@"player_name"],
1330- (
int) findIndexOfCommander: (NSString *)cdrName
1335 NSString *currentName = [[
cdrDetailArray oo_dictionaryAtIndex: i] oo_stringForKey:@"player_save_name" defaultValue:[[
cdrDetailArray oo_dictionaryAtIndex: i] oo_stringForKey:@"player_name"]];
1336 if([cdrName compare: currentName] == NSOrderedSame)
1351#if OO_USE_CUSTOM_LOAD_SAVE
1353@implementation MyOpenGLView (OOLoadSaveExtensions)
1367 uint16_t personality = [dict oo_unsignedShortForKey:@"entity_personality" defaultValue:ENTITY_PERSONALITY_INVALID];
1372 personality = [[dict oo_stringForKey:@"ship_desc"] oo_hash] * [[dict oo_stringForKey:@"player_name"] oo_hash];
1392 if (doubleDeciCredits > 0)
1394 doubleDeciCredits = round(doubleDeciCredits);
1397 if (doubleDeciCredits <= threshold)
1399 return doubleDeciCredits;
1415 if ([
object isKindOfClass:[NSNumber
class]] && [
object oo_isFloatingPointNumber])
OOGUITabStop OOGUITabSettings[GUI_MAX_COLUMNS]
#define OOLog(class, format,...)
NSDictionary * OODictionaryFromFile(NSString *path)
Vector vector_up_from_quaternion(Quaternion quat)
Vector vector_right_from_quaternion(Quaternion quat)
Vector vector_forward_from_quaternion(Quaternion quat)
NSString * ClockToString(double clock, BOOL adjusting)
uint64_t OOCreditsQuantity
#define SAVE_OVERWRITE_NO_ROW
#define SAVE_OVERWRITE_YES_ROW
OOCreditsQuantity OODeciCreditsFromObject(id object)
OOCreditsQuantity OODeciCreditsFromObject(id object)
OOCreditsQuantity OODeciCreditsFromDouble(double doubleDeciCredits)
static uint16_t PersonalityForCommanderDict(NSDictionary *dict)
@ GUI_ROW_SCENARIOS_START
@ GUI_ROW_SCENARIOS_DETAIL
NSString * OODisplayRatingStringFromKillCount(unsigned kills)
NSString * OODisplayStringFromLegalStatus(int legalStatus)
NSString * KillCountToRatingAndKillString(unsigned kills)
#define PLAYER_SHIP_CLOCK_START
#define SCENARIO_OXP_DEFINITION_NONE
#define SCENARIO_OXP_DEFINITION_ALL
#define ShipScriptEventNoCx(ship, event,...)
#define ENTITY_PERSONALITY_INVALID
#define ENTITY_PERSONALITY_MAX
BOOL isCommandModifierKeyDown()
void overwriteCommanderInputHandler()
void saveCommanderInputHandler()
void showScenarioDetails()
NSString * commanderSelector()
void setGuiToLoadCommanderScreen()
NSComparisonResult sortCommanders(id cdr1, id cdr2, void *context)
BOOL loadPlayerWithPanel()
void savePlayerWithPanel()
void setGuiToIntroFirstGo:(BOOL justCobra)
void setOrientation:(Quaternion quat)
NSString * playerFileToLoad
BOOL setBackgroundTextureKey:(NSString *key)
OOColor * colorFromSetting:defaultValue:(NSString *setting,[defaultValue] OOColor *def)
BOOL setSelectedRow:(OOGUIRow row)
OOGUIRow addLongText:startingAtRow:align:(NSString *str,[startingAtRow] OOGUIRow row,[align] OOGUIAlignment alignment)
BOOL setForegroundTextureKey:(NSString *key)
void setText:forRow:(NSString *str,[forRow] OOGUIRow row)
void setText:forRow:align:(NSString *str,[forRow] OOGUIRow row,[align] OOGUIAlignment alignment)
void clearAndKeepBackground:(BOOL keepBackground)
void setSelectableRange:(NSRange range)
void setColor:forRow:(OOColor *color,[forRow] OOGUIRow row)
NSString * selectedRowKey()
void setTitle:(NSString *str)
void setTabStops:(OOGUITabSettings stops)
void setShowTextCursor:(BOOL yesno)
void setCurrentRow:(OOGUIRow value)
void setArray:forRow:(NSArray *arr,[forRow] OOGUIRow row)
void setKey:forRow:(NSString *str,[forRow] OOGUIRow row)
void suppressKeysUntilKeyUp()
NSMutableString * typedString
void setStringInput:(enum StringInput value)
void setTypedString:(NSString *value)
GameController * gameController
OOJavaScriptEngine * sharedEngine()
void garbageCollectionOpportunity:(BOOL force)
OOShipRegistry * sharedRegistry()
NSDictionary * shipInfoForKey:(NSString *key)
void showShipyardModel:shipData:personality:(NSString *shipKey,[shipData] NSDictionary *shipDict,[personality] uint16_t personality)
void showShipModelWithKey:shipData:personality:factorX:factorY:factorZ:inContext:(NSString *shipKey,[shipData] NSDictionary *shipData,[personality] uint16_t personality,[factorX] GLfloat factorX,[factorY] GLfloat factorY,[factorZ] GLfloat factorZ,[inContext] NSString *context)
void setGuiToScenarioScreen:(int page)
void playMenuPagePrevious()
void writePlayerToPath:(NSString *path)
void playSaveOverwriteNo()
void setGuiToLoadCommanderScreen()
void setGuiToStatusScreen()
BOOL loadPlayerFromFile:asNew:(NSString *fileToOpen,[asNew] BOOL asNew)
StationEntity * dockedStation()
void setShowDemoShips:(BOOL value)
NSDictionary * commanderDataDictionary()
void nativeSavePlayer:(NSString *cdrName)
void setLastsaveName:(NSString *value)
void completeSetUpAndSetTarget:(BOOL setTarget)
void calculateCurrentCargo()
void showScenarioDetails()
void lsCommanders:directory:pageNumber:highlightName:(GuiDisplayGen *gui,[directory] NSString *directory,[pageNumber] int page,[highlightName] NSString *highlightName)
void addScenarioModel:(NSString *shipKey)
void setDockedAtMainStation()
void showCommanderShip:(int cdrArrayIndex)
void setDockedStation:(StationEntity *station)
NSString * lastsaveName()
BOOL handleGUIUpDownArrowKeys()
int findIndexOfCommander:(NSString *cdrName)
void playSaveOverwriteYes()
void setGuiToOverwriteScreen:(NSString *cdrName)
BOOL loadPlayerWithPanel()
void setGuiToSaveCommanderScreen:(NSString *cdrName)
void savePlayerWithPanel()
BOOL doWorldEventUntilMissionScreen:(jsid message)
NSString * pathForFileNamed:inFolder:(NSString *fileName,[inFolder] NSString *folderName)
void setEntityPersonalityInt:(uint16_t value)
OOCommodityMarket * initialiseLocalMarket()
void setLocalMarket:(NSArray *market)
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque