Oolite
Loading...
Searching...
No Matches
PlayerEntity(OOLoadSavePrivate) Category Reference

Instance Methods

(void) - setGuiToLoadCommanderScreen
 
(void) - setGuiToSaveCommanderScreen:
 
(void) - setGuiToOverwriteScreen:
 
(void) - lsCommanders:directory:pageNumber:highlightName:
 
(void) - showCommanderShip:
 
(int- findIndexOfCommander:
 
(void) - nativeSavePlayer:
 
(BOOL) - existingNativeSave:
 
(void) - writePlayerToPath:
 
(NSComparisonResult) - sortCommanders [implementation]
 

Detailed Description

Definition at line 72 of file PlayerEntityLoadSave.m.

Method Documentation

◆ existingNativeSave:

- (BOOL) existingNativeSave: (NSString *)  cdrName

Definition at line 1011 of file PlayerEntityLoadSave.m.

1201 : (NSString *)cdrName
1202{
1203 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
1204
1205 NSString *savePath=[dir stringByAppendingPathComponent:[cdrName stringByAppendingPathExtension:@"oolite-save"]];
1206 return [[NSFileManager defaultManager] fileExistsAtPath:savePath];
1207}

◆ findIndexOfCommander:

- (int) findIndexOfCommander: (NSString *)  cdrName

Definition at line 1011 of file PlayerEntityLoadSave.m.

1337 : (NSString *)cdrName
1338{
1339 unsigned i;
1340 for (i=0; i < [cdrDetailArray count]; i++)
1341 {
1342 NSString *currentName = [[cdrDetailArray oo_dictionaryAtIndex: i] oo_stringForKey:@"player_save_name" defaultValue:[[cdrDetailArray oo_dictionaryAtIndex: i] oo_stringForKey:@"player_name"]];
1343 if([cdrName compare: currentName] == NSOrderedSame)
1344 {
1345 return i;
1346 }
1347 }
1348
1349 // not found!
1350 return -1;
1351}

◆ lsCommanders:directory:pageNumber:highlightName:

- (void) lsCommanders: (GuiDisplayGen *)  gui
directory: (NSString*)  directory
pageNumber: (int page
highlightName: (NSString *)  highlightName 

Definition at line 1011 of file PlayerEntityLoadSave.m.

1016 : (GuiDisplayGen *)gui
1017 directory: (NSString*) directory
1018 pageNumber: (int)page
1019 highlightName: (NSString *)highlightName
1020{
1021 NSFileManager *cdrFileManager=[NSFileManager defaultManager];
1022 int rangeStart=STARTROW;
1023 unsigned lastIndex;
1024 unsigned i;
1025 int row=STARTROW;
1026
1027 // cdrArray defined in PlayerEntity.h
1028 NSArray *cdrArray=[cdrFileManager commanderContentsOfPath: directory];
1029
1030 // get commander details so a brief rundown of the commander's details may
1031 // be displayed.
1032 if (!cdrDetailArray)
1033 cdrDetailArray=[[NSMutableArray alloc] init]; // alloc retains this so the retain further on in the code was unnecessary
1034 else
1035 [cdrDetailArray removeAllObjects];
1036
1037 [cdrDetailArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:
1038 @"YES", @"isParentFolder",
1039 [directory stringByDeletingLastPathComponent], @"saved_game_path", nil]];
1040
1041 for(i = 0; i < [cdrArray count]; i++)
1042 {
1043 NSString* path = [cdrArray objectAtIndex:i];
1044 BOOL exists, isDirectory = NO;
1045
1046 exists = [cdrFileManager fileExistsAtPath:path isDirectory:&isDirectory];
1047
1048 if (exists)
1049 {
1050 if (!isDirectory && [[[path pathExtension] lowercaseString] isEqualToString:@"oolite-save"])
1051 {
1052 NSDictionary *cdr = OODictionaryFromFile(path);
1053 if(cdr)
1054 {
1055 // okay use the same dictionary but add a 'saved_game_path' attribute
1056 NSMutableDictionary* cdr1 = [NSMutableDictionary dictionaryWithDictionary:cdr];
1057 [cdr1 setObject: @"YES" forKey:@"isSavedGame"];
1058 [cdr1 setObject: path forKey:@"saved_game_path"];
1059 [cdrDetailArray addObject: cdr1];
1060 }
1061 }
1062 if (isDirectory && ![[path lastPathComponent] hasPrefix:@"."])
1063 {
1064 [cdrDetailArray addObject: [NSDictionary dictionaryWithObjectsAndKeys: @"YES", @"isFolder", path, @"saved_game_path", nil]];
1065 }
1066 }
1067 }
1068
1069 if(![cdrDetailArray count])
1070 {
1071 // Empty directory; tell the user and exit immediately.
1072 [gui setText:DESC(@"loadsavescreen-no-commanders-found") forRow:STARTROW align:GUI_ALIGN_CENTER];
1073 return;
1074 }
1075
1076 [cdrDetailArray sortUsingFunction:sortCommanders context:NULL];
1077
1078 // Do we need to highlight a name?
1079 int highlightRowOnPage=STARTROW;
1080 int highlightIdx=0;
1081 if(highlightName)
1082 {
1083 highlightIdx=[self findIndexOfCommander: highlightName];
1084 if(highlightIdx < 0)
1085 {
1086 OOLog(@"save.list.commanders.commanderNotFound", @"Commander %@ doesn't exist, very bad", highlightName);
1087 highlightIdx=0;
1088 }
1089
1090 // figure out what page we need to be on
1091 page=highlightIdx/NUMROWS;
1092 highlightRowOnPage=highlightIdx % NUMROWS + STARTROW;
1093 }
1094
1095 // We now know for certain what page we're on -
1096 // set the first index of the first commander on this page.
1097 unsigned firstIndex=page * NUMROWS;
1098
1099 // Set up the GUI.
1100 OOGUITabSettings tabStop;
1101 tabStop[0]=0;
1102 tabStop[1]=160;
1103 tabStop[2]=270;
1104 [gui setTabStops: tabStop];
1105
1106 // clear text lines here
1107 for (i = EXITROW ; i < ENDROW + 1; i++)
1108 {
1109 [gui setText:@"" forRow:i align:GUI_ALIGN_LEFT];
1110 [gui setColor: [OOColor yellowColor] forRow: i];
1111 [gui setKey:GUI_KEY_SKIP forRow:i];
1112 }
1113
1114 [gui setColor: [OOColor greenColor] forRow: LABELROW];
1115 [gui setArray: [NSArray arrayWithObjects: DESC(@"loadsavescreen-commander-name"), DESC(@"loadsavescreen-rating"), nil]
1116 forRow:LABELROW];
1117
1118 if (page)
1119 {
1120 [gui setColor:[OOColor greenColor] forRow:STARTROW-1];
1121 [gui setArray:[NSArray arrayWithObjects:DESC(@"gui-back"), @" <-- ", nil]
1122 forRow:STARTROW-1];
1123 [gui setKey:GUI_KEY_OK forRow:STARTROW-1];
1124 rangeStart=STARTROW-1;
1125 }
1126
1127 if ([self status] == STATUS_START_GAME)
1128 {
1129 [gui setArray:[NSArray arrayWithObjects:DESC(@"oolite-loadsave-exit"), @" <----- ", nil] forRow:EXITROW];
1130 [gui setColor:[OOColor redColor] forRow:EXITROW];
1131 [gui setKey:GUI_KEY_OK forRow:EXITROW];
1132 rangeStart = EXITROW;
1133 }
1134
1135
1136 if (firstIndex + NUMROWS >= [cdrDetailArray count])
1137 {
1138 lastIndex=[cdrDetailArray count];
1139 [gui setSelectableRange: NSMakeRange(rangeStart, rangeStart + NUMROWS + 2)];
1140 }
1141 else
1142 {
1143 lastIndex=(page * NUMROWS) + NUMROWS;
1144 [gui setColor:[OOColor greenColor] forRow:ENDROW];
1145 [gui setArray:[NSArray arrayWithObjects:DESC(@"gui-more"), @" --> ", nil]
1146 forRow:ENDROW];
1147 [gui setKey:GUI_KEY_OK forRow:ENDROW];
1148 [gui setSelectableRange: NSMakeRange(rangeStart, MOREROW)];
1149 }
1150
1151 for (i=firstIndex; i < lastIndex; i++)
1152 {
1153 NSDictionary *cdr=[cdrDetailArray objectAtIndex: i];
1154 if ([cdr oo_boolForKey:@"isSavedGame"])
1155 {
1156 NSString *ratingDesc = OODisplayRatingStringFromKillCount([cdr oo_unsignedIntForKey:@"ship_kills"]);
1157 [gui setArray:[NSArray arrayWithObjects:
1158 [NSString stringWithFormat:@" %@ ",[cdr oo_stringForKey:@"player_save_name" defaultValue:[cdr oo_stringForKey:@"player_name"]]],
1159 [NSString stringWithFormat:@" %@ ",ratingDesc],
1160 nil]
1161 forRow:row];
1162 if ([[self lastsaveName] isEqualToString:[cdr oo_stringForKey:@"player_save_name" defaultValue:[cdr oo_stringForKey:@"player_name"]]])
1163 {
1164 highlightRowOnPage = row;
1165 }
1166
1167 [gui setKey:GUI_KEY_OK forRow:row];
1168 row++;
1169 }
1170 if ([cdr oo_boolForKey:@"isParentFolder"])
1171 {
1172 [gui setArray:[NSArray arrayWithObjects:
1173 [NSString stringWithFormat:@" (..) %@ ", [[cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]],
1174 @"",
1175 nil]
1176 forRow:row];
1177 [gui setColor: [OOColor orangeColor] forRow: row];
1178 [gui setKey:GUI_KEY_OK forRow:row];
1179 row++;
1180 }
1181 if ([cdr oo_boolForKey:@"isFolder"])
1182 {
1183 [gui setArray:[NSArray arrayWithObjects:
1184 [NSString stringWithFormat:@" >> %@ ", [[cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]],
1185 @"",
1186 nil]
1187 forRow:row];
1188 [gui setColor: [OOColor orangeColor] forRow: row];
1189 [gui setKey:GUI_KEY_OK forRow:row];
1190 row++;
1191 }
1192 }
1193 [gui setSelectedRow: highlightRowOnPage];
1194 highlightIdx = (highlightRowOnPage - STARTROW) + (currentPage * NUMROWS);
1195 // show the first ship, this will be the selected row
1196 [self showCommanderShip: highlightIdx];
1197}
OOGUITabStop OOGUITabSettings[GUI_MAX_COLUMNS]
#define OOLog(class, format,...)
Definition OOLogging.h:88
NSDictionary * OODictionaryFromFile(NSString *path)
unsigned count
#define ENDROW
#define EXITROW
#define NUMROWS
#define STARTROW
NSString * OODisplayRatingStringFromKillCount(unsigned kills)
BOOL setSelectedRow:(OOGUIRow row)
void setText:forRow:align:(NSString *str,[forRow] OOGUIRow row,[align] OOGUIAlignment alignment)
void setSelectableRange:(NSRange range)
void setColor:forRow:(OOColor *color,[forRow] OOGUIRow row)
void setTabStops:(OOGUITabSettings stops)
void setArray:forRow:(NSArray *arr,[forRow] OOGUIRow row)
void setKey:forRow:(NSString *str,[forRow] OOGUIRow row)
OOColor * orangeColor()
Definition OOColor.m:304
OOColor * redColor()
Definition OOColor.m:268
OOColor * greenColor()
Definition OOColor.m:274
OOColor * yellowColor()
Definition OOColor.m:292
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque

◆ nativeSavePlayer:

- (void) nativeSavePlayer: (NSString *)  cdrName

Definition at line 1420 of file PlayerEntityLoadSave.m.

907 :(NSString *)cdrName
908{
909 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
910 NSString *savePath = [dir stringByAppendingPathComponent:[cdrName stringByAppendingPathExtension:@"oolite-save"]];
911
912 ShipScriptEventNoCx(self, "playerWillSaveGame", OOJSSTR("STANDARD_SAVE"));
913
914 [self setLastsaveName:cdrName];
915
916 [self writePlayerToPath:savePath];
917}
#define OOJSSTR(str)
#define ShipScriptEventNoCx(ship, event,...)

◆ setGuiToLoadCommanderScreen

- (void) setGuiToLoadCommanderScreen

Definition at line 1420 of file PlayerEntityLoadSave.m.

923{
924 GuiDisplayGen *gui=[UNIVERSE gui];
925 NSString* dir = [[UNIVERSE gameController] playerFileDirectory];
926
927 gui_screen = GUI_SCREEN_LOAD;
928
929 [gui clear];
930 [gui setTitle:DESC(@"loadscreen-title")];
931
932 currentPage = 0;
933 [self lsCommanders:gui directory:dir pageNumber: currentPage highlightName:nil];
934
935 [gui setForegroundTextureKey:@"docked_overlay"];
936 [gui setBackgroundTextureKey:@"load_save"];
937
938 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
939
940 [self setShowDemoShips:YES];
941 [UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
942}
BOOL setBackgroundTextureKey:(NSString *key)
BOOL setForegroundTextureKey:(NSString *key)
void setTitle:(NSString *str)

◆ setGuiToOverwriteScreen:

- (void) setGuiToOverwriteScreen: (NSString *)  cdrName

Definition at line 1420 of file PlayerEntityLoadSave.m.

976 :(NSString *)cdrName
977{
978 GuiDisplayGen *gui=[UNIVERSE gui];
979 MyOpenGLView* gameView = [UNIVERSE gameView];
980
981 // Don't poll controls
982 pollControls=NO;
983
984 gui_screen = GUI_SCREEN_SAVE_OVERWRITE;
985
986 [gui clear];
987 [gui setTitle:[NSString stringWithFormat:DESC(@"overwrite-save-commander-@"), cdrName]];
988
989 [gui setText:[NSString stringWithFormat:DESC(@"overwritescreen-commander-@-already-exists-overwrite-query"), cdrName]
990 forRow:SAVE_OVERWRITE_WARN_ROW align: GUI_ALIGN_CENTER];
991
992 [gui setText:DESC(@"overwritescreen-yes") forRow: SAVE_OVERWRITE_YES_ROW align: GUI_ALIGN_CENTER];
993 [gui setKey:GUI_KEY_OK forRow: SAVE_OVERWRITE_YES_ROW];
994
995 [gui setText:DESC(@"overwritescreen-no") forRow: SAVE_OVERWRITE_NO_ROW align: GUI_ALIGN_CENTER];
996 [gui setKey:GUI_KEY_OK forRow: SAVE_OVERWRITE_NO_ROW];
997
998 [gui setSelectableRange: NSMakeRange(SAVE_OVERWRITE_YES_ROW, 2)];
999 [gui setSelectedRow: SAVE_OVERWRITE_NO_ROW];
1000
1001 // We can only leave this screen by answering yes or no, or esc. Therefore
1002 // use a specific overlay, to allow visual reminders of the available options.
1003 [gui setForegroundTextureKey:@"overwrite_overlay"];
1004 [gui setBackgroundTextureKey:@"load_save"];
1005
1006 [self setShowDemoShips:NO];
1007 [gameView setStringInput:gvStringInputNo];
1008 [UNIVERSE enterGUIViewModeWithMouseInteraction:NO]; // FIXME: should be YES, but was NO before introducing new mouse mode stuff. If set to YES, choices can be selected but not activated.
1009}
void setStringInput:(enum StringInput value)

◆ setGuiToSaveCommanderScreen:

- (void) setGuiToSaveCommanderScreen: (NSString *)  cdrName

Definition at line 1420 of file PlayerEntityLoadSave.m.

945 :(NSString *)cdrName
946{
947 GuiDisplayGen *gui=[UNIVERSE gui];
948 MyOpenGLView *gameView = [UNIVERSE gameView];
949 NSString *dir = [[UNIVERSE gameController] playerFileDirectory];
950
951 pollControls = NO;
952 gui_screen = GUI_SCREEN_SAVE;
953
954 [gui clear];
955 [gui setTitle:DESC(@"savescreen-title")];
956
957 currentPage = 0;
958 [self lsCommanders:gui directory:dir pageNumber: currentPage highlightName:nil];
959
960 [gui setText:DESC(@"savescreen-commander-name") forRow: INPUTROW];
961 [gui setColor:[OOColor cyanColor] forRow:INPUTROW];
962 [gui setShowTextCursor: YES];
963 [gui setCurrentRow: INPUTROW];
964
965 [gui setForegroundTextureKey:@"docked_overlay"];
966 [gui setBackgroundTextureKey:@"load_save"];
967
968 [gameView setTypedString:cdrName];
969 [gameView suppressKeysUntilKeyUp];
970
971 [self setShowDemoShips:YES];
972 [UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
973}
void setText:forRow:(NSString *str,[forRow] OOGUIRow row)
void setShowTextCursor:(BOOL yesno)
void setCurrentRow:(OOGUIRow value)
void suppressKeysUntilKeyUp()
void setTypedString:(NSString *value)
OOColor * cyanColor()
Definition OOColor.m:286

◆ showCommanderShip:

- (void) showCommanderShip: (int cdrArrayIndex

Definition at line 1011 of file PlayerEntityLoadSave.m.

1211 :(int)cdrArrayIndex
1212{
1213 GuiDisplayGen *gui=[UNIVERSE gui];
1214 [UNIVERSE removeDemoShips];
1215 NSDictionary *cdr=[cdrDetailArray objectAtIndex: cdrArrayIndex];
1216
1217 [gui setText:@"" forRow:CDRDESCROW align:GUI_ALIGN_LEFT];
1218 [gui setText:@"" forRow:CDRDESCROW + 1 align:GUI_ALIGN_LEFT];
1219 [gui setText:@"" forRow:CDRDESCROW + 2 align:GUI_ALIGN_LEFT];
1220
1221 if ([cdr oo_boolForKey:@"isFolder"])
1222 {
1223 NSString *folderDesc=[NSString stringWithFormat: DESC(@"loadsavescreen-hold-@-and-press-return-to-open-folder-@"), @COMMAND_MODIFIER_KEY, [[cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]];
1224 [gui setColor: [OOColor orangeColor] forRow: CDRDESCROW];
1225 [gui addLongText: folderDesc startingAtRow: CDRDESCROW align: GUI_ALIGN_LEFT];
1226 return;
1227 }
1228
1229 if ([cdr oo_boolForKey:@"isParentFolder"])
1230 {
1231 NSString *folderDesc=[NSString stringWithFormat: DESC(@"loadsavescreen-hold-@-and-press-return-to-open-parent-folder-@"), @COMMAND_MODIFIER_KEY, [[cdr oo_stringForKey:@"saved_game_path"] lastPathComponent]];
1232 [gui setColor: [OOColor orangeColor] forRow: CDRDESCROW];
1233 [gui addLongText: folderDesc startingAtRow: CDRDESCROW align: GUI_ALIGN_LEFT];
1234 return;
1235 }
1236 [gui setColor:[gui colorFromSetting:nil defaultValue:nil] forRow: CDRDESCROW];
1237
1238 if (![cdr oo_boolForKey:@"isSavedGame"]) return; // don't show things that aren't saved games
1239
1240 if ([self dockedStation] == nil) [self setDockedAtMainStation];
1241
1242 // Display the commander's ship.
1243 NSString *shipDesc = [cdr oo_stringForKey:@"ship_desc"];
1244 NSString *shipName = nil;
1245 NSDictionary *shipDict = nil;
1246 NSString *rating = nil;
1247 uint16_t personality = PersonalityForCommanderDict(cdr);
1248
1249 shipDict = [[OOShipRegistry sharedRegistry] shipInfoForKey:shipDesc];
1250 if(shipDict != nil)
1251 {
1252 NSMutableDictionary * dict = [[NSMutableDictionary alloc] initWithCapacity:[shipDict count] + 1];
1253 [dict setDictionary:shipDict];
1254 id subEntStatus = [cdr objectForKey:@"subentities_status"];
1255 // don't add it to the dictionary if there's no subentities_status key
1256 if (subEntStatus != nil) [dict setObject:subEntStatus forKey:@"subentities_status"];
1257 [self showShipyardModel:shipDesc shipData:dict personality:personality];
1258 [dict release];
1259 shipName = [shipDict oo_stringForKey:@"display_name"];
1260 if (shipName == nil) shipName = [shipDict oo_stringForKey:KEY_NAME];
1261 }
1262 else
1263 {
1264 [self showShipyardModel:@"oolite-unknown-ship" shipData:nil personality:personality];
1265 shipName = [cdr oo_stringForKey:@"ship_name" defaultValue:@"unknown"];
1266 if (![[UNIVERSE useAddOns] isEqualToString:SCENARIO_OXP_DEFINITION_ALL])
1267 {
1268 shipName = [shipName stringByAppendingString:@" - OXPs disabled or not installed"];
1269 }
1270 else
1271 {
1272 shipName = [shipName stringByAppendingString:@" - OXP not installed"];
1273 }
1274 }
1275
1276 // Make a short description of the commander
1277 NSString *legalDesc = OODisplayStringFromLegalStatus([cdr oo_intForKey:@"legal_status"]);
1278
1279 rating = KillCountToRatingAndKillString([cdr oo_unsignedIntForKey:@"ship_kills"]);
1280 OOCreditsQuantity money = OODeciCreditsFromObject([cdr objectForKey:@"credits"]);
1281
1282 // Nikos - Add some more information in the load game screen (current location, galaxy number and timestamp).
1283 //-------------------------------------------------------------------------------------------------------------------------
1284
1285 int galNumber;
1286 NSString *timeStamp = nil;
1287 NSString *locationName = [cdr oo_stringForKey:@"current_system_name"];
1288
1289 // If there is no key containing the name of the current system in
1290 // the savefile, calculating what it should have been is going to
1291 // be tricky now that system generation isn't seed based - but
1292 // this implies a save game well over 5 years old.
1293 if (locationName == nil)
1294 {
1295 // Leaving the location blank in this case is probably okay
1296 locationName = @"";
1297 }
1298
1299 galNumber = [cdr oo_intForKey:@"galaxy_number"] + 1; // Galaxy numbering starts at 0.
1300
1301 NSString *locationGov = @"";
1302 NSString *locationEco = @"";
1303 NSString *locationTL = [cdr objectForKey:@"current_system_techlevel"] ? [NSString stringWithFormat:@"%u", [cdr oo_unsignedIntForKey:@"current_system_techlevel"] + 1] : nil;
1304 if (locationTL)
1305 {
1306 locationGov = [NSString stringWithFormat:@"%c", [cdr oo_unsignedCharForKey:@"current_system_government"]];
1307 locationEco = [NSString stringWithFormat:@" %c", (7 - [cdr oo_unsignedCharForKey:@"current_system_economy"]) + 16];
1308 }
1309 else locationTL = @"";
1310
1311 timeStamp = ClockToString([cdr oo_doubleForKey:@"ship_clock" defaultValue:PLAYER_SHIP_CLOCK_START], NO);
1312
1313 //-------------------------------------------------------------------------------------------------------------------------
1314
1315 NSString *cdrDesc = nil;
1316
1317 cdrDesc = [NSString stringWithFormat:DESC(@"loadsavescreen-commander-@-rated-@-has-@-legal-status-@-ship-@-location-@-g-@-eco-@-gov-@-tl-@-timestamp-@"),
1318 [cdr oo_stringForKey:@"player_name"],
1319 rating,
1320 OOCredits(money),
1321 legalDesc,
1322 shipName,
1323 locationName,
1324 galNumber,
1325 locationEco,
1326 locationGov,
1327 locationTL,
1328 timeStamp];
1329
1330 //-------------------------------------------------------------------------------------------------------------------------
1331
1332 [gui addLongText:cdrDesc startingAtRow:CDRDESCROW align:GUI_ALIGN_LEFT];
1333
1334}
return nil
NSString * ClockToString(double clock, BOOL adjusting)
uint64_t OOCreditsQuantity
Definition OOTypes.h:182
OOCreditsQuantity OODeciCreditsFromObject(id object)
static uint16_t PersonalityForCommanderDict(NSDictionary *dict)
NSString * OODisplayStringFromLegalStatus(int legalStatus)
NSString * KillCountToRatingAndKillString(unsigned kills)
#define PLAYER_SHIP_CLOCK_START
#define SCENARIO_OXP_DEFINITION_ALL
#define UNIVERSE
Definition Universe.h:842
OOColor * colorFromSetting:defaultValue:(NSString *setting,[defaultValue] OOColor *def)
OOGUIRow addLongText:startingAtRow:align:(NSString *str,[startingAtRow] OOGUIRow row,[align] OOGUIAlignment alignment)
OOShipRegistry * sharedRegistry()
NSDictionary * shipInfoForKey:(NSString *key)

◆ sortCommanders

- (NSComparisonResult) sortCommanders (id)  cdr1
(id)  cdr2
(void *)  context 
implementation

Definition at line 1011 of file PlayerEntityLoadSave.m.

1012{
1013 return [[cdr1 objectForKey:@"saved_game_path"] localizedCompare:[cdr2 objectForKey:@"saved_game_path"]];
1014}

◆ writePlayerToPath:

- (void) writePlayerToPath: (NSString *)  path

Definition at line 1420 of file PlayerEntityLoadSave.m.

869 :(NSString *)path
870{
871 NSString *errDesc = nil;
872 NSDictionary *dict = nil;
873 BOOL didSave = NO;
874 [[UNIVERSE gameView] resetTypedString];
875
876 if (!path)
877 {
878 OOLog(@"save.failed", @"***** SAVE ERROR: %s called with nil path.", __PRETTY_FUNCTION__);
879 return;
880 }
881
882 dict = [self commanderDataDictionary];
883 if (dict == nil) errDesc = @"could not construct commander data dictionary.";
884 else didSave = [dict writeOOXMLToFile:path atomically:YES errorDescription:&errDesc];
885 if (didSave)
886 {
887 [UNIVERSE clearPreviousMessage]; // allow this to be given time and again
888 [UNIVERSE addMessage:DESC(@"game-saved") forCount:2];
889 [save_path autorelease];
890 save_path = [path copy];
891 [[UNIVERSE gameController] setPlayerFileToLoad:save_path];
892 [[UNIVERSE gameController] setPlayerFileDirectory:save_path];
893 // no duplicated autosave immediately after a save.
894 [UNIVERSE setAutoSaveNow:NO];
895 }
896 else
897 {
898 OOLog(@"save.failed", @"***** SAVE ERROR: %@", errDesc);
899 [NSException raise:@"OoliteException"
900 format:@"Attempt to save game to file '%@' failed: %@", path, errDesc];
901 }
902 [[UNIVERSE gameView] suppressKeysUntilKeyUp];
903 [self setGuiToStatusScreen];
904}

The documentation for this category was generated from the following file: