# HG changeset patch # User koda # Date 1271641195 0 # Node ID 3836a31879e755c3344e18eb36298d013daf5b77 # Parent 3ae3fccb439ebbf8229b5717190301803f6c19e6 draw a hedgehog when presenting hats other lazy loading procedure fix crash when loading multiple games diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/DetailViewController.m --- a/cocoaTouch/DetailViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/DetailViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -22,7 +22,7 @@ return rotationManager(interfaceOrientation); } -- (void)viewDidLoad { +-(void) viewDidLoad { self.title = NSLocalizedString(@"Settings",@""); // allocate controllers and store them into the array @@ -37,7 +37,13 @@ // on ipad make the general setting the first view, on iphone add the "Done" button on top left if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { - // show some stuff + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(112, 112, 480, 320)]; + label.text = @"Press the buttons on the left"; + label.font = [UIFont systemFontOfSize:20]; + label.textAlignment = UITextAlignmentCenter; + [self.view addSubview:label]; + [label release]; + //[self.navigationController pushViewController:nextController animated:NO]; } else { @@ -53,7 +59,11 @@ #pragma mark - #pragma mark Table view data source -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { - return 1; + // don't display + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + return 0; + else + return 1; } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { @@ -78,6 +88,8 @@ return cell; } +#pragma mark - +#pragma mark Table view delegate -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger row = [indexPath row]; UIViewController *nextController; diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/FortsViewController.m --- a/cocoaTouch/FortsViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/FortsViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -52,6 +52,9 @@ } self.fortSprites = spriteArray; [spriteArray release]; + + // statically set row height instead of using delegate method for performance reasons + self.tableView.rowHeight = 200; } @@ -174,9 +177,6 @@ [self.navigationController popViewControllerAnimated:YES]; } --(CGFloat) tableView:(UITableView *)atableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 200; -} #pragma mark - #pragma mark Memory management diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/HogHatViewController.m --- a/cocoaTouch/HogHatViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/HogHatViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -29,15 +29,20 @@ NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:hatsDirectory error:NULL]; self.hatArray = array; + NSString *normalHogFile = [[NSString alloc] initWithFormat:@"%@/Hedgehog.png",GRAPHICS_DIRECTORY()]; + UIImage *normalHogSprite = [[UIImage alloc] initWithContentsOfFile:normalHogFile andCutAt:CGRectMake(96, 0, 32, 32)]; + [normalHogFile release]; + // load all the hat images from the previous array but save only the first sprite and store it in hatSprites NSMutableArray *spriteArray = [[NSMutableArray alloc] initWithCapacity:[hatArray count]]; for (NSString *hat in hatArray) { NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", hatsDirectory,hat]; UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile: hatFile andCutAt:CGRectMake(0, 0, 32, 32)]; [hatFile release]; - [spriteArray addObject:hatSprite]; + [spriteArray addObject:[normalHogSprite mergeWith:hatSprite atPoint:CGPointMake(0, -5)]]; [hatSprite release]; } + [normalHogSprite release]; self.hatSprites = spriteArray; [spriteArray release]; } diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/MasterViewController.h --- a/cocoaTouch/MasterViewController.h Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/MasterViewController.h Mon Apr 19 01:39:55 2010 +0000 @@ -10,17 +10,23 @@ @class DetailViewController; +@class GeneralSettingsViewController; +@class TeamSettingsViewController; +@class WeaponSettingsViewController; +@class SchemeSettingsViewController; @interface MasterViewController : UITableViewController { DetailViewController *detailViewController; - NSArray *optionList; - NSArray *controllers; + NSArray *controllerNames; NSIndexPath *lastIndexPath; + GeneralSettingsViewController *generalSettingsViewController; + TeamSettingsViewController *teamSettingsViewController; + WeaponSettingsViewController *weaponSettingsViewController; + SchemeSettingsViewController *schemeSettingsViewController; } @property (nonatomic, retain) DetailViewController *detailViewController; -@property (nonatomic, retain) NSArray *optionList; -@property (nonatomic, retain) NSArray *controllers; +@property (nonatomic, retain) NSArray *controllerNames; @property (nonatomic, retain) NSIndexPath *lastIndexPath; -(IBAction) dismissSplitView; diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/MasterViewController.m --- a/cocoaTouch/MasterViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/MasterViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -10,10 +10,12 @@ #import "DetailViewController.h" #import "GeneralSettingsViewController.h" #import "TeamSettingsViewController.h" +#import "WeaponSettingsViewController.h" +#import "SchemeSettingsViewController.h" #import "CommodityFunctions.h" @implementation MasterViewController -@synthesize detailViewController, optionList, controllers, lastIndexPath; +@synthesize detailViewController, controllerNames, lastIndexPath; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { @@ -27,34 +29,15 @@ [super viewDidLoad]; // the list of selectable controllers - optionList = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), - NSLocalizedString(@"Teams",@""), - NSLocalizedString(@"Weapons",@""), - NSLocalizedString(@"Schemes",@""), - nil]; + controllerNames = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), + NSLocalizedString(@"Teams",@""), + NSLocalizedString(@"Weapons",@""), + NSLocalizedString(@"Schemes",@""), + nil]; // the "Done" button on top left - self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:0 + self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissSplitView)]; - // list of allocated viewcontrollers (same in DetailViewController) - NSMutableArray *array= [[NSMutableArray alloc] init]; - - GeneralSettingsViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] - initWithStyle:UITableViewStyleGrouped]; - generalSettingsViewController.title = NSLocalizedString(@"General",@""); - generalSettingsViewController.navigationItem.hidesBackButton = YES; - [array addObject:generalSettingsViewController]; - [generalSettingsViewController release]; - - TeamSettingsViewController *teamSettingsViewController = [[TeamSettingsViewController alloc] - initWithStyle:UITableViewStyleGrouped]; - teamSettingsViewController.title = NSLocalizedString(@"Teams",@""); - teamSettingsViewController.navigationItem.hidesBackButton = YES; - [array addObject:teamSettingsViewController]; - [teamSettingsViewController release]; - - self.controllers = array; - [array release]; } #pragma mark - @@ -64,12 +47,10 @@ return 1; } - -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [optionList count]; + return [controllerNames count]; } - // Customize the appearance of table view cells. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; @@ -77,7 +58,7 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - cell.textLabel.text = [optionList objectAtIndex:[indexPath row]]; + cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]]; } return cell; @@ -115,13 +96,38 @@ #pragma mark Table view delegate -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { int newRow = [indexPath row]; - int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : 0; + int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; + UIViewController *nextController; if (newRow != oldRow) { [self.tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; [detailViewController.navigationController popToRootViewControllerAnimated:NO]; - UITableViewController *nextController = [self.controllers objectAtIndex:[indexPath row]]; + switch (newRow) { + case 0: + if (nil == generalSettingsViewController) + generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; + nextController = generalSettingsViewController; + break; + case 1: + if (nil == teamSettingsViewController) + teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; + nextController = teamSettingsViewController; + break; + case 2: + if (nil == weaponSettingsViewController) + weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; + nextController = weaponSettingsViewController; + break; + case 3: + if (nil == schemeSettingsViewController) + schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; + nextController = schemeSettingsViewController; + break; + } + + nextController.navigationItem.hidesBackButton = YES; + nextController.title = [controllerNames objectAtIndex:newRow]; [detailViewController.navigationController pushViewController:nextController animated:NO]; self.lastIndexPath = indexPath; [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; @@ -137,9 +143,25 @@ // Relinquish ownership any cached data, images, etc that aren't in use. } -- (void)dealloc { - [optionList release]; +-(void) viewDidUnload { + self.detailViewController = nil; + self.controllerNames = nil; + self.lastIndexPath = nil; + generalSettingsViewController = nil; + teamSettingsViewController = nil; + weaponSettingsViewController = nil; + schemeSettingsViewController = nil; + [super viewDidUnload]; +} + +-(void) dealloc { + [controllerNames release]; [detailViewController release]; + [lastIndexPath release]; + [generalSettingsViewController release]; + [teamSettingsViewController release]; + [weaponSettingsViewController release]; + [schemeSettingsViewController release]; [super dealloc]; } diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/OverlayViewController.m --- a/cocoaTouch/OverlayViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/OverlayViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -67,21 +67,28 @@ // add timer too runloop, otherwise it doesn't work [[NSRunLoop currentRunLoop] addTimer:dimTimer forMode:NSDefaultRunLoopMode]; - // listen for dismissal of the popover (see below)x - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissPopover) name:@"dismissPopover" object:nil]; + + // listen for dismissal of the popover (see below) + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(dismissPopover) + name:@"dismissPopover" + object:nil]; // present the overlay after 2 seconds - [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(showMenuAfterwards) userInfo:nil repeats:NO]; + [NSTimer scheduledTimerWithTimeInterval:2 + target:self + selector:@selector(showMenuAfterwards) + userInfo:nil + repeats:NO]; } -(void) viewDidUnload { - [dimTimer invalidate]; - self.dimTimer = nil; self.popoverController = nil; self.popupMenu = nil; [super viewDidUnload]; } -(void) dealloc { + [dimTimer invalidate]; [popupMenu release]; [popoverController release]; // dimTimer is autoreleased diff -r 3ae3fccb439e -r 3836a31879e7 cocoaTouch/PopoverMenuViewController.m --- a/cocoaTouch/PopoverMenuViewController.m Sun Apr 18 23:19:15 2010 +0000 +++ b/cocoaTouch/PopoverMenuViewController.m Mon Apr 19 01:39:55 2010 +0000 @@ -23,14 +23,11 @@ -(void) didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - self.menuList = nil; } -(void) viewDidLoad { isPaused = NO; - self.tableView.allowsSelection = YES; - self.tableView.alwaysBounceVertical = YES; - self.tableView.delaysContentTouches = NO; + menuList = [[NSArray alloc] initWithObjects: NSLocalizedString(@"Pause Game", @""), NSLocalizedString(@"Chat", @""), diff -r 3ae3fccb439e -r 3836a31879e7 project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/project.pbxproj Sun Apr 18 23:19:15 2010 +0000 +++ b/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/project.pbxproj Mon Apr 19 01:39:55 2010 +0000 @@ -428,7 +428,6 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 29B97317FDCFA39411CA2CEA /* Resources */, - 6100DAD4115446B000F455E0 /* Resources-iPad */, 19C28FACFE9D520D11CA2CBB /* Products */, 61370652117B1D50004EE44A /* Entitlements-Distribution.plist */, 611E12FE117BBBDA0044B62F /* Entitlements-Development.plist */, @@ -458,6 +457,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 6100DAD4115446B000F455E0 /* Resources-iPad */, 6100DB1711544E8400F455E0 /* XIB */, 6179937011501D5800BA94A9 /* buttons */, 6179936F11501D4100BA94A9 /* back panels */, @@ -500,7 +500,6 @@ children = ( 6151347D116C2803001F16D1 /* Icon-iPad.png */, 6122CD00116BECCA002648E9 /* Default-Landscape.png */, - 61CE2509115E74260098C467 /* XIB */, 611FD9C81155A1F200C2203D /* Background.png */, 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */, 611FD9D11155A41000C2203D /* Multiplayer.png */, @@ -512,6 +511,8 @@ 6100DB1711544E8400F455E0 /* XIB */ = { isa = PBXGroup; children = ( + 611E127C117BACC60044B62F /* GameConfigViewController-iPad.xib */, + 61A118C911683C7600359010 /* MainMenuViewController-iPad.xib */, 611E127E117BACCD0044B62F /* GameConfigViewController-iPhone.xib */, 615134B0116C2C5F001F16D1 /* OverlayViewController.xib */, 61A118CB11683C7A00359010 /* MainMenuViewController-iPhone.xib */, @@ -712,15 +713,6 @@ name = openalbridge; sourceTree = ""; }; - 61CE2509115E74260098C467 /* XIB */ = { - isa = PBXGroup; - children = ( - 611E127C117BACC60044B62F /* GameConfigViewController-iPad.xib */, - 61A118C911683C7600359010 /* MainMenuViewController-iPad.xib */, - ); - name = XIB; - sourceTree = ""; - }; 9283015C0F10E48900CC5A3C /* Pascal Sources */ = { isa = PBXGroup; children = ( @@ -1136,8 +1128,9 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + CODE_SIGN_ENTITLEMENTS = "Entitlements-Distribution.plist"; CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Vittorio Giovara"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; FPC_COMMON_OPTIONS = "-dIPHONEOS -Cs2000000 -vwi -B -Sgix -dLOWRES"; FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/2.5.1; FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas"; @@ -1167,7 +1160,7 @@ ); PREBINDING = NO; PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "4ABEE8D8-80C1-4CBA-BEAD-95A4349896AA"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos3.2; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1179,7 +1172,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CODE_SIGN_ENTITLEMENTS = "Entitlements-Distribution.plist"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Vittorio Giovara"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = HedgewarsMobile_Prefix.pch; @@ -1189,7 +1182,7 @@ "\"$(SRCROOT)\"", ); PRODUCT_NAME = HedgewarsMobile; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "0CD03A6D-BC86-4124-B76B-03D836E163D1"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution;