ifrontend: predispone teams in a proper data structure
authorkoda
Tue, 30 Mar 2010 00:03:58 +0000
changeset 3170 1dbf4f8eaac0
parent 3169 c8c6ac44f51b
child 3171 601f092071e7
ifrontend: predispone teams in a proper data structure
cocoaTouch/GameSetup.h
cocoaTouch/GameSetup.m
project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.mode1v3
project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.pbxuser
--- a/cocoaTouch/GameSetup.h	Tue Mar 30 00:02:40 2010 +0000
+++ b/cocoaTouch/GameSetup.h	Tue Mar 30 00:03:58 2010 +0000
@@ -11,16 +11,19 @@
 
 @interface GameSetup : NSObject {
 	NSDictionary *systemSettings;
-	
+	NSArray *teams;
+    
 	NSInteger ipcPort;
 	TCPsocket sd, csd; // Socket descriptor, Client socket descriptor
 }
 
 @property (nonatomic, retain) NSDictionary *systemSettings;
+@property (nonatomic, retain) NSArray *teams;
 
 -(void) engineProtocol;
 -(void) startThread: (NSString *)selector;
 -(int) sendToEngine: (NSString *)string;
+-(void) sendTeamData:(NSDictionary *)teamData;
 -(const char **)getSettings;
 @end
 
--- a/cocoaTouch/GameSetup.m	Tue Mar 30 00:02:40 2010 +0000
+++ b/cocoaTouch/GameSetup.m	Tue Mar 30 00:03:58 2010 +0000
@@ -17,19 +17,48 @@
 
 @implementation GameSetup
 
-@synthesize systemSettings;
+@synthesize systemSettings, teams;
 
 -(id) init {
-	self = [super init];
-	srandom(time(NULL));
-	ipcPort = (random() % 64541) + 1025;
-		
-	NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"];
-	systemSettings = [[NSDictionary alloc] initWithContentsOfFile:filePath]; //should check it exists
-	return self;
+	if (self = [super init]) {
+    	srandom(time(NULL));
+        ipcPort = (random() % 64541) + 1025;
+    
+        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",
+                                   @"93919294221991210322351110012010000002111040400044140044464564444477477611221114440000000000000205500000040007004000000000213111103121111111231141111111111111112111",
+                                   @"ammostore",nil];
+        [hedgehogs1 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",
+                                    @"93919294221991210322351110012010000002111040400044140044464564444477477611221114440000000000000205500000040007004000000000213111103121111111231141111111111111112111",
+                                    @"ammostore",nil];
+        [hedgehogs2 release];
+        
+        teams = [[NSArray alloc] initWithObjects: firstTeam, secondTeam, nil];
+        [firstTeam release];
+        [secondTeam release];
+        
+        NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"];
+        systemSettings = [[NSDictionary alloc] initWithContentsOfFile:filePath]; //should check it exists
+        return self;
+    } else
+        return nil;
 }
 
 -(void) dealloc {
+    [teams release];
     [systemSettings release];
 	[super dealloc];
 }
@@ -48,6 +77,43 @@
 	return SDLNet_TCP_Send(csd, [string UTF8String], length);
 }
 
