project_files/HedgewarsMobile/Classes/MapConfigViewController.m
author koda
Sun, 20 Jun 2010 23:05:11 +0200
changeset 3525 1d7b056ff866
parent 3514 59dbd31e9953
child 3546 ccf4854df294
permissions -rw-r--r--
some memory caring code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     1
//
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     2
//  MapConfigViewController.m
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     3
//  HedgewarsMobile
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     4
//
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     5
//  Created by Vittorio on 22/04/10.
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     6
//  Copyright 2010 __MyCompanyName__. All rights reserved.
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     7
//
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     8
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
     9
#import "MapConfigViewController.h"
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    10
#import "PascalImports.h"
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    11
#import "CommodityFunctions.h"
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    12
#import "UIImageExtra.h"
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    13
#import "SDL_net.h"
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    14
#import <pthread.h>
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    15
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    16
#define INDICATOR_TAG 7654
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
    17
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    18
@implementation MapConfigViewController
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
    19
@synthesize previewButton, maxHogs, seedCommand, templateFilterCommand, mapGenCommand, mazeSizeCommand, themeCommand,
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3487
diff changeset
    20
            tableView, maxLabel, sizeLabel, segmentedControl, slider, lastIndexPath, themeArray, mapArray, busy;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    21
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    22
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    23
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    24
    return rotationManager(interfaceOrientation);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    25
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    26
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    27
#pragma mark -
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    28
#pragma mark Preview Handling
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    29
-(int) sendToEngine: (NSString *)string {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    30
	unsigned char length = [string length];
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    31
	
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    32
	SDLNet_TCP_Send(csd, &length , 1);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    33
	return SDLNet_TCP_Send(csd, [string UTF8String], length);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    34
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    35
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3492
diff changeset
    36
-(const uint8_t *)engineProtocol:(NSInteger) port {
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    37
	IPaddress ip;
3374
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
    38
	BOOL serverQuit = NO;
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3492
diff changeset
    39
    static uint8_t map[128*32];
3374
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
    40
    
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    41
	if (SDLNet_Init() < 0) {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    42
		NSLog(@"SDLNet_Init: %s", SDLNet_GetError());
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    43
        serverQuit = YES;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    44
	}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    45
	
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
    46
	// Resolving the host using NULL make network interface to listen
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    47
	if (SDLNet_ResolveHost(&ip, NULL, port) < 0) {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    48
		NSLog(@"SDLNet_ResolveHost: %s\n", SDLNet_GetError());
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    49
        serverQuit = YES;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    50
	}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    51
	
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
    52
	// Open a connection with the IP provided (listen on the host's port)
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    53
	if (!(sd = SDLNet_TCP_Open(&ip))) {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    54
		NSLog(@"SDLNet_TCP_Open: %s %\n", SDLNet_GetError(), port);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    55
        serverQuit = YES;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    56
	}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    57
	
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    58
    // launch the preview here so that we're sure the tcp channel is open
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    59
    pthread_t thread_id;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    60
    pthread_create(&thread_id, NULL, (void *)GenLandPreview, (void *)port);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    61
    pthread_detach(thread_id);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    62
    
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3487
diff changeset
    63
	DLog(@"Waiting for a client on port %d", port);
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    64
	while (!serverQuit) {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    65
		/* This check the sd if there is a pending connection.
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    66
		 * If there is one, accept that, and open a new socket for communicating */
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    67
		csd = SDLNet_TCP_Accept(sd);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    68
		if (NULL != csd) {			
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3487
diff changeset
    69
			DLog(@"Client found");
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    70
            
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    71
            [self sendToEngine:self.seedCommand];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    72
            [self sendToEngine:self.templateFilterCommand];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    73
            [self sendToEngine:self.mapGenCommand];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    74
            [self sendToEngine:self.mazeSizeCommand];
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    75
            [self sendToEngine:@"!"];
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    76
                
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    77
            memset(map, 0, 128*32);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    78
            SDLNet_TCP_Recv(csd, map, 128*32);
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3487
diff changeset
    79
            SDLNet_TCP_Recv(csd, &maxHogs, sizeof(uint8_t));
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    80
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    81
			SDLNet_TCP_Close(csd);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    82
			serverQuit = YES;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    83
		}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    84
	}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    85
	
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    86
	SDLNet_TCP_Close(sd);
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    87
	SDLNet_Quit();
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    88
    return map;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    89
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    90
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    91
-(void) drawingThread {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
    92
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    93
    
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    94
    // select the port for IPC and launch the preview generation through engineProtocol:
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    95
    int port = randomPort();
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3492
diff changeset
    96
    const uint8_t *map = [self engineProtocol:port];
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
    97
    uint8_t mapExp[128*32*8];
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    98
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
    99
    // draw the buffer (1 pixel per component, 0= transparent 1= color)
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   100
    int k = 0;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   101
    for (int i = 0; i < 32*128; i++) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   102
        unsigned char byte = map[i];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   103
        for (int j = 0; j < 8; j++) {
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   104
            // select the color based on the leftmost bit
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   105
            if ((byte & 0x80) != 0)
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   106
                mapExp[k] = 100;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   107
            else
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   108
                mapExp[k] = 255;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   109
            // shift to next bit
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   110
            byte <<= 1;
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   111
            k++;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   112
        }
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   113
    }
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   114
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   115
    CGContextRef bitmapImage = CGBitmapContextCreate(mapExp, 256, 128, 8, 256, colorspace, kCGImageAlphaNone);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   116
    CGColorSpaceRelease(colorspace);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   117
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   118
    CGImageRef previewCGImage = CGBitmapContextCreateImage(bitmapImage);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   119
    UIImage *previewImage = [[UIImage alloc] initWithCGImage:previewCGImage];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   120
    CGImageRelease(previewCGImage);
3525
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   121
    previewCGImage = nil;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   122
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   123
    // set the preview image (autoreleased) in the button and the maxhog label on the main thread to prevent a leak
3525
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   124
    [self performSelectorOnMainThread:@selector(setButtonImage:) withObject:[previewImage makeRoundCornersOfSize:CGSizeMake(12, 12)] waitUntilDone:NO];
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   125
    [previewImage release];
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   126
    [self performSelectorOnMainThread:@selector(setLabelText:) withObject:[NSString stringWithFormat:@"%d", maxHogs] waitUntilDone:NO];
3366
f0e5ff24fb72 rename the project from HedgewarsMobile to Hedgewars
koda
parents: 3365
diff changeset
   127
    
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   128
    // restore functionality of button and remove the spinning wheel on the main thread to prevent a leak
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   129
    [self performSelectorOnMainThread:@selector(turnOnWidgets) withObject:nil waitUntilDone:NO];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   130
    
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   131
    [pool release];
3487
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   132
    //Invoking this method should be avoided as it does not give your thread a chance to clean up any resources it allocated during its execution.
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   133
    //[NSThread exit];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   134
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   135
    /*
3366
f0e5ff24fb72 rename the project from HedgewarsMobile to Hedgewars
koda
parents: 3365
diff changeset
   136
    // http://developer.apple.com/mac/library/qa/qa2001/qa1037.html
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   137
    UIGraphicsBeginImageContext(CGSizeMake(256,128));      
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   138
    CGContextRef context = UIGraphicsGetCurrentContext();       
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   139
    UIGraphicsPushContext(context);  
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   140
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   141
    CGContextSetRGBFillColor(context, 0.5, 0.5, 0.7, 1.0);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   142
    CGContextFillRect(context,CGRectMake(xc,yc,1,1));
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   143
    
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   144
    UIGraphicsPopContext();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   145
    UIImage *previewImage = UIGraphicsGetImageFromCurrentImageContext();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   146
    UIGraphicsEndImageContext();
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   147
    */
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   148
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   149
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   150
-(IBAction) updatePreview {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   151
    // don't generate a new preview while it's already generating one
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   152
    if (busy)
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   153
        return;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   154
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   155
    // generate a seed
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   156
    CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   157
    NSString *seed = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   158
    CFRelease(uuid);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   159
    NSString *seedCmd = [[NSString alloc] initWithFormat:@"eseed {%@}", seed];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   160
    [seed release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   161
    self.seedCommand = seedCmd;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   162
    [seedCmd release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   163
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   164
    NSIndexPath *theIndex;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   165
    if (segmentedControl.selectedSegmentIndex != 1) {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   166
        // prevent other events and add an activity while the preview is beign generated
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   167
        [self turnOffWidgets];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   168
        
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   169
        // remove the current preview
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   170
        [self.previewButton setImage:nil forState:UIControlStateNormal];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   171
        
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   172
        // add a very nice spinning wheel
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   173
        UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   174
                                              initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   175
        indicator.center = CGPointMake(previewButton.bounds.size.width / 2, previewButton.bounds.size.height / 2);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   176
        indicator.tag = INDICATOR_TAG;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   177
        [indicator startAnimating];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   178
        [self.previewButton addSubview:indicator];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   179
        [indicator release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   180
        
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   181
        // let's draw in a separate thread so the gui can work; at the end it restore other widgets
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   182
        [NSThread detachNewThreadSelector:@selector(drawingThread) toTarget:self withObject:nil];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   183
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   184
        theIndex = [NSIndexPath indexPathForRow:(random()%[self.themeArray count]) inSection:0];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   185
    } else {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   186
        theIndex = [NSIndexPath indexPathForRow:(random()%[self.mapArray count]) inSection:0];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   187
    }
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   188
    [self.tableView reloadData];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   189
    [self tableView:self.tableView didSelectRowAtIndexPath:theIndex];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   190
    [self.tableView scrollToRowAtIndexPath:theIndex atScrollPosition:UITableViewScrollPositionNone animated:YES];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   191
}
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   192
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   193
-(void) updatePreviewWithMap:(NSInteger) index {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   194
    // change the preview button
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   195
    NSString *fileImage = [[NSString alloc] initWithFormat:@"%@/%@/preview.png", MAPS_DIRECTORY(),[self.mapArray objectAtIndex:index]];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   196
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:fileImage];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   197
    [fileImage release];
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   198
    [self.previewButton setImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:UIControlStateNormal];
3525
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   199
    [image release];
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   200
    
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   201
    // update label
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   202
    maxHogs = 18;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   203
    NSString *fileCfg = [[NSString alloc] initWithFormat:@"%@/%@/map.cfg", MAPS_DIRECTORY(),[self.mapArray objectAtIndex:index]];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   204
    NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   205
    [fileCfg release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   206
    NSArray *split = [contents componentsSeparatedByString:@"\n"];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   207
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   208
    // if the number is not set we keep 18 standard; 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   209
    // sometimes it's not set but there are trailing characters, we get around them with the second equation
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   210
    if ([split count] > 1 && [[split objectAtIndex:1] intValue] > 0)
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   211
        maxHogs = [[split objectAtIndex:1] intValue];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   212
    [contents release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   213
    NSString *max = [[NSString alloc] initWithFormat:@"%d",maxHogs];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   214
    self.maxLabel.text = max;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   215
    [max release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   216
}
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   217
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   218
-(void) turnOffWidgets {
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   219
    busy = YES;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   220
    self.previewButton.alpha = 0.5f;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   221
    self.previewButton.enabled = NO;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   222
    self.maxLabel.text = @"...";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   223
    self.segmentedControl.enabled = NO;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   224
    self.slider.enabled = NO;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   225
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   226
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   227
-(void) turnOnWidgets {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   228
    self.previewButton.alpha = 1.0f;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   229
    self.previewButton.enabled = YES;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   230
    self.segmentedControl.enabled = YES;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   231
    self.slider.enabled = YES;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   232
    busy = NO;
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   233
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   234
    UIActivityIndicatorView *indicator = (UIActivityIndicatorView *)[self.previewButton viewWithTag:INDICATOR_TAG];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   235
    if (indicator) {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   236
        [indicator stopAnimating];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   237
        [indicator removeFromSuperview];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   238
    }
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   239
}
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   240
 
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   241
-(void) setLabelText:(NSString *)str {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   242
    self.maxLabel.text = str;
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   243
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   244
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   245
-(void) setButtonImage:(UIImage *)img {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   246
    [self.previewButton setBackgroundImage:img forState:UIControlStateNormal];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   247
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   248
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   249
-(void) restoreBackgroundImage {
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   250
    // white rounded rectangle as background image for previewButton
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   251
    UIGraphicsBeginImageContext(CGSizeMake(256,128));      
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   252
    CGContextRef context = UIGraphicsGetCurrentContext();       
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   253
    UIGraphicsPushContext(context);  
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   254
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   255
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   256
    CGContextFillRect(context,CGRectMake(0,0,256,128));
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   257
    
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   258
    UIGraphicsPopContext();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   259
    UIImage *bkgImg = UIGraphicsGetImageFromCurrentImageContext();
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   260
    UIGraphicsEndImageContext();
3525
1d7b056ff866 some memory caring code
koda
parents: 3514
diff changeset
   261
    [self.previewButton setBackgroundImage:[bkgImg makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:UIControlStateNormal];
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   262
}
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   263
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   264
#pragma mark -
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   265
#pragma mark Table view data source
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   266
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   267
    return 1;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   268
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   269
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   270
-(NSInteger) tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger) section {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   271
    if (self.segmentedControl.selectedSegmentIndex != 1)
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   272
        return [themeArray count];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   273
    else
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   274
        return [mapArray count];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   275
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   276
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   277
-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   278
    static NSString *CellIdentifier = @"Cell";
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   279
    NSInteger row = [indexPath row];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   280
    
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   281
    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   282
    if (cell == nil) 
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   283
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   284
    
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   285
    if (self.segmentedControl.selectedSegmentIndex != 1) {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   286
        // the % prevents a strange bug that occurs sporadically
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   287
        NSString *themeName = [self.themeArray objectAtIndex:row % [self.themeArray count]];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   288
        cell.textLabel.text = themeName;
3513
f589230fa21b now it's possible to select the scheme file in the ifrontendfix a type about loading an image (iphone file system IS case senstive)
koda
parents: 3495
diff changeset
   289
        UIImage *image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@/icon.png",THEMES_DIRECTORY(),themeName]];
3463
23c50be687a9 update sdl functions to latest revision
koda
parents: 3385
diff changeset
   290
        cell.imageView.image = image;
23c50be687a9 update sdl functions to latest revision
koda
parents: 3385
diff changeset
   291
        [image release];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   292
    } else {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   293
        cell.textLabel.text = [self.mapArray objectAtIndex:row];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   294
        cell.imageView.image = nil;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   295
    }
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   296
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   297
    if (row == [self.lastIndexPath row]) 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   298
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   299
    else
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   300
        cell.accessoryType = UITableViewCellAccessoryNone;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   301
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   302
    return cell;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   303
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   304
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   305
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   306
#pragma mark -
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   307
#pragma mark Table view delegate
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   308
-(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   309
    int newRow = [indexPath row];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   310
    int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   311
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   312
    if (newRow != oldRow) {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   313
        if (self.segmentedControl.selectedSegmentIndex != 1) {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   314
            NSString *theme = [self.themeArray objectAtIndex:newRow];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   315
            self.themeCommand =  [NSString stringWithFormat:@"etheme %@", theme];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   316
        } else
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   317
            [self updatePreviewWithMap:newRow];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   318
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   319
        UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath]; 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   320
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   321
        UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:self.lastIndexPath];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   322
        oldCell.accessoryType = UITableViewCellAccessoryNone;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   323
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   324
        self.lastIndexPath = indexPath;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   325
        [aTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   326
    }
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   327
    [aTableView deselectRowAtIndexPath:indexPath animated:YES];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   328
}
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   329
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   330
#pragma mark -
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   331
#pragma mark slider & segmentedControl
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   332
// this updates the label and the command keys when the slider is moved, depending of the selection in segmentedControl
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   333
// no methods are called by this routine and you can pass nil to it
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   334
-(IBAction) sliderChanged:(id) sender {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   335
    NSString *labelText;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   336
    NSString *templateCommand;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   337
    NSString *mazeCommand;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   338
    
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   339
    switch ((int)(self.slider.value*100)) {
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   340
        case 0:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   341
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   342
                labelText = NSLocalizedString(@"Wacky",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   343
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   344
                labelText = NSLocalizedString(@"Large Floating Islands",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   345
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   346
            templateCommand = @"e$template_filter 5";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   347
            mazeCommand = @"e$maze_size 5";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   348
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   349
        case 1:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   350
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   351
                labelText = NSLocalizedString(@"Cavern",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   352
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   353
                labelText = NSLocalizedString(@"Medium Floating Islands",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   354
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   355
            templateCommand = @"e$template_filter 4";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   356
            mazeCommand = @"e$maze_size 4";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   357
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   358
        case 2:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   359
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   360
                labelText = NSLocalizedString(@"Small",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   361
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   362
                labelText = NSLocalizedString(@"Small Floating Islands",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   363
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   364
            templateCommand = @"e$template_filter 1";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   365
            mazeCommand = @"e$maze_size 3";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   366
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   367
        case 3:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   368
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   369
                labelText = NSLocalizedString(@"Medium",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   370
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   371
                labelText = NSLocalizedString(@"Large Tunnels",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   372
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   373
            templateCommand = @"e$template_filter 2";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   374
            mazeCommand = @"e$maze_size 2";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   375
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   376
        case 4:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   377
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   378
                labelText = NSLocalizedString(@"Large",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   379
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   380
                labelText = NSLocalizedString(@"Medium Tunnels",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   381
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   382
            templateCommand = @"e$template_filter 3";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   383
            mazeCommand = @"e$maze_size 1";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   384
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   385
        case 5:
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   386
            if (self.segmentedControl.selectedSegmentIndex == 0) {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   387
                labelText = NSLocalizedString(@"All",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   388
            } else {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   389
                labelText = NSLocalizedString(@"Small Tunnels",@"");
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   390
            }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   391
            templateCommand = @"e$template_filter 0";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   392
            mazeCommand = @"e$maze_size 0";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   393
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   394
        default:
3487
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   395
            labelText = nil;
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   396
            templateCommand = nil;
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   397
            mazeCommand = nil;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   398
            break;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   399
    }
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   400
    
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   401
    self.sizeLabel.text = labelText;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   402
    self.templateFilterCommand = templateCommand;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   403
    self.mazeSizeCommand = mazeCommand;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   404
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   405
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   406
// update preview (if not busy and if its value really changed) as soon as the user lifts its finger up
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   407
-(IBAction) sliderEndedChanging:(id) sender {
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   408
    int num = (int) (self.slider.value * 100);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   409
    if (oldValue != num) {
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   410
        [self updatePreview];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   411
        oldValue = num;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   412
    }
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   413
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   414
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   415
// perform actions based on the activated section, then call updatePreview to visually update the selection 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   416
// updatePreview will call didSelectRowAtIndexPath which will call the right update routine)
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   417
// and if necessary update the table with a slide animation
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   418
-(IBAction) segmentedControlChanged:(id) sender {
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   419
    NSString *mapgen;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   420
    NSInteger newPage = self.segmentedControl.selectedSegmentIndex;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   421
    
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   422
    switch (newPage) {
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   423
        case 0: // Random
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   424
            mapgen = @"e$mapgen 0";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   425
            [self sliderChanged:nil];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   426
            self.slider.enabled = YES;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   427
            break;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   428
            
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   429
        case 1: // Map
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   430
            mapgen = @"e$mapgen 0";
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   431
            self.slider.enabled = NO;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   432
            self.sizeLabel.text = @".";
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   433
            [self restoreBackgroundImage];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   434
            break;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   435
            
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   436
        case 2: // Maze
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   437
            mapgen = @"e$mapgen 1";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   438
            [self sliderChanged:nil];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   439
            self.slider.enabled = YES;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   440
            break;
3487
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   441
        
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   442
        default:
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   443
            mapgen = nil;
b1d00f1950c8 add some memory aware code
koda
parents: 3463
diff changeset
   444
            break;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   445
    }
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   446
    self.mapGenCommand = mapgen;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   447
    [self updatePreview];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   448
    
3374
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   449
    // nice animation for updating the table when appropriate (on iphone)
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   450
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   451
        if (((oldPage == 0 || oldPage == 2) && newPage == 1) ||
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   452
            (oldPage == 1 && (newPage == 0 || newPage == 2))) {
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   453
            [UIView beginAnimations:@"moving out table" context:NULL];
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   454
            self.tableView.frame = CGRectMake(480, 0, 185, 276);
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   455
            [UIView commitAnimations];
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   456
            [self performSelector:@selector(moveTable) withObject:nil afterDelay:0.2];
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   457
        }
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   458
    oldPage = newPage;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   459
}
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   460
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   461
// update data when table is not visible and then show it
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   462
-(void) moveTable {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   463
    [self.tableView reloadData];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   464
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   465
    [UIView beginAnimations:@"moving in table" context:NULL];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   466
    self.tableView.frame = CGRectMake(295, 0, 185, 276);
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   467
    [UIView commitAnimations];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   468
}
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   469
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   470
#pragma mark -
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   471
#pragma mark view management
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   472
-(void) viewDidLoad {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   473
    [super viewDidLoad];
3385
361bd29293f4 add automatic rotation in ipad (landscape only)
koda
parents: 3374
diff changeset
   474
    
361bd29293f4 add automatic rotation in ipad (landscape only)
koda
parents: 3374
diff changeset
   475
    srandom(time(NULL));
361bd29293f4 add automatic rotation in ipad (landscape only)
koda
parents: 3374
diff changeset
   476
    
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   477
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   478
    self.view.frame = CGRectMake(0, 0, screenSize.height, screenSize.width - 44);
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   479
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   480
    // themes.cfg contains all the user-selectable themes
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   481
    NSString *string = [[NSString alloc] initWithContentsOfFile:[THEMES_DIRECTORY() stringByAppendingString:@"/themes.cfg"]
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   482
                                                       encoding:NSUTF8StringEncoding 
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   483
                                                          error:NULL];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   484
    NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[string componentsSeparatedByString:@"\n"]];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   485
    [string release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   486
    // remove a trailing "" element
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   487
    [array removeLastObject];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   488
    self.themeArray = array;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   489
    [array release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   490
    self.mapArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:MAPS_DIRECTORY() error:NULL];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   491
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   492
    self.tableView.rowHeight = 42;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   493
    busy = NO;
3492
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   494
    
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   495
    // draw a white background
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   496
    [self restoreBackgroundImage];
07256e1ad559 map preview generation reworked like nemo suggested (he was right, it's quickier in this way)
koda
parents: 3490
diff changeset
   497
    
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   498
    // initialize some "default" values
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   499
    self.sizeLabel.text = NSLocalizedString(@"All",@"");
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   500
    self.slider.value = 0.05f;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   501
    self.segmentedControl.selectedSegmentIndex = 0;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   502
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   503
    self.templateFilterCommand = @"e$template_filter 0";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   504
    self.mazeSizeCommand = @"e$maze_size 0";
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   505
    self.mapGenCommand = @"e$mapgen 0";
3374
0d522416d97f lazy loading for all the tables with images (might affect performance but ui feels much more responsive)
koda
parents: 3373
diff changeset
   506
    self.lastIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   507
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   508
    oldValue = 5;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   509
    oldPage = 0;
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   510
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   511
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   512
-(void) viewDidAppear:(BOOL) animated {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   513
    [super viewDidAppear:animated];
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   514
    [self updatePreview];
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   515
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   516
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   517
#pragma mark -
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   518
#pragma mark memory
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   519
-(void) didReceiveMemoryWarning {
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   520
    [super didReceiveMemoryWarning];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   521
}
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   522
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   523
-(void) viewDidUnload {
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   524
    self.previewButton = nil;
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   525
    self.seedCommand = nil;
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   526
    self.templateFilterCommand = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   527
    self.mapGenCommand = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   528
    self.mazeSizeCommand = nil;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   529
    self.themeCommand = nil;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   530
    
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   531
    self.previewButton = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   532
    self.tableView = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   533
    self.maxLabel = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   534
    self.sizeLabel = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   535
    self.segmentedControl = nil;
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   536
    self.slider = nil;
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   537
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   538
    self.lastIndexPath = nil;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   539
    self.themeArray = nil;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   540
    self.mapArray = nil;
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   541
    
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   542
    [super viewDidUnload];
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3487
diff changeset
   543
    MSG_DIDUNLOAD();
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   544
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   545
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   546
-(void) dealloc {
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   547
    [seedCommand release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   548
    [templateFilterCommand release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   549
    [mapGenCommand release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   550
    [mazeSizeCommand release];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   551
    [themeCommand release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   552
    
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   553
    [previewButton release];
3369
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   554
    [tableView release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   555
    [maxLabel release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   556
    [sizeLabel release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   557
    [segmentedControl release];
c7289e42f0ee add other controls for map preview, also fix a bug in digest
koda
parents: 3366
diff changeset
   558
    [slider release];
3373
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   559
    
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   560
    [lastIndexPath release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   561
    [themeArray release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   562
    [mapArray release];
c1ff724a5c34 use a proper bundle identifier
koda
parents: 3369
diff changeset
   563
    
3365
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   564
    [super dealloc];
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   565
}
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   566
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   567
37ac593e9027 wow all these files only for land preview and seed generation
koda
parents:
diff changeset
   568
@end