project_files/HedgewarsMobile/Classes/MapConfigViewController.m
changeset 3642 fb39fecca350
parent 3625 9f1d79e01a60
child 3660 bc125bea5849
--- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m	Wed Jul 14 00:43:36 2010 +0200
+++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m	Thu Jul 15 01:18:51 2010 +0200
@@ -16,7 +16,7 @@
 #define INDICATOR_TAG 7654
 
 @implementation MapConfigViewController
-@synthesize previewButton, maxHogs, seedCommand, templateFilterCommand, mapGenCommand, mazeSizeCommand, themeCommand,
+@synthesize previewButton, maxHogs, seedCommand, templateFilterCommand, mapGenCommand, mazeSizeCommand, themeCommand, staticMapCommand,
             tableView, maxLabel, sizeLabel, segmentedControl, slider, lastIndexPath, themeArray, mapArray, busy;
 
 
@@ -191,6 +191,7 @@
     [self.tableView scrollToRowAtIndexPath:theIndex atScrollPosition:UITableViewScrollPositionNone animated:YES];
 }
 
+// instead of drawing a random map we load an image; this function is called by didSelectRowAtIndexPath only
 -(void) updatePreviewWithMap:(NSInteger) index {
     // change the preview button
     NSString *fileImage = [[NSString alloc] initWithFormat:@"%@/%@/preview.png", MAPS_DIRECTORY(),[self.mapArray objectAtIndex:index]];
@@ -205,12 +206,16 @@
     NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL];
     [fileCfg release];
     NSArray *split = [contents componentsSeparatedByString:@"\n"];
+    [contents release];
 
+    // set the theme and map here
+    self.themeCommand = [NSString stringWithFormat:@"etheme %@", [split objectAtIndex:0]];
+    self.staticMapCommand = [NSString stringWithFormat:@"emap %@", [self.mapArray objectAtIndex:index]];
+    
     // if the number is not set we keep 18 standard; 
     // sometimes it's not set but there are trailing characters, we get around them with the second equation
     if ([split count] > 1 && [[split objectAtIndex:1] intValue] > 0)
         maxHogs = [[split objectAtIndex:1] intValue];
-    [contents release];
     NSString *max = [[NSString alloc] initWithFormat:@"%d",maxHogs];
     self.maxLabel.text = max;
     [max release];
@@ -316,11 +321,13 @@
     
     if (newRow != oldRow) {
         if (self.segmentedControl.selectedSegmentIndex != 1) {
-            NSString *theme = [self.themeArray objectAtIndex:newRow];
-            self.themeCommand =  [NSString stringWithFormat:@"etheme %@", theme];
-        } else
+            NSString *theme = [self.themeArray objectAtIndex:newRow];                
+            self.themeCommand = [NSString stringWithFormat:@"etheme %@", theme];
+        } else {
+            // theme and map are set in the function below
             [self updatePreviewWithMap:newRow];
-
+        }
+        
         UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath]; 
         newCell.accessoryType = UITableViewCellAccessoryCheckmark;
         UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:self.lastIndexPath];
@@ -421,18 +428,21 @@
 // updatePreview will call didSelectRowAtIndexPath which will call the right update routine)
 // and if necessary update the table with a slide animation
 -(IBAction) segmentedControlChanged:(id) sender {
-    NSString *mapgen;
+    NSString *mapgen, *staticmap;
     NSInteger newPage = self.segmentedControl.selectedSegmentIndex;
     
     switch (newPage) {
         case 0: // Random
             mapgen = @"e$mapgen 0";
+            staticmap = @"";
             [self sliderChanged:nil];
             self.slider.enabled = YES;
             break;
             
         case 1: // Map
             mapgen = @"e$mapgen 0";
+            // dummy value, everything is set by -updatePreview -> -didSelectRowAtIndexPath -> -updatePreviewWithMap
+            staticmap = @"map Bamboo";
             self.slider.enabled = NO;
             self.sizeLabel.text = @".";
             [self restoreBackgroundImage];
@@ -440,15 +450,18 @@
             
         case 2: // Maze
             mapgen = @"e$mapgen 1";
+            staticmap = @"";
             [self sliderChanged:nil];
             self.slider.enabled = YES;
             break;
         
         default:
             mapgen = nil;
+            staticmap = nil;
             break;
     }
     self.mapGenCommand = mapgen;
+    self.staticMapCommand = staticmap;
     [self updatePreview];
     
     // nice animation for updating the table when appropriate (on iphone)
@@ -508,6 +521,8 @@
     self.templateFilterCommand = @"e$template_filter 0";
     self.mazeSizeCommand = @"e$maze_size 0";
     self.mapGenCommand = @"e$mapgen 0";
+    self.staticMapCommand = @"";
+    
     self.lastIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
     
     oldValue = 5;
@@ -532,6 +547,7 @@
     self.mapGenCommand = nil;
     self.mazeSizeCommand = nil;
     self.themeCommand = nil;
+    self.staticMapCommand = nil;
     
     self.previewButton = nil;
     self.tableView = nil;
@@ -554,6 +570,7 @@
     [mapGenCommand release];
     [mazeSizeCommand release];
     [themeCommand release];
+    [staticMapCommand release];
     
     [previewButton release];
     [tableView release];