Maybe some one knows why in the 1.2 version of Gorillas the audio track settings do not shuffle through the array? I've been looking at this all day and am lost maybe someone can see what I can't see :-) Thanks in advance...
This is the code (bear in mind that I'm not pasting all the code just snippets):
@implementation AVConfigurationLayer
(...)
// Audio Track.
[MenuItemFont setFontSize:[[GorillasConfig get] smallFontSize]];
[MenuItemFont setFontName:[[GorillasConfig get] fixedFontName]];
MenuItem *audioT = [MenuItemFont itemFromString:@"Audio Track"];
[audioT setIsEnabled:NO];
[MenuItemFont setFontSize:[[GorillasConfig get] fontSize]];
[MenuItemFont setFontName:[[GorillasConfig get] fontName]];
MenuItem *audioI = [MenuItemFont itemFromString:[[GorillasConfig get] currentTrackName]
target:self
selector:@selector(audioTrack:)];
(...)
-(void) audioTrack: (id) sender {
[[GorillasAppDelegate get] clickEffect];
NSArray *tracks = [GorillasConfig get].tracks;
NSString *newTrack = [tracks objectAtIndex:0];
BOOL found = NO;
for(NSString *track in tracks) {
if(found) {
newTrack = track;
break;
}
if([[[GorillasConfig get] currentTrack] isEqualToString:track])
found = YES;
}
if(![newTrack length])
newTrack = nil;
[[GorillasAppDelegate get] playTrack:newTrack];
}
(...)
@end
@implementation GorillasAppDelegate
-(void) playTrack:(NSString *)track {
if(![track length])
track = nil;
nextTrack = track;
[self startNextTrack];
}
-(void) audioStarted:(AudioPlayer *)player {
NSString *track = [audioController soundFile];
if([nextTrack isEqualToString:@"random"])
track = nextTrack;
[[GorillasConfig get] setCurrentTrack:track];
}
-(void) audioStopped:(AudioPlayer *)player {
if(nextTrack == nil)
[[GorillasConfig get] setCurrentTrack:nil];
[audioController release];
audioController = nil;
[self startNextTrack];
}
(...)
@end
// GorillasConfig.m
#import "CityTheme.h"
#import "GorillasAppDelegate.h"
(...)
#define dTracks @"v1.1.tracks"
#define dTrackNames @"v1.1.trackNames"
#define dCurrentTrack @"v1.0.currentTrack"
(...)
@implementation GorillasConfig
(...)
[NSArray arrayWithObjects:
@"blockdropper3.wav",
@"veritech.wav",
@"fighting_gorillas.wav",
@"prideofthepacific.wav",
@"forkbomb.wav",
@"random",
@"",
nil], dTracks,
[NSArray arrayWithObjects:
@"Sky High",
@"Veritech",
@"Fighting Gorillas",
@"Pride of the Pacific",
@"Fork Bomb",
@"[Shuffle]",
@"[Off]",
nil], dTrackNames,
@"fighting_gorillas.wav", dCurrentTrack,
(...)
+(GorillasConfig *) get {
static GorillasConfig *instance;
if(!instance)
instance = [[GorillasConfig alloc] init];
return instance;
}
(...)
#pragma mark Audio
-(NSArray *) tracks {
return [defaults arrayForKey: dTracks];
}
-(void) setTracks: (NSArray *)tracks {
[defaults setObject:tracks forKey: dTracks];
[[GorillasAppDelegate get] updateConfig];
}
-(NSArray *) trackNames {
return [defaults arrayForKey: dTrackNames];
}
-(void) setTrackNames: (NSArray *)trackNames {
[defaults setObject:trackNames forKey: dTrackNames];
[[GorillasAppDelegate get] updateConfig];
}
-(NSString *) randomTrack {
NSArray *tracks = self.tracks;
return [tracks objectAtIndex:random() % ([tracks count] - 2)];
}
-(NSString *) currentTrack {
return [defaults stringForKey: dCurrentTrack];
}
-(void) setCurrentTrack: (NSString *)currentTrack {
if(currentTrack == nil)
currentTrack = @"";
[defaults setObject:currentTrack forKey: dCurrentTrack];
[[GorillasAppDelegate get] updateConfig];
}
-(NSString *) currentTrackName {
id currentTrack = [self currentTrack];
if(!currentTrack)
currentTrack = @"";
NSUInteger currentTrackIndex = [[self tracks] indexOfObject:currentTrack];
return [[self trackNames] objectAtIndex:currentTrackIndex];
}
(...)
@end
I WOULD APPRECIATE ANY INSIGHT :-)
-Alex