+-(void) sendTeamData:(NSDictionary *)teamData {
+    NSString *teamHashColorAndName = [[NSString alloc] initWithFormat:@"eaddteam %@ %@ %@", [teamData objectForKey:@"hash"], [teamData objectForKey:@"color"], [teamData objectForKey:@"teamname"]];
+    [self sendToEngine: teamHashColorAndName];
+    [teamHashColorAndName release];
+    
+    NSString *grave = [[NSString alloc] initWithFormat:@"egrave %@", [teamData objectForKey:@"grave"]];
+    [self sendToEngine: grave];
+    [grave release];
+    
+    NSString *fort = [[NSString alloc] initWithFormat:@"efort %@", [teamData objectForKey:@"fort"]];
+    [self sendToEngine: fort];
+    [fort release];
+    
+    NSString *voicepack = [[NSString alloc] initWithFormat:@"evoicepack %@", [teamData objectForKey:@"voicepack"]];
+    [self sendToEngine: voicepack];
+    [voicepack release];
+    
+    NSString *flag = [[NSString alloc] initWithFormat:@"eflag %@", [teamData objectForKey:@"flag"]];
+    [self sendToEngine: flag];
+    [flag release];
+    
+    NSArray *hogs = [teamData objectForKey:@"hedgehogs"];
+    for (NSDictionary *hog in hogs) {
+        NSString *hogLevelHealthAndName = [[NSString alloc] initWithFormat:@"eaddhh %@ %@ %@", [hog objectForKey:@"level"], [hog objectForKey:@"health"], [hog objectForKey:@"hogname"]];
+        [self sendToEngine: hogLevelHealthAndName];
+        [hogLevelHealthAndName release];
+        
+        NSString *hogHat = [[NSString alloc] initWithFormat:@"ehat %@", [hog objectForKey:@"hat"]];
+        [self sendToEngine: hogHat];
+        [hogHat release];
+    }
+    
+    NSString *ammostore = [[NSString alloc] initWithFormat:@"eammstore %@", [teamData objectForKey:@"ammostore"]];
+    [self sendToEngine: ammostore];
+    [ammostore release];
+}
+
 -(void) engineProtocol {
 	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 	IPaddress ip;
@@ -124,53 +190,12 @@
 				// theme info
 				[self sendToEngine:@"etheme Compost"];
 				
-				// team 1 info
-				[self sendToEngine:@"eaddteam 0 4421353 System Cats"];
-				
-				// team 1 grave info
-				[self sendToEngine:@"egrave star"];
-				
-				// team 1 fort info
-				[self sendToEngine:@"efort Earth"];
+                for (NSDictionary *teamData in teams) {
+                    [self sendTeamData:teamData];
+                    NSLog(@"teamData sent");
+                }
 								
-				// team 1 voicepack info
-				[self sendToEngine:@"evoicepack Classic"];
-				
-				// team 1 flag
-				[self sendToEngine:@"eflag hedgewars"];
-
-				// team 1 binds (skipped)			
-				// team 1 members info
-				[self sendToEngine:@"eaddhh 0 100 Snow Leopard"];
-				[self sendToEngine:@"ehat NoHat"];
-
-				// team 1 ammostore
-				[self sendToEngine:@"eammstore 93919294221991210322351110012010000002111040400044140044464564444477477611221114440000000000000205500000040007004000000000213111103121111111231141111111111111112111"];
-				
-				// team 2 info
-				[self sendToEngine:@"eaddteam 0 4100897 Poke-MAN"];
-				
-				// team 2 grave info
-				[self sendToEngine:@"egrave Badger"];
-				
-				// team 2 fort info
-				[self sendToEngine:@"efort UFO"];
-				
-				// team 2 voicepack info
-				[self sendToEngine:@"evoicepack Classic"];
-
-				// team 2 flag
-				[self sendToEngine:@"eflag hedgewars"];
-
-				// team 2 binds (skipped)
-				// team 2 members info
-				[self sendToEngine:@"eaddhh 0 100 Raichu"];
-				[self sendToEngine:@"ehat Bunny"];
-
-				// team 2 ammostore
-				[self sendToEngine:@"eammstore 93919294221991210322351110012010000002111040400044140044464564444477477611221114440000000000000205500000040007004000000000213111103121111111231141111111111111112111"];
-				
-				clientQuit = NO;
+			clientQuit = NO;
 			} else {
 				NSLog(@"engineProtocolThread - wrong message or client closed connection");
 				clientQuit = YES;
--- a/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.mode1v3	Tue Mar 30 00:02:40 2010 +0000
+++ b/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.mode1v3	Tue Mar 30 00:03:58 2010 +0000
@@ -202,24 +202,24 @@
 			<key>Content</key>
 			<dict>
 				<key>PBXProjectModuleGUID</key>
-				<string>61CCBF841161657400833FE8</string>
+				<string>61715D4711618D1B0029EE6B</string>
 				<key>PBXProjectModuleLabel</key>
-				<string>uTeams.pas</string>
+				<string>GameSetup.m</string>
 				<key>PBXSplitModuleInNavigatorKey</key>
 				<dict>
 					<key>Split0</key>
 					<dict>
 						<key>PBXProjectModuleGUID</key>
-						<string>61CCBF851161657400833FE8</string>
+						<string>61715D6E116192870029EE6B</string>
 						<key>PBXProjectModuleLabel</key>
-						<string>uTeams.pas</string>
+						<string>GameSetup.m</string>
 						<key>_historyCapacity</key>
 						<integer>0</integer>
 						<key>bookmark</key>
-						<string>61CCBF871161657400833FE8</string>
+						<string>61715D70116192870029EE6B</string>
 						<key>history</key>
 						<array>
-							<string>61CCBF861161657400833FE8</string>
+							<string>61715D6F116192870029EE6B</string>
 						</array>
 					</dict>
 					<key>SplitCount</key>
@@ -231,51 +231,11 @@
 			<key>Geometry</key>
 			<dict>
 				<key>Frame</key>
-				<string>{{0, 20}, {938, 870}}</string>
+				<string>{{0, 20}, {1079, 773}}</string>
 				<key>PBXModuleWindowStatusBarHidden2</key>
 				<false/>
 				<key>RubberWindowFrame</key>
-				<string>15 262 938 911 0 0 1920 1178 </string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Content</key>
-			<dict>
-				<key>PBXProjectModuleGUID</key>
-				<string>61CCBF5C1161640E00833FE8</string>
-				<key>PBXProjectModuleLabel</key>
-				<string>hwengine.pas</string>
-				<key>PBXSplitModuleInNavigatorKey</key>
-				<dict>
-					<key>Split0</key>
-					<dict>
-						<key>PBXProjectModuleGUID</key>
-						<string>61CCBF5D1161640E00833FE8</string>
-						<key>PBXProjectModuleLabel</key>
-						<string>hwengine.pas</string>
-						<key>_historyCapacity</key>
-						<integer>0</integer>
-						<key>bookmark</key>
-						<string>61CCBF881161657400833FE8</string>
-						<key>history</key>
-						<array>
-							<string>61CCBF58116163B000833FE8</string>
-						</array>
-					</dict>
-					<key>SplitCount</key>
-					<string>1</string>
-				</dict>
-				<key>StatusBarVisibility</key>
-				<true/>
-			</dict>
-			<key>Geometry</key>
-			<dict>
-				<key>Frame</key>
-				<string>{{0, 20}, {897, 595}}</string>
-				<key>PBXModuleWindowStatusBarHidden2</key>
-				<false/>
-				<key>RubberWindowFrame</key>
-				<string>421 232 897 636 0 0 1920 1178 </string>
+				<string>735 364 1079 814 0 0 1920 1178 </string>
 			</dict>
 		</dict>
 	</array>
@@ -310,6 +270,8 @@
 			<key>Layout</key>
 			<array>
 				<dict>
+					<key>BecomeActive</key>
+					<true/>
 					<key>ContentConfiguration</key>
 					<dict>
 						<key>PBXBottomSmartGroupGIDs</key>
@@ -353,7 +315,8 @@
 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 							<array>
 								<array>
-									<integer>1</integer>
+									<integer>4</integer>
+									<integer>2</integer>
 									<integer>0</integer>
 								</array>
 							</array>
@@ -393,7 +356,7 @@
 								<key>PBXProjectModuleGUID</key>
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>uIO.pas</string>
+								<string>GameSetup.m</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
 									<key>Split0</key>
@@ -401,11 +364,11 @@
 										<key>PBXProjectModuleGUID</key>
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>uIO.pas</string>
+										<string>GameSetup.m</string>
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>61CCBF831161657400833FE8</string>
+										<string>61715D6D116192870029EE6B</string>
 										<key>history</key>
 										<array>
 											<string>6179889D114AA5BD00BA94A9</string>
@@ -440,20 +403,17 @@
 											<string>611FDB6C1155C0B300C2203D</string>
 											<string>611FDB6D1155C0B300C2203D</string>
 											<string>611FDBF71155D39400C2203D</string>
-											<string>611FDC1B1155D8E400C2203D</string>
 											<string>61E2F0811156B170002D33C1</string>
 											<string>618AFC07115BE92A003D411B</string>
 											<string>61CE23E7115E49560098C467</string>
 											<string>61CE23FF115E4B290098C467</string>
 											<string>61CE2410115E4F620098C467</string>
-											<string>61CE2461115E56FD0098C467</string>
 											<string>61CE24D4115E5E630098C467</string>
 											<string>61CE24DC115E641F0098C467</string>
 											<string>61CE24FE115E72A80098C467</string>
 											<string>61CE2514115E74CC0098C467</string>
 											<string>61CE2515115E74CC0098C467</string>
 											<string>61CE251F115E75A70098C467</string>
-											<string>61CE2552115E77C50098C467</string>
 											<string>61CE2577115E78900098C467</string>
 											<string>61CE2578115E78900098C467</string>
 											<string>61CE25B4115E7C940098C467</string>
@@ -467,31 +427,35 @@
 											<string>615E239A115F023B00B0ACA1</string>
 											<string>615E239B115F023B00B0ACA1</string>
 											<string>61CCBDA11160666200833FE8</string>
-											<string>61CCBDC711606DEA00833FE8</string>
 											<string>61CCBE60116135FF00833FE8</string>
-											<string>61CCBE6C116136F600833FE8</string>
 											<string>61CCBECC1161477A00833FE8</string>
 											<string>61CCBECD1161477A00833FE8</string>
 											<string>61CCBECE1161477A00833FE8</string>
-											<string>61CCBED01161477A00833FE8</string>
-											<string>61CCBEEB1161493800833FE8</string>
 											<string>61CCBF1E116162CA00833FE8</string>
 											<string>61CCBF1F116162CA00833FE8</string>
 											<string>61CCBF451161637F00833FE8</string>
 											<string>61CCBF461161637F00833FE8</string>
 											<string>61CCBF471161637F00833FE8</string>
-											<string>61CCBF481161637F00833FE8</string>
-											<string>61CCBF491161637F00833FE8</string>
 											<string>61CCBF791161657400833FE8</string>
-											<string>61CCBF7A1161657400833FE8</string>
 											<string>61CCBF7B1161657400833FE8</string>
 											<string>61CCBF7C1161657400833FE8</string>
-											<string>61CCBF7D1161657400833FE8</string>
 											<string>61CCBF7E1161657400833FE8</string>
 											<string>61CCBF7F1161657400833FE8</string>
-											<string>61CCBF801161657400833FE8</string>
 											<string>61CCBF811161657400833FE8</string>
-											<string>61CCBF821161657400833FE8</string>
+											<string>61CCBFD11161833800833FE8</string>
+											<string>61CCBFD21161833800833FE8</string>
+											<string>61CCBFD31161833800833FE8</string>
+											<string>61CCBFD41161833800833FE8</string>
+											<string>61CCBFD51161833800833FE8</string>
+											<string>61CCBFD61161833800833FE8</string>
+											<string>61CCBFD71161833800833FE8</string>
+											<string>61CCBFD81161833800833FE8</string>
+											<string>61CCBFD91161833800833FE8</string>
+											<string>61CCBFDA1161833800833FE8</string>
+											<string>61CCBFDB1161833800833FE8</string>
+											<string>61CCBFDC1161833800833FE8</string>
+											<string>61CCBFDD1161833800833FE8</string>
+											<string>61715D4311618D1B0029EE6B</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
@@ -503,18 +467,16 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {593, 56}}</string>
+								<string>{{0, 0}, {593, 101}}</string>
 								<key>RubberWindowFrame</key>
 								<string>1063 490 801 617 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>56pt</string>
+							<string>101pt</string>
 						</dict>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -525,14 +487,14 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 61}, {593, 515}}</string>
+								<string>{{0, 106}, {593, 470}}</string>
 								<key>RubberWindowFrame</key>
 								<string>1063 490 801 617 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
 							<key>Proportion</key>
-							<string>515pt</string>
+							<string>470pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
@@ -551,9 +513,9 @@
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>61CCBDA41160666200833FE8</string>
+				<string>61715D4511618D1B0029EE6B</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>61CCBDA51160666200833FE8</string>
+				<string>61715D4611618D1B0029EE6B</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
@@ -691,20 +653,13 @@
 	<integer>5</integer>
 	<key>WindowOrderList</key>
 	<array>
-		<string>61CCBF891161657400833FE8</string>
-		<string>61CCBF8A1161657400833FE8</string>
-		<string>61CCBF8B1161657400833FE8</string>
-		<string>61CCBF8C1161657400833FE8</string>
-		<string>61CCBF8D1161657400833FE8</string>
-		<string>61CCBF8E1161657400833FE8</string>
-		<string>61CCBDDB11606DED00833FE8</string>
-		<string>61CCBDD611606DEA00833FE8</string>
+		<string>61715D5011618D1B0029EE6B</string>
+		<string>61715D5111618D1B0029EE6B</string>
 		<string>1C78EAAD065D492600B07095</string>
 		<string>1CD10A99069EF8BA00B06720</string>
 		<string>61798848114AA42600BA94A9</string>
-		<string>61CCBF5C1161640E00833FE8</string>
-		<string>61CCBF841161657400833FE8</string>
 		<string>/Users/vittorio/hedgewars/trunk/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj</string>
+		<string>61715D4711618D1B0029EE6B</string>
 	</array>
 	<key>WindowString</key>
 	<string>1063 490 801 617 0 0 1920 1178 </string>
@@ -730,21 +685,21 @@
 								<key>PBXProjectModuleGUID</key>
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>uLand.pas</string>
+								<string>GameSetup.m</string>
 								<key>StatusBarVisibility</key>
 								<true/>
 							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {847, 230}}</string>
+								<string>{{0, 0}, {1065, 243}}</string>
 								<key>RubberWindowFrame</key>
-								<string>161 276 847 561 0 0 1920 1178 </string>
+								<string>161 263 1065 574 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>230pt</string>
+							<string>243pt</string>
 						</dict>
 						<dict>
 							<key>ContentConfiguration</key>
@@ -761,9 +716,9 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 235}, {847, 285}}</string>
+								<string>{{0, 248}, {1065, 285}}</string>
 								<key>RubberWindowFrame</key>
-								<string>161 276 847 561 0 0 1920 1178 </string>
+								<string>161 263 1065 574 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXBuildResultsModule</string>
@@ -772,7 +727,7 @@
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>520pt</string>
+					<string>533pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -786,7 +741,7 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>61798848114AA42600BA94A9</string>
-				<string>61CCBDA01160666200833FE8</string>
+				<string>61715D28116186890029EE6B</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
@@ -795,7 +750,7 @@
 			<key>WindowContentMinSize</key>
 			<string>486 300</string>
 			<key>WindowString</key>
-			<string>161 276 847 561 0 0 1920 1178 </string>
+			<string>161 263 1065 574 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>61798848114AA42600BA94A9</string>
 			<key>WindowToolIsVisible</key>
@@ -908,13 +863,13 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>61CCBDCE11606DEA00833FE8</string>
+				<string>61715D3A11618D150029EE6B</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>61CCBDCF11606DEA00833FE8</string>
-				<string>61CCBDD011606DEA00833FE8</string>
-				<string>61CCBDD111606DEA00833FE8</string>
-				<string>61CCBDD211606DEA00833FE8</string>
-				<string>61CCBDD311606DEA00833FE8</string>
+				<string>61715D3B11618D150029EE6B</string>
+				<string>61715D3C11618D150029EE6B</string>
+				<string>61715D3D11618D150029EE6B</string>
+				<string>61715D3E11618D150029EE6B</string>
+				<string>61715D3F11618D150029EE6B</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
@@ -1078,7 +1033,7 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1C78EAAD065D492600B07095</string>
-				<string>61CCBDD411606DEA00833FE8</string>
+				<string>61715D4011618D150029EE6B</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
 			<key>ToolbarConfiguration</key>
