project_files/HedgewarsMobile/Classes/CreationChamber.m
branchios-develop
changeset 12872 00215a7ec5f5
parent 11281 9c021eadd374
child 13167 c129707eb1e6
equal deleted inserted replaced
12871:2c06b1120749 12872:00215a7ec5f5
    21 #import "weapons.h"
    21 #import "weapons.h"
    22 
    22 
    23 @implementation CreationChamber
    23 @implementation CreationChamber
    24 
    24 
    25 #pragma mark Checking status
    25 #pragma mark Checking status
    26 +(void) createFirstLaunch {
    26 + (void)createFirstLaunch {
    27     DLog(@"Creating necessary files");
    27     DLog(@"Creating necessary files");
    28     NSInteger index;
    28     NSInteger index;
    29 
    29 
    30     // SAVES - just delete and overwrite
    30     // SAVES - just delete and overwrite
    31     if ([[NSFileManager defaultManager] fileExistsAtPath:SAVES_DIRECTORY()])
    31     if ([[NSFileManager defaultManager] fileExistsAtPath:SAVES_DIRECTORY()])
    48     // TEAMS - update exisiting teams with new format
    48     // TEAMS - update exisiting teams with new format
    49     NSArray *teamNames = [[NSArray alloc] initWithObjects:@"Edit Me!",@"Ninjas",@"Pirates",@"Robots",nil];
    49     NSArray *teamNames = [[NSArray alloc] initWithObjects:@"Edit Me!",@"Ninjas",@"Pirates",@"Robots",nil];
    50     index = 0;
    50     index = 0;
    51     for (NSString *name in teamNames)
    51     for (NSString *name in teamNames)
    52         [self createTeamNamed:name ofType:index++ controlledByAI:[name isEqualToString:@"Robots"]];
    52         [self createTeamNamed:name ofType:index++ controlledByAI:[name isEqualToString:@"Robots"]];
    53     [teamNames release];
       
    54 
    53 
    55     // SCHEMES - always overwrite and delete custom ones
    54     // SCHEMES - always overwrite and delete custom ones
    56     if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES)
    55     if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES)
    57         [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL];
    56         [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL];
    58     NSArray *schemeNames = [[NSArray alloc] initWithObjects:@"Default",@"Pro Mode",@"Shoppa",@"Clean Slate",
    57     NSArray *schemeNames = [[NSArray alloc] initWithObjects:@"Default",@"Pro Mode",@"Shoppa",@"Clean Slate",
    59                             @"Minefield",@"Barrel Mayhem",@"Tunnel Hogs",@"Fort Mode",@"Timeless",
    58                             @"Minefield",@"Barrel Mayhem",@"Tunnel Hogs",@"Fort Mode",@"Timeless",
    60                             @"Thinking with Portals",@"King Mode",@"Construction Mode",nil];
    59                             @"Thinking with Portals",@"King Mode",@"Construction Mode",nil];
    61     index = 0;
    60     index = 0;
    62     for (NSString *name in schemeNames)
    61     for (NSString *name in schemeNames)
    63         [self createSchemeNamed:name ofType:index++];
    62         [self createSchemeNamed:name ofType:index++];
    64     [schemeNames release];
       
    65 
    63 
    66     // WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically)
    64     // WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically)
    67     NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate",
    65     NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate",
    68                             @"Minefield",@"Thinking with Portals",@"One of Everything",@"Highlander",@"Construction Mode",@"Shoppa Pro",nil];
    66                             @"Minefield",@"Thinking with Portals",@"One of Everything",@"Highlander",@"Construction Mode",@"Shoppa Pro",nil];
    69     index = 0;
    67     index = 0;
    70     for (NSString *name in weaponNames)
    68     for (NSString *name in weaponNames)
    71         [self createWeaponNamed:name ofType:index++];
    69         [self createWeaponNamed:name ofType:index++];
    72     [weaponNames release];
       
    73 }
    70 }
    74 
    71 
    75 #pragma mark Settings
    72 #pragma mark Settings
    76 +(void) createSettings {
    73 + (void)createSettings {
    77     NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
    74     NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
    78     [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"];
    75     [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"];
    79     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"];
    76     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"];
    80     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"];
    77     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"];
    81     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"];
    78     [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"];
    88 
    85 
    89     [settings synchronize];
    86     [settings synchronize];
    90 }
    87 }
    91 
    88 
    92 #pragma mark Teams
    89 #pragma mark Teams
    93 +(void) createTeamNamed:(NSString *)nameWithoutExt {
    90 + (void)createTeamNamed:(NSString *)nameWithoutExt {
    94     [self createTeamNamed:nameWithoutExt ofType:0 controlledByAI:NO];
    91     [self createTeamNamed:nameWithoutExt ofType:0 controlledByAI:NO];
    95 }
    92 }
    96 
    93 
    97 +(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type {
    94 + (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type {
    98     [self createTeamNamed:nameWithoutExt ofType:type controlledByAI:NO];
    95     [self createTeamNamed:nameWithoutExt ofType:type controlledByAI:NO];
    99 }
    96 }
   100 
    97 
   101 +(void) createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type controlledByAI:(BOOL) shouldAITakeOver {
    98 + (void)createTeamNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type controlledByAI:(BOOL) shouldAITakeOver {
   102     NSString *teamsDirectory = TEAMS_DIRECTORY();
    99     NSString *teamsDirectory = TEAMS_DIRECTORY();
   103 
   100 
   104     if (![[NSFileManager defaultManager] fileExistsAtPath: teamsDirectory]) {
   101     if (![[NSFileManager defaultManager] fileExistsAtPath: teamsDirectory]) {
   105         [[NSFileManager defaultManager] createDirectoryAtPath:teamsDirectory
   102         [[NSFileManager defaultManager] createDirectoryAtPath:teamsDirectory
   106                                   withIntermediateDirectories:NO
   103                                   withIntermediateDirectories:NO
   157                              [NSNumber numberWithInt:(shouldAITakeOver ? 4 : 0)],@"level",
   154                              [NSNumber numberWithInt:(shouldAITakeOver ? 4 : 0)],@"level",
   158                              [customNames objectAtIndex:i],@"hogname",
   155                              [customNames objectAtIndex:i],@"hogname",
   159                              [customHats objectAtIndex:i],@"hat",
   156                              [customHats objectAtIndex:i],@"hat",
   160                              nil];
   157                              nil];
   161         [hedgehogs addObject:hog];
   158         [hedgehogs addObject:hog];
   162         [hog release];
   159     }
   163     }
       
   164     [customHats release];
       
   165     [customNames release];
       
   166 
   160 
   167     NSDictionary *theTeam = [[NSDictionary alloc] initWithObjectsAndKeys:
   161     NSDictionary *theTeam = [[NSDictionary alloc] initWithObjectsAndKeys:
   168                              @"0",@"hash",
   162                              @"0",@"hash",
   169                              grave,@"grave",
   163                              grave,@"grave",
   170                              fort,@"fort",
   164                              fort,@"fort",
   171                              voicepack,@"voicepack",
   165                              voicepack,@"voicepack",
   172                              flag,@"flag",
   166                              flag,@"flag",
   173                              hedgehogs,@"hedgehogs",
   167                              hedgehogs,@"hedgehogs",
   174                              nil];
   168                              nil];
   175     [hedgehogs release];
       
   176 
   169 
   177     NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", teamsDirectory, nameWithoutExt];
   170     NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", teamsDirectory, nameWithoutExt];
   178 
   171 
   179     [theTeam writeToFile:teamFile atomically:YES];
   172     [theTeam writeToFile:teamFile atomically:YES];
   180     [teamFile release];
       
   181     [theTeam release];
       
   182 }
   173 }
   183 
   174 
   184 #pragma mark Weapons
   175 #pragma mark Weapons
   185 +(void) createWeaponNamed:(NSString *)nameWithoutExt {
   176 + (void)createWeaponNamed:(NSString *)nameWithoutExt {
   186     [self createWeaponNamed:nameWithoutExt ofType:0];
   177     [self createWeaponNamed:nameWithoutExt ofType:0];
   187 }
   178 }
   188 
   179 
   189 +(void) createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type {
   180 + (void)createWeaponNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type {
   190     NSString *weaponsDirectory = WEAPONS_DIRECTORY();
   181     NSString *weaponsDirectory = WEAPONS_DIRECTORY();
   191 
   182 
   192     if (![[NSFileManager defaultManager] fileExistsAtPath: weaponsDirectory]) {
   183     if (![[NSFileManager defaultManager] fileExistsAtPath: weaponsDirectory]) {
   193         [[NSFileManager defaultManager] createDirectoryAtPath:weaponsDirectory
   184         [[NSFileManager defaultManager] createDirectoryAtPath:weaponsDirectory
   194                                   withIntermediateDirectories:NO
   185                                   withIntermediateDirectories:NO
   267             break;
   258             break;
   268     }
   259     }
   269 
   260 
   270     NSDictionary *theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: qt,@"ammostore_initialqt",
   261     NSDictionary *theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: qt,@"ammostore_initialqt",
   271                                prob,@"ammostore_probability", delay,@"ammostore_delay", crate,@"ammostore_crate", nil];
   262                                prob,@"ammostore_probability", delay,@"ammostore_delay", crate,@"ammostore_crate", nil];
   272     [qt release];
       
   273     [prob release];
       
   274     [delay release];
       
   275     [crate release];
       
   276 
   263 
   277     NSString *weaponFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", weaponsDirectory, nameWithoutExt];
   264     NSString *weaponFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", weaponsDirectory, nameWithoutExt];
   278     [theWeapon writeToFile:weaponFile atomically:YES];
   265     [theWeapon writeToFile:weaponFile atomically:YES];
   279     [weaponFile release];
       
   280     [theWeapon release];
       
   281 }
   266 }
   282 
   267 
   283 #pragma mark Schemes
   268 #pragma mark Schemes
   284 +(void) createSchemeNamed:(NSString *)nameWithoutExt {
   269 + (void)createSchemeNamed:(NSString *)nameWithoutExt {
   285     [self createSchemeNamed:nameWithoutExt ofType:0];
   270     [self createSchemeNamed:nameWithoutExt ofType:0];
   286 }
   271 }
   287 
   272 
   288 +(void) createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger) type {
   273 + (void)createSchemeNamed:(NSString *)nameWithoutExt ofType:(NSInteger)type {
   289     NSString *schemesDirectory = SCHEMES_DIRECTORY();
   274     NSString *schemesDirectory = SCHEMES_DIRECTORY();
   290 
   275 
   291     if (![[NSFileManager defaultManager] fileExistsAtPath: schemesDirectory]) {
   276     if (![[NSFileManager defaultManager] fileExistsAtPath: schemesDirectory]) {
   292         [[NSFileManager defaultManager] createDirectoryAtPath:schemesDirectory
   277         [[NSFileManager defaultManager] createDirectoryAtPath:schemesDirectory
   293                                   withIntermediateDirectories:NO
   278                                   withIntermediateDirectories:NO
   298     // load data to get the size of the arrays and their default values
   283     // load data to get the size of the arrays and their default values
   299     NSArray *basicSettings = [[NSArray alloc] initWithContentsOfFile:BASICFLAGS_FILE()];
   284     NSArray *basicSettings = [[NSArray alloc] initWithContentsOfFile:BASICFLAGS_FILE()];
   300     NSMutableArray *basicArray  = [[NSMutableArray alloc] initWithCapacity:[basicSettings count]];
   285     NSMutableArray *basicArray  = [[NSMutableArray alloc] initWithCapacity:[basicSettings count]];
   301     for (NSDictionary *basicDict in basicSettings)
   286     for (NSDictionary *basicDict in basicSettings)
   302         [basicArray addObject:[basicDict objectForKey:@"default"]];
   287         [basicArray addObject:[basicDict objectForKey:@"default"]];
   303     [basicSettings release];
       
   304 
   288 
   305     NSArray *mods = [[NSArray alloc] initWithContentsOfFile:GAMEMODS_FILE()];
   289     NSArray *mods = [[NSArray alloc] initWithContentsOfFile:GAMEMODS_FILE()];
   306     NSMutableArray *gamemodArray= [[NSMutableArray alloc] initWithCapacity:[mods count]];
   290     NSMutableArray *gamemodArray= [[NSMutableArray alloc] initWithCapacity:[mods count]];
   307     for (NSUInteger i = 0; i < [mods count]; i++)
   291     for (NSUInteger i = 0; i < [mods count]; i++)
   308         [gamemodArray addObject:[NSNumber numberWithBool:NO]];
   292         [gamemodArray addObject:[NSNumber numberWithBool:NO]];
   309     [mods release];
       
   310 
   293 
   311     switch (type) {
   294     switch (type) {
   312         default: // default
   295         default: // default
   313             [gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
   296             [gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
   314             break;
   297             break;
   420 
   403 
   421     NSMutableDictionary *theScheme = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
   404     NSMutableDictionary *theScheme = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
   422                                       basicArray,@"basic",
   405                                       basicArray,@"basic",
   423                                       gamemodArray,@"gamemod",
   406                                       gamemodArray,@"gamemod",
   424                                       nil];
   407                                       nil];
   425     [gamemodArray release];
       
   426     [basicArray release];
       
   427 
   408 
   428     NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", schemesDirectory, nameWithoutExt];
   409     NSString *schemeFile = [[NSString alloc] initWithFormat:@"%@/%@.plist", schemesDirectory, nameWithoutExt];
   429 
   410 
   430     [theScheme writeToFile:schemeFile atomically:YES];
   411     [theScheme writeToFile:schemeFile atomically:YES];
   431     [schemeFile release];
       
   432     [theScheme release];
       
   433 }
   412 }
   434 
   413 
   435 @end
   414 @end