diff -r bcd6d76db4f7 -r e5403e2bf02c cocoaTouch/GameSetup.m --- a/cocoaTouch/GameSetup.m Wed Apr 21 21:38:07 2010 +0000 +++ b/cocoaTouch/GameSetup.m Thu Apr 22 17:43:12 2010 +0000 @@ -20,25 +20,25 @@ @implementation GameSetup -@synthesize systemSettings, teams; +@synthesize systemSettings, teamsConfig; -(id) init { if (self = [super init]) { srandom(time(NULL)); ipcPort = (random() % 64541) + 1025; - systemSettings = [[NSDictionary alloc] initWithContentsOfFile:SETTINGS_FILE()]; //should check it exists - return self; - } else - return nil; + self.systemSettings = [[NSDictionary alloc] initWithContentsOfFile:SETTINGS_FILE()]; //should check it exists + self.teamsConfig = [[NSArray alloc] initWithContentsOfFile:GAMECONFIG_FILE()]; + } + return self; } -(NSString *)description { - return [NSString stringWithFormat:@"ipcport: %d\nsockets: %d,%d\n teams: %@\n systemSettings: %@",ipcPort,sd,csd,teams,systemSettings]; + return [NSString stringWithFormat:@"ipcport: %d\nsockets: %d,%d\n teams: %@\n systemSettings: %@",ipcPort,sd,csd,teamsConfig,systemSettings]; } -(void) dealloc { - [teams release]; + [teamsConfig release]; [systemSettings release]; [super dealloc]; } @@ -57,47 +57,12 @@ return SDLNet_TCP_Send(csd, [string UTF8String], length); } --(void) initTeam:(NSArray *)teamLists { - teams = [[NSMutableArray alloc] initWithObjects:nil]; - - for (NSString *teamString in teamLists) { - //NSString *teamFile = [[NSString alloc] initWithFormat:@"%@.plist", teamString]; - - //NSDictionary *theTeam = [[NSDictionary alloc] initWithContentsOfFile:filePath]; - //[teams addObject:theTeam]; - //[theTeam release]; - } +-(void) sendTeamData:(NSString *)fileName withPlayingHogs:(NSInteger) playingHogs ofColor:(NSNumber *)color{ + NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@", TEAMS_DIRECTORY(), fileName]; + NSDictionary *teamData = [[NSDictionary alloc] initWithContentsOfFile:teamFile]; + [teamFile release]; - NSDictionary *hogA1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level",@"Snow Leopard",@"hogname",@"NoHat",@"hat",nil]; - NSDictionary *hogA2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level",@"Leopard",@"hogname",@"NoHat",@"hat",nil]; - NSArray *hedgehogs1 = [[NSArray alloc] initWithObjects:hogA1,hogA2,nil]; - [hogA1 release]; - [hogA2 release]; - - NSDictionary *firstTeam = [[NSDictionary alloc] initWithObjectsAndKeys:@"4421353",@"color",@"0",@"hash",@"System Cats",@"teamname", - @"star",@"grave",@"Earth",@"fort",@"Classic",@"voicepack",@"hedgewars",@"flag",hedgehogs1,@"hedgehogs", - nil]; - [hedgehogs1 release]; - [teams addObject:firstTeam]; - [firstTeam release]; - - NSDictionary *hogB1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level",@"Raichu",@"hogname",@"Bunny",@"hat",nil]; - NSDictionary *hogB2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level",@"Pikachu",@"hogname",@"Bunny",@"hat",nil]; - NSArray *hedgehogs2 = [[NSArray alloc] initWithObjects:hogB1,hogB2,nil]; - [hogB1 release]; - [hogB2 release]; - NSDictionary *secondTeam = [[NSDictionary alloc] initWithObjectsAndKeys:@"4100897",@"color",@"0",@"hash",@"Poke-MAN",@"teamname", - @"Badger",@"grave",@"UFO",@"fort",@"Default",@"voicepack",@"hedgewars",@"flag",hedgehogs2,@"hedgehogs", - nil]; - [hedgehogs2 release]; - [teams addObject:secondTeam]; - [secondTeam release]; -} - --(void) sendTeamData:(NSDictionary *)teamData withPlayingHogs:(int) playingHogs{ - int i; - - NSString *teamHashColorAndName = [[NSString alloc] initWithFormat:@"eaddteam %@ %@ %@", [teamData objectForKey:@"hash"], [teamData objectForKey:@"color"], [teamData objectForKey:@"teamname"]]; + NSString *teamHashColorAndName = [[NSString alloc] initWithFormat:@"eaddteam %@ %@ %@", [teamData objectForKey:@"hash"], [color stringValue], [teamData objectForKey:@"teamname"]]; [self sendToEngine: teamHashColorAndName]; [teamHashColorAndName release]; @@ -118,7 +83,7 @@ [flag release]; NSArray *hogs = [teamData objectForKey:@"hedgehogs"]; - for (i = 0; i < playingHogs; i++) { + for (int i = 0; i < playingHogs; i++) { NSDictionary *hog = [hogs objectAtIndex:i]; NSString *hogLevelHealthAndName = [[NSString alloc] initWithFormat:@"eaddhh %@ %@ %@", [hog objectForKey:@"level"], [hog objectForKey:@"health"], [hog objectForKey:@"hogname"]]; @@ -128,10 +93,12 @@ NSString *hogHat = [[NSString alloc] initWithFormat:@"ehat %@", [hog objectForKey:@"hat"]]; [self sendToEngine: hogHat]; [hogHat release]; - } + } + + [teamData release]; } --(void) sendAmmoData:(NSDictionary *)ammoData { +-(void) sendAmmoData:(NSDictionary *)ammoData forTeams: (NSInteger)numberPlaying { NSString *ammloadt = [[NSString alloc] initWithFormat:@"eammloadt %@", [ammoData objectForKey:@"ammostore_initialqt"]]; [self sendToEngine: ammloadt]; [ammloadt release]; @@ -150,8 +117,8 @@ // sent twice so it applies to both teams NSString *ammstore = [[NSString alloc] initWithString:@"eammstore"]; - [self sendToEngine: ammstore]; - [self sendToEngine: ammstore]; + for (int i = 0; i < numberPlaying; i++) + [self sendToEngine: ammstore]; [ammstore release]; } @@ -202,10 +169,6 @@ if ('C' == buffer[0]) { NSLog(@"engineProtocol - sending game config"); - NSArray *teamlist = [[NSArray alloc] initWithObjects:@"this",@"is",@"test",nil]; - [self initTeam:teamlist]; - [teamlist release]; - // send config data data /* seed is arbitrary string @@ -235,8 +198,10 @@ // theme info [self sendToEngine:@"etheme Compost"]; - for (NSDictionary *teamData in teams) { - [self sendTeamData:teamData withPlayingHogs:2]; + for (NSDictionary *teamData in self.teamsConfig) { + [self sendTeamData:[teamData objectForKey:@"team"] + withPlayingHogs:[[teamData objectForKey:@"number"] intValue] + ofColor:[teamData objectForKey:@"color"]]; NSLog(@"teamData sent"); } @@ -245,10 +210,10 @@ @"0405040541600655546554464776576666666155501",@"ammostore_probability", @"0000000000000205500000040007004000000000200",@"ammostore_delay", @"1311110312111111123114111111111111111211101",@"ammostore_crate", nil]; - [self sendAmmoData: ammoData]; + [self sendAmmoData:ammoData forTeams:[self.teamsConfig count]]; [ammoData release]; - clientQuit = NO; + clientQuit = NO; } else { NSLog(@"engineProtocolThread - wrong message or client closed connection"); clientQuit = YES; @@ -355,7 +320,7 @@ // prevents using an empty nickname NSString *username; - NSString *originalUsername = [systemSettings objectForKey:@"username"]; + NSString *originalUsername = [self.systemSettings objectForKey:@"username"]; if ([originalUsername length] == 0) { username = [[NSString alloc] initWithFormat:@"MobileUser-%@",ipcString]; } else { @@ -364,10 +329,10 @@ gameArgs[0] = [username UTF8String]; //UserNick gameArgs[1] = [ipcString UTF8String]; //ipcPort - gameArgs[2] = [[[systemSettings objectForKey:@"sound"] stringValue] UTF8String]; //isSoundEnabled - gameArgs[3] = [[[systemSettings objectForKey:@"music"] stringValue] UTF8String]; //isMusicEnabled + gameArgs[2] = [[[self.systemSettings objectForKey:@"sound"] stringValue] UTF8String]; //isSoundEnabled + gameArgs[3] = [[[self.systemSettings objectForKey:@"music"] stringValue] UTF8String]; //isMusicEnabled gameArgs[4] = [localeString UTF8String]; //cLocaleFName - gameArgs[5] = [[[systemSettings objectForKey:@"alternate"] stringValue] UTF8String]; //cAltDamage + gameArgs[5] = [[[self.systemSettings objectForKey:@"alternate"] stringValue] UTF8String]; //cAltDamage gameArgs[6] = [wSize UTF8String]; //cScreenHeight gameArgs[7] = [hSize UTF8String]; //cScreenWidth