--- a/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.pbxuser	Tue Mar 30 00:02:40 2010 +0000
+++ b/project_files/HedgewarsMobile/HedgewarsMobile.xcodeproj/vittorio.pbxuser	Tue Mar 30 00:03:58 2010 +0000
@@ -94,8 +94,8 @@
 					PBXFileDataSource_Warnings_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 291595640;
-			PBXWorkspaceStateSaveDate = 291595640;
+			PBXPerProjectTemplateStateSaveDate = 291603329;
+			PBXWorkspaceStateSaveDate = 291603329;
 		};
 		perUserProjectItems = {
 			611FD81D1155111700C2203D = 611FD81D1155111700C2203D /* PBXTextBookmark */;
@@ -120,7 +120,6 @@
 			611FDB6C1155C0B300C2203D = 611FDB6C1155C0B300C2203D /* PBXBookmark */;
 			611FDB6D1155C0B300C2203D = 611FDB6D1155C0B300C2203D /* PBXBookmark */;
 			611FDBF71155D39400C2203D = 611FDBF71155D39400C2203D /* PBXTextBookmark */;
-			611FDC1B1155D8E400C2203D = 611FDC1B1155D8E400C2203D /* PBXTextBookmark */;
 			615E2350115ED80500B0ACA1 = 615E2350115ED80500B0ACA1 /* PBXTextBookmark */;
 			615E2395115F023B00B0ACA1 = 615E2395115F023B00B0ACA1 /* PBXTextBookmark */;
 			615E2396115F023B00B0ACA1 = 615E2396115F023B00B0ACA1 /* PBXTextBookmark */;
@@ -129,6 +128,36 @@
 			615E2399115F023B00B0ACA1 = 615E2399115F023B00B0ACA1 /* PBXTextBookmark */;
 			615E239A115F023B00B0ACA1 = 615E239A115F023B00B0ACA1 /* PBXTextBookmark */;
 			615E239B115F023B00B0ACA1 = 615E239B115F023B00B0ACA1 /* PBXTextBookmark */;
+			61715D3811618D150029EE6B /* XCBuildMessageTextBookmark */ = 61715D3811618D150029EE6B /* XCBuildMessageTextBookmark */;
+			61715D3911618D150029EE6B /* PBXTextBookmark */ = 61715D3911618D150029EE6B /* PBXTextBookmark */;
+			61715D4311618D1B0029EE6B /* XCBuildMessageTextBookmark */ = 61715D4311618D1B0029EE6B /* XCBuildMessageTextBookmark */;
+			61715D4411618D1B0029EE6B /* PBXTextBookmark */ = 61715D4411618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4911618D1B0029EE6B /* PBXTextBookmark */ = 61715D4911618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4A11618D1B0029EE6B /* PBXTextBookmark */ = 61715D4A11618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4B11618D1B0029EE6B /* PBXTextBookmark */ = 61715D4B11618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4D11618D1B0029EE6B /* PBXTextBookmark */ = 61715D4D11618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4E11618D1B0029EE6B /* PBXTextBookmark */ = 61715D4E11618D1B0029EE6B /* PBXTextBookmark */;
+			61715D4F11618D1B0029EE6B /* PBXTextBookmark */ = 61715D4F11618D1B0029EE6B /* PBXTextBookmark */;
+			61715D5411618D5A0029EE6B /* PBXTextBookmark */ = 61715D5411618D5A0029EE6B /* PBXTextBookmark */;
+			61715D5511618D5A0029EE6B /* PBXTextBookmark */ = 61715D5511618D5A0029EE6B /* PBXTextBookmark */;
+			61715D5611618D5A0029EE6B /* PBXTextBookmark */ = 61715D5611618D5A0029EE6B /* PBXTextBookmark */;
+			61715D5911618D880029EE6B /* PBXTextBookmark */ = 61715D5911618D880029EE6B /* PBXTextBookmark */;
+			61715D5A11618D880029EE6B /* PBXTextBookmark */ = 61715D5A11618D880029EE6B /* PBXTextBookmark */;
+			61715D5B11618D880029EE6B /* PBXTextBookmark */ = 61715D5B11618D880029EE6B /* PBXTextBookmark */;
+			61715D5C11618D880029EE6B /* PBXTextBookmark */ = 61715D5C11618D880029EE6B /* PBXTextBookmark */;
+			61715D5F11618DC70029EE6B /* PBXTextBookmark */ = 61715D5F11618DC70029EE6B /* PBXTextBookmark */;
+			61715D6011618DC70029EE6B /* PBXTextBookmark */ = 61715D6011618DC70029EE6B /* PBXTextBookmark */;
+			61715D6111618DC70029EE6B /* PBXTextBookmark */ = 61715D6111618DC70029EE6B /* PBXTextBookmark */;
+			61715D6411618EE30029EE6B /* PBXTextBookmark */ = 61715D6411618EE30029EE6B /* PBXTextBookmark */;
+			61715D6511618EE30029EE6B /* PBXTextBookmark */ = 61715D6511618EE30029EE6B /* PBXTextBookmark */;
+			61715D6611618EE30029EE6B /* PBXTextBookmark */ = 61715D6611618EE30029EE6B /* PBXTextBookmark */;
+			61715D6911618F460029EE6B /* PBXTextBookmark */ = 61715D6911618F460029EE6B /* PBXTextBookmark */;
+			61715D6A11618F460029EE6B /* PBXTextBookmark */ = 61715D6A11618F460029EE6B /* PBXTextBookmark */;
+			61715D6B11618F460029EE6B /* PBXTextBookmark */ = 61715D6B11618F460029EE6B /* PBXTextBookmark */;
+			61715D6C11618F460029EE6B /* PBXTextBookmark */ = 61715D6C11618F460029EE6B /* PBXTextBookmark */;
+			61715D6D116192870029EE6B /* PBXTextBookmark */ = 61715D6D116192870029EE6B /* PBXTextBookmark */;
+			61715D6F116192870029EE6B /* PBXTextBookmark */ = 61715D6F116192870029EE6B /* PBXTextBookmark */;
+			61715D70116192870029EE6B /* PBXTextBookmark */ = 61715D70116192870029EE6B /* PBXTextBookmark */;
 			6179889D114AA5BD00BA94A9 = 6179889D114AA5BD00BA94A9 /* PBXTextBookmark */;
 			61799342114B297000BA94A9 = 61799342114B297000BA94A9 /* PBXBookmark */;
 			61799343114B297000BA94A9 = 61799343114B297000BA94A9 /* PBXBookmark */;
@@ -143,45 +172,43 @@
 			61CCBDA11160666200833FE8 = 61CCBDA11160666200833FE8 /* PBXTextBookmark */;
 			61CCBDC711606DEA00833FE8 = 61CCBDC711606DEA00833FE8 /* PBXTextBookmark */;
 			61CCBE60116135FF00833FE8 = 61CCBE60116135FF00833FE8 /* PBXTextBookmark */;
-			61CCBE6C116136F600833FE8 = 61CCBE6C116136F600833FE8 /* PBXTextBookmark */;
 			61CCBECC1161477A00833FE8 = 61CCBECC1161477A00833FE8 /* PBXTextBookmark */;
 			61CCBECD1161477A00833FE8 = 61CCBECD1161477A00833FE8 /* PBXTextBookmark */;
 			61CCBECE1161477A00833FE8 = 61CCBECE1161477A00833FE8 /* PBXTextBookmark */;
-			61CCBED01161477A00833FE8 = 61CCBED01161477A00833FE8 /* PBXTextBookmark */;
-			61CCBEEB1161493800833FE8 = 61CCBEEB1161493800833FE8 /* PBXTextBookmark */;
 			61CCBF1E116162CA00833FE8 = 61CCBF1E116162CA00833FE8 /* PBXTextBookmark */;
 			61CCBF1F116162CA00833FE8 = 61CCBF1F116162CA00833FE8 /* PBXTextBookmark */;
 			61CCBF451161637F00833FE8 = 61CCBF451161637F00833FE8 /* PBXTextBookmark */;
 			61CCBF461161637F00833FE8 = 61CCBF461161637F00833FE8 /* PBXTextBookmark */;
 			61CCBF471161637F00833FE8 = 61CCBF471161637F00833FE8 /* PBXTextBookmark */;
-			61CCBF481161637F00833FE8 = 61CCBF481161637F00833FE8 /* PBXTextBookmark */;
-			61CCBF491161637F00833FE8 = 61CCBF491161637F00833FE8 /* PBXTextBookmark */;
-			61CCBF58116163B000833FE8 = 61CCBF58116163B000833FE8 /* PBXBookmark */;
 			61CCBF791161657400833FE8 = 61CCBF791161657400833FE8 /* PBXTextBookmark */;
-			61CCBF7A1161657400833FE8 = 61CCBF7A1161657400833FE8 /* PBXTextBookmark */;
 			61CCBF7B1161657400833FE8 = 61CCBF7B1161657400833FE8 /* PBXTextBookmark */;
 			61CCBF7C1161657400833FE8 = 61CCBF7C1161657400833FE8 /* PBXTextBookmark */;
-			61CCBF7D1161657400833FE8 = 61CCBF7D1161657400833FE8 /* PBXTextBookmark */;
 			61CCBF7E1161657400833FE8 = 61CCBF7E1161657400833FE8 /* PBXTextBookmark */;
 			61CCBF7F1161657400833FE8 = 61CCBF7F1161657400833FE8 /* PBXTextBookmark */;
-			61CCBF801161657400833FE8 = 61CCBF801161657400833FE8 /* PBXTextBookmark */;
 			61CCBF811161657400833FE8 = 61CCBF811161657400833FE8 /* PBXTextBookmark */;
-			61CCBF821161657400833FE8 = 61CCBF821161657400833FE8 /* PBXBookmark */;
-			61CCBF831161657400833FE8 = 61CCBF831161657400833FE8 /* PBXTextBookmark */;
-			61CCBF861161657400833FE8 = 61CCBF861161657400833FE8 /* PBXTextBookmark */;
-			61CCBF871161657400833FE8 = 61CCBF871161657400833FE8 /* PBXTextBookmark */;
-			61CCBF881161657400833FE8 = 61CCBF881161657400833FE8 /* PBXTextBookmark */;
+			61CCBFD11161833800833FE8 = 61CCBFD11161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD21161833800833FE8 = 61CCBFD21161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD31161833800833FE8 = 61CCBFD31161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD41161833800833FE8 = 61CCBFD41161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD51161833800833FE8 = 61CCBFD51161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD61161833800833FE8 = 61CCBFD61161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD71161833800833FE8 = 61CCBFD71161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD81161833800833FE8 = 61CCBFD81161833800833FE8 /* PBXTextBookmark */;
+			61CCBFD91161833800833FE8 = 61CCBFD91161833800833FE8 /* PBXTextBookmark */;
+			61CCBFDA1161833800833FE8 = 61CCBFDA1161833800833FE8 /* PBXTextBookmark */;
+			61CCBFDB1161833800833FE8 = 61CCBFDB1161833800833FE8 /* PBXTextBookmark */;
+			61CCBFDC1161833800833FE8 = 61CCBFDC1161833800833FE8 /* PBXTextBookmark */;
+			61CCBFDD1161833800833FE8 = 61CCBFDD1161833800833FE8 /* PBXTextBookmark */;
+			61CCBFDE1161833800833FE8 = 61CCBFDE1161833800833FE8 /* PBXTextBookmark */;
 			61CE23E7115E49560098C467 = 61CE23E7115E49560098C467 /* PBXTextBookmark */;
 			61CE23FF115E4B290098C467 = 61CE23FF115E4B290098C467 /* PBXBookmark */;
 			61CE2410115E4F620098C467 = 61CE2410115E4F620098C467 /* PBXBookmark */;
-			61CE2461115E56FD0098C467 = 61CE2461115E56FD0098C467 /* PBXTextBookmark */;
 			61CE24D4115E5E630098C467 = 61CE24D4115E5E630098C467 /* PBXTextBookmark */;
 			61CE24DC115E641F0098C467 = 61CE24DC115E641F0098C467 /* PBXTextBookmark */;
 			61CE24FE115E72A80098C467 = 61CE24FE115E72A80098C467 /* PBXTextBookmark */;
 			61CE2514115E74CC0098C467 = 61CE2514115E74CC0098C467 /* PBXBookmark */;
 			61CE2515115E74CC0098C467 = 61CE2515115E74CC0098C467 /* PBXTextBookmark */;
 			61CE251F115E75A70098C467 = 61CE251F115E75A70098C467 /* PBXBookmark */;
-			61CE2552115E77C50098C467 = 61CE2552115E77C50098C467 /* PBXTextBookmark */;
 			61CE2577115E78900098C467 = 61CE2577115E78900098C467 /* PBXTextBookmark */;
 			61CE2578115E78900098C467 = 61CE2578115E78900098C467 /* PBXTextBookmark */;
 			61CE25B4115E7C940098C467 = 61CE25B4115E7C940098C467 /* PBXTextBookmark */;
@@ -212,7 +239,7 @@
 		argumentStrings = (
 		);
 		autoAttachOnCrash = 1;
-		breakpointsEnabled = 1;
+		breakpointsEnabled = 0;
 		configStateDict = {
 		};
 		customDataFormattersEnabled = 1;
@@ -421,16 +448,6 @@
 		vrLen = 201;
 		vrLoc = 686;
 	};
