# HG changeset patch # User koda # Date 1271169545 0 # Node ID d558bc5a73c57f891c73a7e3f509511a26035133 # Parent dee9beba85cc93174f7b7b9a51c7f01a0e2aa2c6 lots of untested stuff for the ifrontend diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/GravesViewController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/GravesViewController.h Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,25 @@ +// +// HogHatViewController.h +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface GravesViewController : UITableViewController { + NSDictionary *teamDictionary; + + NSArray *graveArray; + NSArray *graveSprites; + NSIndexPath *lastIndexPath; +} + +@property (nonatomic,retain) NSDictionary *teamDictionary; +@property (nonatomic,retain) NSArray *graveArray; +@property (nonatomic,retain) NSArray *graveSprites; +@property (nonatomic,retain) NSIndexPath *lastIndexPath; + +@end diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/GravesViewController.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/GravesViewController.m Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,190 @@ +// +// HogHatViewController.m +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "HogHatViewController.h" +#import "CommodityFunctions.h" + + +@implementation GravesViewController +@synthesize teamDictionary, graveArray, graveSprites, lastIndexPath; + + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); +} + + +#pragma mark - +#pragma mark View lifecycle +- (void)viewDidLoad { + [super viewDidLoad]; + + // load all the voices names and store them into voiceArray + NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:GRAVES_DIRECTORY() error:NULL]; + self.graveArray = array; + [array release]; + + NSMutableArray *sprites = [[NSMutableArray alloc] initWithCapacity:[graveArray count]; + for (NSString *graveName in graveArray) { + NSString *gravePath = [[NSString alloc] initWithFormat@"%@/%@",GRAVES_DIRECTORY(),graveName]; + UIImage *image = [[UIImage alloc] initWithContentsOfFile:gravePath]; + [gravePath release]; + [sprites addObject:image]; + [image release]; + } + self.graveSprites = sprites; + [sprites release]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + // this moves the tableview to the top + [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; +} + +/* +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; +} +*/ +/* +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; +} +*/ +/* +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; +} +*/ + + +#pragma mark - +#pragma mark Table view data source +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [self.graveArray count]; +} + +// Customize the appearance of table view cells. +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + static NSString *CellIdentifier = @"Cell"; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + } + + NSString *grave = [[graveArray objectAtIndex:[indexPath row]] stringByDeletingPathExtension]; + cell.textLabel.text = grave; + + if ([grave isEqualToString:[hog objectForKey:@"grave"]]) { + cell.accessoryType = UITableViewCellAccessoryCheckmark; + self.lastIndexPath = indexPath; + } else { + cell.accessoryType = UITableViewCellAccessoryNone; + } + + cell.imageView.image = [spriteArray objectAtIndex:[indexPath row]]: + return cell; +} + + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ + + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + + +#pragma mark - +#pragma mark Table view delegate +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + int newRow = [indexPath row]; + int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; + + if (newRow != oldRow) { + [teamDictionary setObject:[graveArray objectAtIndex:newRow] forKey:@"grave"]; + + // tell our boss to write this new stuff on disk + [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil]; + [self.tableView reloadData]; + + self.lastIndexPath = indexPath; + [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; + + [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; + [self.navigationController popViewControllerAnimated:YES]; +} + + +#pragma mark - +#pragma mark Memory management +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + // Relinquish ownership any cached data, images, etc that aren't in use. +} + +- (void)viewDidUnload { + [super viewDidUnload]; + self.lastIndexPath = nil; + self.teamDictionary = nil; + self.graveArray = nil; + self.spriteArray = nil; +} + +- (void)dealloc { + [spriteArray release]; + [graveArray release]; + [teamDictionary release]; + [lastIndexPath release]; + [super dealloc]; +} + + +@end + diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/HogHatViewController.h --- a/cocoaTouch/HogHatViewController.h Mon Apr 12 21:51:09 2010 +0000 +++ b/cocoaTouch/HogHatViewController.h Tue Apr 13 14:39:05 2010 +0000 @@ -18,7 +18,7 @@ NSIndexPath *lastIndexPath; } -@property (nonatomic,retain) NSDictionary * teamDictionary; +@property (nonatomic,retain) NSDictionary *teamDictionary; @property (nonatomic) NSInteger selectedHog; @property (nonatomic,retain) NSArray *hatArray; @property (nonatomic,retain) NSArray *hatSprites; diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/HogHatViewController.m --- a/cocoaTouch/HogHatViewController.m Mon Apr 12 21:51:09 2010 +0000 +++ b/cocoaTouch/HogHatViewController.m Tue Apr 13 14:39:05 2010 +0000 @@ -28,7 +28,8 @@ NSString *hatsDirectory = HATS_DIRECTORY(); NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:hatsDirectory error:NULL]; self.hatArray = array; - + [array 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 (int i=0; i < [hatArray count]; i++) { @@ -161,6 +162,7 @@ if (newRow != oldRow) { // if the two selected rows differ update data on the hog dictionary and reload table content + // TODO: maybe this section could be cleaned up NSDictionary *oldHog = [[teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:selectedHog]; NSMutableDictionary *newHog = [[NSMutableDictionary alloc] initWithDictionary: oldHog]; diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/LevelViewController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/LevelViewController.h Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,25 @@ +// +// HogHatViewController.h +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface LevelViewController : UITableViewController { + NSDictionary *teamDictionary; + + NSArray *levelArray; + NSArray *levelSprites; + NSIndexPath *lastIndexPath; +} + +@property (nonatomic,retain) NSDictionary *teamDictionary; +@property (nonatomic,retain) NSArray *levelArray; +@property (nonatomic,retain) NSArray *levelSprites; +@property (nonatomic,retain) NSIndexPath *lastIndexPath; + +@end diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/LevelViewController.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/LevelViewController.m Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,198 @@ +// +// HogHatViewController.m +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "HogHatViewController.h" +#import "CommodityFunctions.h" + + +@implementation LevelViewController +@synthesize teamDictionary, levelArray, levelSprites, lastIndexPath; + + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); +} + + +#pragma mark - +#pragma mark View lifecycle +- (void)viewDidLoad { + [super viewDidLoad]; + + NSArray *array = [[NSArray alloc] initWithObjects: + NSLocalizedString(@"Human",@""), + NSLocalizedString(@"Weaky",@""), + NSLocalizedString(@"Average",@""), + NSLocalizedString(@"Bully",@""), + NSLocalizedString(@"Aggressive",@""),nil] + self.levelArray = array; + [array release]; +/* + NSMutableArray *sprites = [[NSMutableArray alloc] initWithCapacity:[graveArray count]; + for (NSString *graveName in graveArray) { + NSString *gravePath = [[NSString alloc] initWithFormat@"%@/%@",GRAVES_DIRECTORY(),graveName]; + UIImage *image = [[UIImage alloc] initWithContentsOfFile:gravePath]; + [gravePath release]; + [sprites addObject:image]; + [image release]; + } + self.graveSprites = sprites; + [sprites release]; +*/ +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + // this moves the tableview to the top + [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; +} + +/* +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; +} +*/ +/* +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; +} +*/ +/* +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; +} +*/ + + +#pragma mark - +#pragma mark Table view data source +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [self.levelArray count]; +} + +// Customize the appearance of table view cells. +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + static NSString *CellIdentifier = @"Cell"; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + } + + cell.textLabel.text = [[levelArray objectAtIndex:[indexPath row]] stringValue]; + NSDictionary *hog = [[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:0] + if ([cell.textLabel.text isEqualToString:[[hog objectForKey:@"level"]] stringValue]) { + cell.accessoryType = UITableViewCellAccessoryCheckmark; + self.lastIndexPath = indexPath; + } else { + cell.accessoryType = UITableViewCellAccessoryNone; + } + + cell.imageView.image = [levelSprites objectAtIndex:[indexPath row]]: + return cell; +} + + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ + + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + + +#pragma mark - +#pragma mark Table view delegate +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + int newRow = [indexPath row]; + int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; + + if (newRow != oldRow) { + NSMutableArray *hogs = [teamDictionary objectForKey:@"hedgehogs"]; + + for (NSDictionary *hog in hogs) { + [hog setObject:[NSNumber numberWithInt:newRow] forKey:@"level"]; + } + + // tell our boss to write this new stuff on disk + [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil]; + [self.tableView reloadData]; + + self.lastIndexPath = indexPath; + [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; + + [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; + [self.navigationController popViewControllerAnimated:YES]; +} + + +#pragma mark - +#pragma mark Memory management +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + // Relinquish ownership any cached data, images, etc that aren't in use. +} + +- (void)viewDidUnload { + [super viewDidUnload]; + self.lastIndexPath = nil; + self.teamDictionary = nil; + self.levelArray = nil; + self.levelSprites = nil; +} + +- (void)dealloc { + [levelArray release]; + [levelSprites release]; + [teamDictionary release]; + [lastIndexPath release]; + [super dealloc]; +} + + +@end + diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/SingleTeamViewController.m --- a/cocoaTouch/SingleTeamViewController.m Mon Apr 12 21:51:09 2010 +0000 +++ b/cocoaTouch/SingleTeamViewController.m Tue Apr 13 14:39:05 2010 +0000 @@ -101,7 +101,7 @@ [super viewDidLoad]; // labels for the entries - NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: + NSArray *array = [[NSArray alloc] initWithObjects: NSLocalizedString(@"Grave",@""), NSLocalizedString(@"Voice",@""), NSLocalizedString(@"Fort",@""), @@ -168,7 +168,7 @@ UIImage *hatSprite = [[UIImage alloc] initWithCGImage:cgImgage]; CGImageRelease(cgImgage); - [array addObject:mergeTwoImages(normalHogSprite, hatSprite)]; + [array addObject:mergeHogHatSprites(normalHogSprite, hatSprite)]; [hatSprite release]; } [normalHogSprite release]; diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/VoicesViewController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/VoicesViewController.h Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,27 @@ +// +// HogHatViewController.h +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import +#import "SDL_mixer.h" + + +@interface VoicesViewController : UITableViewController { + NSDictionary *teamDictionary; + + NSArray *voiceArray; + NSIndexPath *lastIndexPath; + + Mix_Music *musicBeingPlayed; +} + +@property (nonatomic,retain) NSDictionary *teamDictionary; +@property (nonatomic,retain) NSArray *voiceArray; +@property (nonatomic,retain) NSIndexPath *lastIndexPath; +@property (nonatomic,retain) Mix_Music *musicBeingPlayed; + +@end diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/VoicesViewController.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/VoicesViewController.m Tue Apr 13 14:39:05 2010 +0000 @@ -0,0 +1,207 @@ +// +// HogHatViewController.m +// HedgewarsMobile +// +// Created by Vittorio on 02/04/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "HogHatViewController.h" +#import "CommodityFunctions.h" + + +@implementation VoicesViewController +@synthesize teamDictionary, voiceArray, lastIndexPath, musicBeingPlayed; + + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); +} + + +#pragma mark - +#pragma mark View lifecycle +- (void)viewDidLoad { + [super viewDidLoad]; + srandom(time(NULL)); + + Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 1024); + musicBeingPlayed = NULL; + + // load all the voices names and store them into voiceArray + NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:VOICES_DIRECTORY() error:NULL]; + self.voiceArray = array; + [array release]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + // this moves the tableview to the top + [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; +} + +/* +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; +} +*/ + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if(musicBeingPlayed != NULL) { + Mix_HaltMusic(); + Mix_FreeMusic(musicBeingPlayed); + musicBeingPlayed = NULL; + } +} + +/* +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; +} +*/ + + +#pragma mark - +#pragma mark Table view data source +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [self.voiceArray count]; +} + +// Customize the appearance of table view cells. +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + static NSString *CellIdentifier = @"Cell"; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + } + + NSString *voice = [[voiceArray objectAtIndex:[indexPath row]] stringByDeletingPathExtension]; + cell.textLabel.text = voice; + + if ([voice isEqualToString:[teamDictionary objectForKey:@"voicepack"]]) { + cell.accessoryType = UITableViewCellAccessoryCheckmark; + self.lastIndexPath = indexPath; + } else { + cell.accessoryType = UITableViewCellAccessoryNone; + } + + return cell; +} + + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ + + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + + +#pragma mark - +#pragma mark Table view delegate +- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + int newRow = [indexPath row]; + int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; + + if (newRow != oldRow) { + [teamDictionary setObject:[voiceArray objectAtIndex:newRow] forKey:@"voicepack"]; + + // tell our boss to write this new stuff on disk + [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil]; + [self.tableView reloadData]; + + self.lastIndexPath = indexPath; + [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; + } + [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; + + if(musicBeingPlayed != NULL) { + Mix_HaltMusic(); + Mix_FreeMusic(musicBeingPlayed); + musicBeingPlayed = NULL; + } + // the keyword static prevents re-initialization of the variable + NSString *voiceDir = [[NSString alloc] initWithFormat:@"%@/%@/",VOICES_DIRECTORY(),[voiceArray objectAtIndex:newRow]; + NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:voiceDir error:NULL]; + + int index = random() % [array count]; + + music = Mix_LoadMUS([[voiceDir stringByAppendingString:[array objectAtIndex:index]] UTF8String]); + [array release]; + [voiceDir release]; +} + + +#pragma mark - +#pragma mark Memory management +- (void)didReceiveMemoryWarning { + Mix_HaltMusic(); + Mix_FreeMusic(musicBeingPlayed); + musicBeingPlayed = NULL; + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + // Relinquish ownership any cached data, images, etc that aren't in use. +} + +- (void)viewDidUnload { + [super viewDidUnload]; + + Mix_CloseAudio(); + self.musicBeingPlayed = NULL; + self.lastIndexPath = nil; + self.teamDictionary = nil; + self.voiceArray = nil; +} + +- (void)dealloc { + [musicBeingPlayed release]; + [voiceArray release]; + [teamDictionary release]; + [lastIndexPath release]; + [super dealloc]; +} + + +@end + + diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/otherSrc/CommodityFunctions.h --- a/cocoaTouch/otherSrc/CommodityFunctions.h Mon Apr 12 21:51:09 2010 +0000 +++ b/cocoaTouch/otherSrc/CommodityFunctions.h Tue Apr 13 14:39:05 2010 +0000 @@ -10,15 +10,21 @@ #define MAX_HOGS 8 + #define SETTINGS_FILE() [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) \ objectAtIndex:0] stringByAppendingString:@"/settings.plist"] + #define TEAMS_DIRECTORY() [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) \ objectAtIndex:0] stringByAppendingString:@"/Teams/"] + +#define VOICES_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Sounds/voices/"] #define GRAPHICS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Graphics/"] #define HATS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Graphics/Hats/"] -#define FLAGS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Graphics/Flags/"] +#define FLAGS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Graphics/Flags/" +#define GRAVES_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Graphics/Graves/"] #define FORTS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Forts/"] void createTeamNamed (NSString *nameWithoutExt); -UIImage *mergeTwoImages (UIImage *firstImage, UIImage *secondImage); +UIImage *mergeHogHatSprites (UIImage *firstImage, UIImage *secondImage); BOOL rotationManager (UIInterfaceOrientation interfaceOrientation); + diff -r dee9beba85cc -r d558bc5a73c5 cocoaTouch/otherSrc/CommodityFunctions.m --- a/cocoaTouch/otherSrc/CommodityFunctions.m Mon Apr 12 21:51:09 2010 +0000 +++ b/cocoaTouch/otherSrc/CommodityFunctions.m Tue Apr 13 14:39:05 2010 +0000 @@ -23,7 +23,7 @@ for (int i = 0; i < MAX_HOGS; i++) { NSString *hogName = [[NSString alloc] initWithFormat:@"hedgehog %d",i]; - NSDictionary *hog = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health", @"0",@"level", + NSDictionary *hog = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health", [NSNumber numberWithInt:0],@"level", hogName,@"hogname", @"NoHat",@"hat", nil]; [hogName release]; [hedgehogs addObject:hog];