-	611FDC1B1155D8E400C2203D /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987FC114AA34C00BA94A9 /* uGears.pas */;
-		name = "uGears.pas: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 316;
-		vrLoc = 0;
-	};
 	615E2350115ED80500B0ACA1 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 61CE24ED115E71C20098C467 /* PopupMenuViewController.m */;
@@ -511,6 +528,301 @@
 		vrLen = 269;
 		vrLoc = 1592;
 	};
+	61715D3811618D150029EE6B /* XCBuildMessageTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "Expected ',' or ';' before 'NSDictionary'";
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		fallbackIsa = XCBuildMessageTextBookmark;
+		rLen = 1;
+		rLoc = 27;
+		rType = 1;
+	};
+	61715D3911618D150029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 38";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 1277;
+		vrLoc = 385;
+	};
+	61715D4311618D1B0029EE6B /* XCBuildMessageTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "Expected ',' or ';' before 'NSDictionary'";
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		fallbackIsa = XCBuildMessageTextBookmark;
+		rLen = 1;
+		rLoc = 27;
+		rType = 1;
+	};
+	61715D4411618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 389;
+		vrLoc = 429;
+	};
+	61715D4911618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798887114AA4E600BA94A9 /* GameSetup.h */;
+		name = "GameSetup.h: 20";
+		rLen = 0;
+		rLoc = 426;
+		rType = 0;
+		vrLen = 663;
+		vrLoc = 0;
+	};
+	61715D4A11618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 35";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 1803;
+		vrLoc = 371;
+	};
+	61715D4B11618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 39";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 1353;
+		vrLoc = 1394;
+	};
+	61715D4D11618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 144";
+		rLen = 0;
+		rLoc = 6009;
+		rType = 0;
+		vrLen = 887;
+		vrLoc = 5406;
+	};
+	61715D4E11618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798887114AA4E600BA94A9 /* GameSetup.h */;
+		rLen = 0;
+		rLoc = 9223372036854775807;
+		rType = 0;
+	};
+	61715D4F11618D1B0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798887114AA4E600BA94A9 /* GameSetup.h */;
+		name = "GameSetup.h: 10";
+		rLen = 0;
+		rLoc = 188;
+		rType = 0;
+		vrLen = 629;
+		vrLoc = 0;
+	};
+	61715D5411618D5A0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 389;
+		vrLoc = 429;
+	};
+	61715D5511618D5A0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 110";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 1185;
+		vrLoc = 3594;
+	};
+	61715D5611618D5A0029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798887114AA4E600BA94A9 /* GameSetup.h */;
+		name = "GameSetup.h: 8";
+		rLen = 0;
+		rLoc = 134;
+		rType = 0;
+		vrLen = 645;
+		vrLoc = 19;
+	};
+	61715D5911618D880029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 389;
+		vrLoc = 429;
+	};
+	61715D5A11618D880029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 110";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 1185;
+		vrLoc = 3594;
+	};
+	61715D5B11618D880029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798887114AA4E600BA94A9 /* GameSetup.h */;
+		name = "GameSetup.h: 10";
+		rLen = 1;
+		rLoc = 188;
+		rType = 0;
+		vrLen = 645;
+		vrLoc = 19;
+	};
+	61715D5C11618D880029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 43";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 2011;
+		vrLoc = 407;
+	};
+	61715D5F11618DC70029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 389;
+		vrLoc = 429;
+	};
+	61715D6011618DC70029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 113";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 1060;
+		vrLoc = 3726;
+	};
+	61715D6111618DC70029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 34";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 1839;
+		vrLoc = 818;
+	};
+	61715D6411618EE30029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 389;
+		vrLoc = 429;
+	};
+	61715D6511618EE30029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 113";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 1060;
+		vrLoc = 3726;
+	};
+	61715D6611618EE30029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 194";
+		rLen = 0;
+		rLoc = 7690;
+		rType = 0;
+		vrLen = 831;
+		vrLoc = 6920;
+	};
+	61715D6911618F460029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 38";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 1277;
+		vrLoc = 385;
+	};
+	61715D6A11618F460029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 28";
+		rLen = 0;
+		rLoc = 493;
+		rType = 0;
+		vrLen = 431;
+		vrLoc = 429;
+	};
+	61715D6B11618F460029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 113";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 1086;
+		vrLoc = 3726;
+	};
+	61715D6C11618F460029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 194";
+		rLen = 0;
+		rLoc = 7690;
+		rType = 0;
+		vrLen = 891;
+		vrLoc = 6920;
+	};
+	61715D6D116192870029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 58";
+		rLen = 0;
+		rLoc = 2913;
+		rType = 0;
+		vrLen = 715;
+		vrLoc = 489;
+	};
+	61715D6F116192870029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 194";
+		rLen = 0;
+		rLoc = 7690;
+		rType = 0;
+		vrLen = 201;
+		vrLoc = 6920;
+	};
+	61715D70116192870029EE6B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 114";
+		rLen = 0;
+		rLoc = 5127;
+		rType = 0;
+		vrLen = 2483;
+		vrLoc = 1906;
+	};
 	617987D7114AA2CD00BA94A9 /* HedgewarsMobile */ = {
 		isa = PBXExecutable;
 		activeArgIndices = (
@@ -583,17 +895,17 @@
 	};
 	617987E4114AA34C00BA94A9 /* GSHandlers.inc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {607, 38350}}";
-			sepNavSelRange = "{23019, 0}";
-			sepNavVisRange = "{22871, 352}";
+			sepNavIntBoundsRect = "{{0, 0}, {572, 39507}}";
+			sepNavSelRange = "{23048, 0}";
+			sepNavVisRange = "{22940, 148}";
 			sepNavWindowFrame = "{{429, 163}, {794, 632}}";
 		};
 	};
 	617987E7114AA34C00BA94A9 /* hwengine.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {838, 7891}}";
-			sepNavSelRange = "{9414, 0}";
-			sepNavVisRange = "{6700, 1065}";
+			sepNavIntBoundsRect = "{{0, 0}, {873, 7618}}";
+			sepNavSelRange = "{6500, 0}";
+			sepNavVisRange = "{4463, 1914}";
 			sepNavWindowFrame = "{{421, 176}, {897, 692}}";
 		};
 	};
@@ -741,17 +1053,17 @@
 	};
 	617987FE114AA34C00BA94A9 /* uKeys.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {862, 6877}}";
-			sepNavSelRange = "{3005, 0}";
-			sepNavVisRange = "{0, 1189}";
+			sepNavIntBoundsRect = "{{0, 0}, {544, 6812}}";
+			sepNavSelRange = "{2954, 0}";
+			sepNavVisRange = "{2933, 21}";
 			sepNavWindowFrame = "{{674, 505}, {921, 605}}";
 		};
 	};
 	617987FF114AA34C00BA94A9 /* uLand.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1734, 15977}}";
-			sepNavSelRange = "{34921, 0}";
-			sepNavVisRange = "{700, 1528}";
+			sepNavIntBoundsRect = "{{0, 0}, {1734, 16068}}";
+			sepNavSelRange = "{25370, 0}";
+			sepNavVisRange = "{25434, 209}";
 			sepNavWindowFrame = "{{287, 275}, {803, 674}}";
 		};
 	};
@@ -773,9 +1085,9 @@
 	};
 	61798802114AA34C00BA94A9 /* uLandTemplates.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {879, 26650}}";
+			sepNavIntBoundsRect = "{{0, 0}, {544, 26650}}";
 			sepNavSelRange = "{1407, 0}";
-			sepNavVisRange = "{0, 2653}";
+			sepNavVisRange = "{1225, 366}";
 			sepNavWindowFrame = "{{38, 185}, {938, 967}}";
 		};
 	};
@@ -797,9 +1109,9 @@
 	};
 	61798805114AA34C00BA94A9 /* uMisc.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {537, 10101}}";
-			sepNavSelRange = "{853, 0}";
-			sepNavVisRange = "{814, 41}";
+			sepNavIntBoundsRect = "{{0, 0}, {1034, 9659}}";
+			sepNavSelRange = "{19704, 6}";
+			sepNavVisRange = "{18808, 1596}";
 			sepNavWindowFrame = "{{84, 143}, {938, 967}}";
 		};
 	};
@@ -845,25 +1157,25 @@
 	};
 	6179880B114AA34C00BA94A9 /* uStore.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {532, 19773}}";
+			sepNavIntBoundsRect = "{{0, 0}, {824, 19786}}";
 			sepNavSelRange = "{36904, 0}";
-			sepNavVisRange = "{0, 49}";
+			sepNavVisRange = "{0, 1275}";
 			sepNavWindowFrame = "{{38, 478}, {803, 674}}";
 		};
 	};
 	6179880C114AA34C00BA94A9 /* uTeams.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {879, 6175}}";
+			sepNavIntBoundsRect = "{{0, 0}, {775, 6617}}";
 			sepNavSelRange = "{932, 0}";
-			sepNavVisRange = "{0, 2245}";
+			sepNavVisRange = "{831, 110}";
 			sepNavWindowFrame = "{{15, 206}, {938, 967}}";
 		};
 	};
 	6179880E114AA34C00BA94A9 /* uVisualGears.pas */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {544, 11154}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1321, 11063}}";
 			sepNavSelRange = "{873, 0}";
-			sepNavVisRange = "{822, 53}";
+			sepNavVisRange = "{0, 2081}";
 			sepNavWindowFrame = "{{38, 185}, {938, 967}}";
 		};
 	};
@@ -1029,16 +1341,17 @@
 	};
 	61798887114AA4E600BA94A9 /* GameSetup.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1020, 742}}";
-			sepNavSelRange = "{550, 0}";
-			sepNavVisRange = "{0, 550}";
+			sepNavIntBoundsRect = "{{0, 0}, {1020, 390}}";
+			sepNavSelRange = "{188, 1}";
+			sepNavVisRange = "{19, 645}";
+			sepNavWindowFrame = "{{61, 439}, {897, 692}}";
 		};
 	};
 	61798888114AA4E600BA94A9 /* GameSetup.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1510, 3848}}";
-			sepNavSelRange = "{8993, 0}";
-			sepNavVisRange = "{3875, 1912}";
+			sepNavIntBoundsRect = "{{0, 0}, {1440, 4056}}";
+			sepNavSelRange = "{5127, 0}";
+			sepNavVisRange = "{1906, 2483}";
 			sepNavWindowFrame = "{{799, 274}, {1079, 870}}";
 		};
 	};
@@ -1124,7 +1437,7 @@
 		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
 		name = "GameSetup.m: 271";
 		rLen = 0;
-		rLoc = 8148;
+		rLoc = 11680;
 		rType = 0;
 		vrLen = 132;
 		vrLoc = 7056;
@@ -1139,16 +1452,6 @@
 		vrLen = 130;
 		vrLoc = 186;
 	};
-	61CCBE6C116136F600833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */;
-		name = "uKeys.pas: 105";
-		rLen = 0;
-		rLoc = 2954;
-		rType = 0;
-		vrLen = 67;
-		vrLoc = 2933;
-	};
 	61CCBECC1161477A00833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */;
@@ -1179,26 +1482,6 @@
 		vrLen = 70;
 		vrLoc = 1891;
 	};
-	61CCBED01161477A00833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987FF114AA34C00BA94A9 /* uLand.pas */;
-		name = "uLand.pas: 917";
-		rLen = 0;
-		rLoc = 25370;
-		rType = 0;
-		vrLen = 80;
-		vrLoc = 25499;
-	};
-	61CCBEEB1161493800833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 61798802114AA34C00BA94A9 /* uLandTemplates.pas */;
-		name = "uLandTemplates.pas: 37";
-		rLen = 0;
-		rLoc = 1407;
-		rType = 0;
-		vrLen = 177;
-		vrLoc = 1273;
-	};
 	61CCBF1E116162CA00833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 617987F3114AA34C00BA94A9 /* uAIAmmoTests.pas */;
@@ -1249,30 +1532,6 @@
 		vrLen = 130;
 		vrLoc = 186;
 	};
-	61CCBF481161637F00833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987F7114AA34C00BA94A9 /* uCollisions.pas */;
-		name = "uCollisions.pas: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 75;
-		vrLoc = 111;
-	};
-	61CCBF491161637F00833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987F9114AA34C00BA94A9 /* uConsts.pas */;
-		name = "uConsts.pas: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 202;
-		vrLoc = 114;
-	};
-	61CCBF58116163B000833FE8 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */;
-	};
 	61CCBF791161657400833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 617987EB114AA34C00BA94A9 /* options.inc */;
@@ -1283,16 +1542,6 @@
 		vrLen = 49;
 		vrLoc = 0;
 	};
-	61CCBF7A1161657400833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6179880C114AA34C00BA94A9 /* uTeams.pas */;
-		name = "uTeams.pas: 23";
-		rLen = 0;
-		rLoc = 932;
-		rType = 0;
-		vrLen = 121;
-		vrLoc = 821;
-	};
 	61CCBF7B1161657400833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 617987FA114AA34C00BA94A9 /* uFloat.pas */;
@@ -1313,16 +1562,6 @@
 		vrLen = 53;
 		vrLoc = 822;
 	};
-	61CCBF7D1161657400833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6179880B114AA34C00BA94A9 /* uStore.pas */;
-		name = "uStore.pas: 1115";
-		rLen = 0;
-		rLoc = 36904;
-		rType = 0;
-		vrLen = 49;
-		vrLoc = 0;
-	};
 	61CCBF7E1161657400833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 61798809114AA34C00BA94A9 /* uSound.pas */;
@@ -1343,16 +1582,6 @@
 		vrLen = 219;
 		vrLoc = 1004;
 	};
-	61CCBF801161657400833FE8 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 61798805114AA34C00BA94A9 /* uMisc.pas */;
-		name = "uMisc.pas: 24";
-		rLen = 0;
-		rLoc = 853;
-		rType = 0;
-		vrLen = 41;
-		vrLoc = 814;
-	};
 	61CCBF811161657400833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 61798803114AA34C00BA94A9 /* uLandTexture.pas */;
@@ -1363,49 +1592,145 @@
 		vrLen = 5;
 		vrLoc = 3748;
 	};
-	61CCBF821161657400833FE8 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = 617987FD114AA34C00BA94A9 /* uIO.pas */;
-	};
-	61CCBF831161657400833FE8 /* PBXTextBookmark */ = {
+	61CCBFD11161833800833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 617987FD114AA34C00BA94A9 /* uIO.pas */;
 		name = "uIO.pas: 1";
 		rLen = 0;
 		rLoc = 0;
 		rType = 0;
-		vrLen = 49;
+		vrLen = 3;
 		vrLoc = 0;
 	};
-	61CCBF861161657400833FE8 /* PBXTextBookmark */ = {
+	61CCBFD21161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987F7114AA34C00BA94A9 /* uCollisions.pas */;
+		name = "uCollisions.pas: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 3;
+		vrLoc = 111;
+	};
+	61CCBFD31161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987F9114AA34C00BA94A9 /* uConsts.pas */;
+		name = "uConsts.pas: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 72;
+		vrLoc = 114;
+	};
+	61CCBFD41161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987FB114AA34C00BA94A9 /* uGame.pas */;
+		name = "uGame.pas: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 62;
+		vrLoc = 49;
+	};
+	61CCBFD51161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987FC114AA34C00BA94A9 /* uGears.pas */;
+		name = "uGears.pas: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 58;
+		vrLoc = 258;
+	};
+	61CCBFD61161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */;
+		name = "uKeys.pas: 105";
+		rLen = 0;
+		rLoc = 2954;
+		rType = 0;
+		vrLen = 21;
+		vrLoc = 2933;
+	};
+	61CCBFD71161833800833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 6179880C114AA34C00BA94A9 /* uTeams.pas */;
 		name = "uTeams.pas: 23";
 		rLen = 0;
 		rLoc = 932;
 		rType = 0;
-		vrLen = 1689;
-		vrLoc = 7334;
+		vrLen = 110;
+		vrLoc = 831;
 	};
-	61CCBF871161657400833FE8 /* PBXTextBookmark */ = {
+	61CCBFD81161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6179880B114AA34C00BA94A9 /* uStore.pas */;
+		name = "uStore.pas: 1115";
+		rLen = 0;
+		rLoc = 36904;
+		rType = 0;
+		vrLen = 383;
+		vrLoc = 3;
+	};
+	61CCBFD91161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61798805114AA34C00BA94A9 /* uMisc.pas */;
+		name = "uMisc.pas: 24";
+		rLen = 0;
+		rLoc = 853;
+		rType = 0;
+		vrLen = 89;
+		vrLoc = 766;
+	};
+	61CCBFDA1161833800833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 6179880C114AA34C00BA94A9 /* uTeams.pas */;
-		name = "uTeams.pas: 23";
+		fRef = 61798802114AA34C00BA94A9 /* uLandTemplates.pas */;
+		name = "uLandTemplates.pas: 37";
+		rLen = 0;
+		rLoc = 1407;
+		rType = 0;
+		vrLen = 366;
+		vrLoc = 1225;
+	};
+	61CCBFDB1161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987FF114AA34C00BA94A9 /* uLand.pas */;
+		name = "uLand.pas: 912";
 		rLen = 0;
-		rLoc = 932;
+		rLoc = 25370;
+		rType = 0;
+		vrLen = 209;
+		vrLoc = 25434;
+	};
+	61CCBFDC1161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 617987E4114AA34C00BA94A9 /* GSHandlers.inc */;
+		name = "GSHandlers.inc: 716";
+		rLen = 0;
+		rLoc = 23048;
 		rType = 0;
-		vrLen = 2200;
+		vrLen = 148;
+		vrLoc = 22940;
+	};
+	61CCBFDD1161833800833FE8 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 61CE24EB115E71C20098C467 /* OverlayViewController.m */;
+		name = "OverlayViewController.m: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 153;
 		vrLoc = 0;
 	};
-	61CCBF881161657400833FE8 /* PBXTextBookmark */ = {
+	61CCBFDE1161833800833FE8 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */;
-		name = "hwengine.pas: 322";
+		fRef = 61798888114AA4E600BA94A9 /* GameSetup.m */;
+		name = "GameSetup.m: 284";
 		rLen = 0;
-		rLoc = 9414;
+		rLoc = 11680;
 		rType = 0;
-		vrLen = 1065;
-		vrLoc = 6700;
+		vrLen = 283;
+		vrLoc = 7036;
 	};
 	61CE23E7115E49560098C467 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
@@ -1425,16 +1750,6 @@
 		isa = PBXBookmark;
 		fRef = 611FD9CF1155A40700C2203D /* NetworkPlay.png */;
 	};
-	61CE2461115E56FD0098C467 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 617987E4114AA34C00BA94A9 /* GSHandlers.inc */;
-		name = "GSHandlers.inc: 709";
-		rLen = 0;
-		rLoc = 23019;
-		rType = 0;
-		vrLen = 352;
-		vrLoc = 22871;
-	};
 	61CE24D4115E5E630098C467 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 61FA7665115DAB1B00DA6ED0 /* DetailViewController.h */;
@@ -1465,9 +1780,9 @@
 	};
 	61CE24EB115E71C20098C467 /* OverlayViewController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {915, 3705}}";
-			sepNavSelRange = "{1629, 123}";
-			sepNavVisRange = "{0, 2263}";
+			sepNavIntBoundsRect = "{{0, 0}, {532, 3848}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 153}";
 			sepNavWindowFrame = "{{38, 185}, {938, 967}}";
 		};
 	};
@@ -1530,16 +1845,6 @@
 		isa = PBXBookmark;
 		fRef = 61798A28114ADD2600BA94A9 /* playButton.png */;
 	};
-	61CE2552115E77C50098C467 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 61CE24EB115E71C20098C467 /* OverlayViewController.m */;
-		name = "OverlayViewController.m: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 154;
-		vrLoc = 0;
-	};
 	61CE2577115E78900098C467 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 61798875114AA4D000BA94A9 /* SettingsViewController.m */;