project_files/HedgewarsMobile/Classes/GameConfigViewController.m
author koda
Sun, 02 Oct 2011 00:57:04 +0200
changeset 6078 8c0cc07731e5
parent 6000 dbcebcd3d79f
child 6079 c10767edcd58
permissions -rw-r--r--
headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3829
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     1
/*
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     2
 * Hedgewars-iOS, a Hedgewars port for iOS devices
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4912
diff changeset
     3
 * Copyright (c) 2009-2011 Vittorio Giovara <vittorio.giovara@gmail.com>
3829
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     4
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     8
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    12
 * GNU General Public License for more details.
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    13
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    14
 * You should have received a copy of the GNU General Public License
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    15
 * along with this program; if not, write to the Free Software
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    17
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    18
 * File created on 18/04/2010.
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    19
 */
81db3c85784b headers ftw, also right project file
koda
parents: 3792
diff changeset
    20
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    21
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    22
#import "GameConfigViewController.h"
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
    23
#import "MapConfigViewController.h"
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    24
#import "TeamConfigViewController.h"
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    25
#import "SchemeWeaponConfigViewController.h"
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    26
#import "HelpPageViewController.h"
5156
641abe679bf0 work in progress yet again (can run some games now)
koda
parents: 5002
diff changeset
    27
#import "GameInterfaceBridge.h"
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
    28
3705
e1959819a542 completing the ifrontend interface...
koda
parents: 3703
diff changeset
    29
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    30
@implementation GameConfigViewController
5666
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
    31
@synthesize imgContainer, helpPage, mapConfigViewController, teamConfigViewController, schemeWeaponConfigViewController, interfaceBridge;
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
    32
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    33
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    34
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
    35
    return rotationManager(interfaceOrientation);
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    36
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    37
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
    38
-(IBAction) buttonPressed:(id) sender {
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4349
diff changeset
    39
    UIButton *theButton = (UIButton *)sender;
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
    40
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    41
    switch (theButton.tag) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    42
        case 0:
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
    43
            if ([self.mapConfigViewController busy]) {
3625
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    44
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Wait for the Preview",@"")
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    45
                                                                message:NSLocalizedString(@"Before returning the preview needs to be generated",@"")
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    46
                                                               delegate:nil
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    47
                                                      cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    48
                                                      otherButtonTitles:nil];
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    49
                [alert show];
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    50
                [alert release];
4861
91f889289a47 (ios) perform a small change about how to close the game window, should hopefully save memory and avoid crashes (who am i kidding? that's the usual PR talk...)
koda
parents: 4856
diff changeset
    51
            } else {
6000
dbcebcd3d79f ios frontend: sounds and music have their own class now (with caching\!) instead of being spread here and there (exploiting class methods like a true oop pro)
koda
parents: 5700
diff changeset
    52
                [AudioManagerController playBackSound];
3625
9f1d79e01a60 icons \o/
koda
parents: 3623
diff changeset
    53
                [[self parentViewController] dismissModalViewControllerAnimated:YES];
4861
91f889289a47 (ios) perform a small change about how to close the game window, should hopefully save memory and avoid crashes (who am i kidding? that's the usual PR talk...)
koda
parents: 4856
diff changeset
    54
            }
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    55
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    56
        case 1:
6000
dbcebcd3d79f ios frontend: sounds and music have their own class now (with caching\!) instead of being spread here and there (exploiting class methods like a true oop pro)
koda
parents: 5700
diff changeset
    57
            [AudioManagerController playClickSound];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    58
            theButton.enabled = NO;
3626
19f78afa0188 fix the multitouch shooting and moving
koda
parents: 3625
diff changeset
    59
            [self startGame:theButton];
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    60
            break;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    61
        case 2:
6000
dbcebcd3d79f ios frontend: sounds and music have their own class now (with caching\!) instead of being spread here and there (exploiting class methods like a true oop pro)
koda
parents: 5700
diff changeset
    62
            [AudioManagerController playClickSound];
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    63
            if (self.helpPage == nil)
4144
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
    64
                self.helpPage = [[HelpPageViewController alloc] initWithNibName:@"HelpPageLobbyViewController-iPad" bundle:nil];
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    65
            self.helpPage.view.alpha = 0;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    66
            [self.view addSubview:helpPage.view];
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    67
            [UIView beginAnimations:@"helplobby" context:NULL];
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    68
            self.helpPage.view.alpha = 1;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    69
            [UIView commitAnimations];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    70
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    71
        default:
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    72
            DLog(@"Nope");
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    73
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    74
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    75
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    76
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    77
-(IBAction) segmentPressed:(id) sender {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    78
    UISegmentedControl *theSegment = (UISegmentedControl *)sender;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    79
6000
dbcebcd3d79f ios frontend: sounds and music have their own class now (with caching\!) instead of being spread here and there (exploiting class methods like a true oop pro)
koda
parents: 5700
diff changeset
    80
    [AudioManagerController playSelectSound];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    81
    switch (theSegment.selectedSegmentIndex) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    82
        case 0:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    83
            // this init here is just aestetic as this controller was already set up in viewDidLoad
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    84
            if (mapConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    85
                mapConfigViewController = [[MapConfigViewController alloc] initWithNibName:@"MapConfigViewController-iPhone" bundle:nil];
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    86
                [self.view addSubview:mapConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    87
            }
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    88
            // this message is compulsory otherwise the table won't be loaded at all
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    89
            [mapConfigViewController viewWillAppear:NO];
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    90
            [self.view bringSubviewToFront:mapConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    91
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    92
        case 1:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    93
            if (teamConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    94
                teamConfigViewController = [[TeamConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    95
                [self.view addSubview:teamConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    96
            }
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    97
            // this message is compulsory otherwise the table won't be loaded at all
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    98
            [teamConfigViewController viewWillAppear:NO];
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
    99
            [self.view bringSubviewToFront:teamConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   100
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   101
        case 2:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   102
            if (schemeWeaponConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   103
                schemeWeaponConfigViewController = [[SchemeWeaponConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   104
                [self.view addSubview:schemeWeaponConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   105
            }
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   106
            // this message is compulsory otherwise the table won't be loaded at all
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   107
            [schemeWeaponConfigViewController viewWillAppear:NO];
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   108
            [self.view bringSubviewToFront:schemeWeaponConfigViewController.view];
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   109
            break;
4144
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   110
        case 3:
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   111
            if (helpPage == nil) {
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   112
                helpPage = [[HelpPageViewController alloc] initWithNibName:@"HelpPageLobbyViewController-iPhone" bundle:nil];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   113
                [self.view addSubview:helpPage.view];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   114
            }
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   115
            // this message is compulsory otherwise the table won't be loaded at all
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   116
            [helpPage viewWillAppear:NO];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   117
            [self.view bringSubviewToFront:helpPage.view];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   118
            break;
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   119
        default:
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   120
            DLog(@"Nope");
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   121
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   122
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   123
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   124
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   125
-(BOOL) isEverythingSet {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   126
    // don't start playing if the preview is in progress
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   127
    if ([self.mapConfigViewController busy]) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   128
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Wait for the Preview",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   129
                                                        message:NSLocalizedString(@"Before playing the preview needs to be generated",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   130
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   131
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   132
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   133
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   134
        [alert release];
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   135
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   136
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   137
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   138
    // play only if there is more than one team
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   139
    if ([self.teamConfigViewController.listOfSelectedTeams count] < 2) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   140
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Too few teams playing",@"")
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   141
                                                        message:NSLocalizedString(@"Select at least two teams to play a game",@"")
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   142
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   143
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   144
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   145
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   146
        [alert release];
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   147
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   148
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   149
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   150
    // play if there's room for enough hogs in the selected map
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   151
    int hogs = 0;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   152
    for (NSDictionary *teamData in teamConfigViewController.listOfSelectedTeams)
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   153
        hogs += [[teamData objectForKey:@"number"] intValue];
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   154
    if (hogs > self.mapConfigViewController.maxHogs) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   155
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Too many hogs",@"")
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   156
                                                        message:NSLocalizedString(@"The map is too small for that many hogs",@"")
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   157
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   158
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   159
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   160
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   161
        [alert release];
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   162
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   163
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   164
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   165
    // play if there aren't too many teams
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   166
    if ([self.teamConfigViewController.listOfSelectedTeams count] > HW_getMaxNumberOfTeams()) {
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   167
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Too many teams",@"")
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4349
diff changeset
   168
                                                        message:NSLocalizedString(@"You exceeded the maximum number of tems allowed in a game",@"")
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   169
                                                       delegate:nil
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   170
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   171
                                              otherButtonTitles:nil];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   172
        [alert show];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   173
        [alert release];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   174
        return NO;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   175
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   176
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   177
    // play only if one scheme and one weapon are selected
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   178
    if ([self.schemeWeaponConfigViewController.selectedScheme length] == 0 || [self.schemeWeaponConfigViewController.selectedWeapon length] == 0 ) {
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   179
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Missing detail",@"")
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   180
                                                        message:NSLocalizedString(@"Select one Scheme and one Weapon for this game",@"")
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   181
                                                       delegate:nil
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   182
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   183
                                              otherButtonTitles:nil];
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   184
        [alert show];
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   185
        [alert release];
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   186
        return NO;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   187
    }
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   188
4349
8efa91f98274 display an empty table for missions
koda
parents: 4150
diff changeset
   189
    // play if the gameflags are set correctly (divideteam works only with 2 teams)
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   190
    NSString *schemePath = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),self.schemeWeaponConfigViewController.selectedScheme];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   191
    NSArray *gameFlags = [[NSDictionary dictionaryWithContentsOfFile:schemePath] objectForKey:@"gamemod"];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   192
    [schemePath release];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   193
    if ([[gameFlags objectAtIndex:2] boolValue] && [self.teamConfigViewController.listOfSelectedTeams count] != 2) {
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   194
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Scheme mismatch",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   195
                                                        message:NSLocalizedString(@"The scheme you selected allows only for two teams",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   196
                                                       delegate:nil
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   197
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   198
                                              otherButtonTitles:nil];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   199
        [alert show];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   200
        [alert release];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   201
        return NO;
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   202
    }
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   203
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   204
    return YES;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   205
}
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   206
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   207
-(void) startGame:(UIButton *)button {
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   208
    button.enabled = YES;
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   209
    
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   210
    if ([self isEverythingSet] == NO)
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   211
        return;
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   212
5455
df05cdb998ed add support for 'gameplay modes' on ios, renamed into 'style'; also colored in grey some segmented controls and moved some ui objects
koda
parents: 5208
diff changeset
   213
    NSString *script = self.mapConfigViewController.missionCommand;
df05cdb998ed add support for 'gameplay modes' on ios, renamed into 'style'; also colored in grey some segmented controls and moved some ui objects
koda
parents: 5208
diff changeset
   214
    if ([script isEqualToString:@""])
df05cdb998ed add support for 'gameplay modes' on ios, renamed into 'style'; also colored in grey some segmented controls and moved some ui objects
koda
parents: 5208
diff changeset
   215
        script = self.schemeWeaponConfigViewController.scriptCommand;
df05cdb998ed add support for 'gameplay modes' on ios, renamed into 'style'; also colored in grey some segmented controls and moved some ui objects
koda
parents: 5208
diff changeset
   216
3632
8e1bd8b5780e fix land check fo' real
koda
parents: 3630
diff changeset
   217
    // create the configuration file that is going to be sent to engine
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   218
    NSDictionary *gameDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   219
                                    self.mapConfigViewController.seedCommand,@"seed_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   220
                                    self.mapConfigViewController.templateFilterCommand,@"templatefilter_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   221
                                    self.mapConfigViewController.mapGenCommand,@"mapgen_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   222
                                    self.mapConfigViewController.mazeSizeCommand,@"mazesize_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   223
                                    self.mapConfigViewController.themeCommand,@"theme_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   224
                                    self.mapConfigViewController.staticMapCommand,@"staticmap_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   225
                                    self.teamConfigViewController.listOfSelectedTeams,@"teams_list",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   226
                                    self.schemeWeaponConfigViewController.selectedScheme,@"scheme",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   227
                                    self.schemeWeaponConfigViewController.selectedWeapon,@"weapon",
5455
df05cdb998ed add support for 'gameplay modes' on ios, renamed into 'style'; also colored in grey some segmented controls and moved some ui objects
koda
parents: 5208
diff changeset
   228
                                    script,@"mission_command",
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   229
                                    nil];
3973
0d1a420531ef i fix up the new ammo menu finally
koda
parents: 3971
diff changeset
   230
5666
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   231
    if (self.interfaceBridge == nil) {
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   232
        GameInterfaceBridge *bridge = [[GameInterfaceBridge alloc] initWithController:self];
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   233
        self.interfaceBridge = bridge;
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   234
        [bridge release];
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   235
    }
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   236
    [self.interfaceBridge startLocalGame:gameDictionary];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   237
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   238
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   239
-(void) loadNiceHogs {
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   240
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   241
    NSString *filePath = [NSString stringWithFormat:@"%@/Hedgehog.png",GRAPHICS_DIRECTORY()];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   242
    UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath andCutAt:CGRectMake(96, 0, 32, 32)];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   243
    
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   244
    NSArray *hatArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:HATS_DIRECTORY() error:NULL];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   245
    int numberOfHats = [hatArray count];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   246
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   247
    if (self.imgContainer != nil)
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   248
        [self.imgContainer removeFromSuperview];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   249
    
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   250
    self.imgContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
3978
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   251
    for (int i = 0; i < 1 + random()%20; i++) {
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   252
        NSString *hat = [hatArray objectAtIndex:random()%numberOfHats];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   253
        
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   254
        NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   255
        UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile: hatFile andCutAt:CGRectMake(0, 0, 32, 32)];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   256
        [hatFile release];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   257
        UIImage *hogWithHat = [sprite mergeWith:hatSprite atPoint:CGPointMake(0, 5)];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   258
        [hatSprite release];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   259
        
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   260
        UIImageView *hog = [[UIImageView alloc] initWithImage:hogWithHat];
3978
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   261
        int x = 15*(i+1)+random()%40;
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   262
        if (x + 32 > 300)
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   263
            x = i*10;
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   264
        hog.frame = CGRectMake(x, 30, 32, 32);
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   265
        [self.imgContainer addSubview:hog];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   266
        [hog release];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   267
    }
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   268
    [self.view addSubview:self.imgContainer];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   269
    [sprite release];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   270
    [pool drain];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   271
}
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   272
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   273
-(void) viewDidLoad {
3629
86212d2b116a redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents: 3626
diff changeset
   274
    self.view.backgroundColor = [UIColor blackColor];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   275
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   276
    CGRect screen = [[UIScreen mainScreen] bounds];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   277
    self.view.frame = CGRectMake(0, 0, screen.size.height, screen.size.width);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   278
3996
eb549fd864a5 the ios port is also iphone compatible
koda
parents: 3984
diff changeset
   279
    if (IS_IPAD()) {
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   280
        // load other controllers and the background
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   281
        if (self.mapConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   282
            self.mapConfigViewController = [[MapConfigViewController alloc] initWithNibName:@"MapConfigViewController-iPad" bundle:nil];
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   283
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   284
        UILabel *theLabel;
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   285
        // left column
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   286
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 60, 320, 620) andTitle:nil withBorderWidth:2.7f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   287
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   288
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   289
        // center column
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   290
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(337, 187, 350, 505) andTitle:nil withBorderWidth:2.7f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   291
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   292
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   293
        // right column
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   294
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(704, 214, 320, 464) andTitle:nil withBorderWidth:2.7f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   295
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   296
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   297
        // top right column (map)
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   298
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(714, 14, 300, 190) andTitle:nil withBorderWidth:2.3f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   299
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   300
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   301
        // bottom left
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   302
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(106, 714, 320, 40) andTitle:nil withBorderWidth:2.0f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   303
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   304
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   305
        // bottom right
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   306
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(594, 714, 320, 40)
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   307
                                         andTitle:NSLocalizedString(@"Max Hogs:                 ",@"")
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   308
                                  withBorderWidth:2.0f];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   309
        theLabel.font = [UIFont italicSystemFontOfSize:[UIFont labelFontSize]];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   310
        [self.mapConfigViewController.view addSubview:theLabel];
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   311
        releaseAndNil(theLabel);
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6000
diff changeset
   312
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   313
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.maxLabel];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   314
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.sizeLabel];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   315
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.segmentedControl];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   316
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.previewButton];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   317
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.slider];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   318
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.tableView];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   319
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   320
        if (self.teamConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   321
            self.teamConfigViewController = [[TeamConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   322
        [self.mapConfigViewController.view addSubview:self.teamConfigViewController.view];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   323
        if (self.schemeWeaponConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   324
            self.schemeWeaponConfigViewController = [[SchemeWeaponConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   325
        [self.mapConfigViewController.view addSubview:schemeWeaponConfigViewController.view];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   326
        self.mapConfigViewController.view.frame = CGRectMake(0, 0, screen.size.height, screen.size.width);
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   327
        self.teamConfigViewController.view.frame = CGRectMake(348, 200, 328, 480);
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   328
        self.schemeWeaponConfigViewController.view.frame = CGRectMake(10, 70, 300, 600);
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   329
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4349
diff changeset
   330
        self.mapConfigViewController.parentController = self;
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   331
    } else {
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   332
        // this is the visible controller
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   333
        if (self.mapConfigViewController == nil)
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   334
            self.mapConfigViewController = [[MapConfigViewController alloc] initWithNibName:@"MapConfigViewController-iPhone" bundle:nil];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   335
        // this must be loaded & added in order to auto set default scheme and ammo
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   336
        self.schemeWeaponConfigViewController = [[SchemeWeaponConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   337
        [self.view addSubview:self.schemeWeaponConfigViewController.view];
3616
85d69ddb41b6 tackling the iphoneos todo (another trial for the beginning sporadic bug, remove curl animation, don't need to go to detail page)
koda
parents: 3548
diff changeset
   338
    }
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   339
    [self.view addSubview:self.mapConfigViewController.view];
4349
8efa91f98274 display an empty table for missions
koda
parents: 4150
diff changeset
   340
    self.mapConfigViewController.externalController = schemeWeaponConfigViewController;
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   341
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   342
    [super viewDidLoad];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   343
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   344
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   345
-(void) viewWillAppear:(BOOL)animated {
3996
eb549fd864a5 the ios port is also iphone compatible
koda
parents: 3984
diff changeset
   346
    if (IS_IPAD())
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   347
        [NSThread detachNewThreadSelector:@selector(loadNiceHogs) toTarget:self withObject:nil];
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   348
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   349
    [self.mapConfigViewController viewWillAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   350
    [self.teamConfigViewController viewWillAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   351
    [self.schemeWeaponConfigViewController viewWillAppear:animated];
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   352
    // add other controllers here and below
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   353
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   354
    [super viewWillAppear:animated];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   355
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   356
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   357
-(void) viewDidAppear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   358
    [self.mapConfigViewController viewDidAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   359
    [self.teamConfigViewController viewDidAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   360
    [self.schemeWeaponConfigViewController viewDidAppear:animated];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   361
    [super viewDidAppear:animated];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   362
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   363
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   364
-(void) viewWillDisappear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   365
    [self.mapConfigViewController viewWillDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   366
    [self.teamConfigViewController viewWillDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   367
    [self.schemeWeaponConfigViewController viewWillDisappear:animated];
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   368
    [super viewWillDisappear:animated];
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   369
}
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   370
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   371
-(void) viewDidDisappear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   372
    [self.mapConfigViewController viewDidDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   373
    [self.teamConfigViewController viewDidDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   374
    [self.schemeWeaponConfigViewController viewDidDisappear:animated];
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   375
    [super viewDidDisappear:animated];
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   376
}
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   377
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   378
-(void) didReceiveMemoryWarning {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   379
    if (self.teamConfigViewController.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   380
        self.teamConfigViewController = nil;
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   381
    if (self.schemeWeaponConfigViewController.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   382
        self.schemeWeaponConfigViewController = nil;
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   383
    if (self.helpPage.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   384
        self.helpPage = nil;
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   385
    if (self.mapConfigViewController.view.superview == nil)
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   386
        self.mapConfigViewController = nil;
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   387
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   388
    self.imgContainer = nil;
5700
f0960a88ab0e savedgamesviewcontroller refactor, added icons to supportviewcontroller
koda
parents: 5699
diff changeset
   389
    // don't nil this one or it won't be able to send messages
5699
1a9a6a7662aa ios: respond more gracefully to didReceiveMemoryWarning and add sounds to two buttons
koda
parents: 5666
diff changeset
   390
    //self.interfaceBridge = nil;
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   391
    MSG_MEMCLEAN();
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   392
    [super didReceiveMemoryWarning];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   393
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   394
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   395
-(void) viewDidUnload {
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   396
    self.imgContainer = nil;
5666
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   397
    self.interfaceBridge = nil;
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   398
    self.mapConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   399
    self.teamConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   400
    self.schemeWeaponConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   401
    self.helpPage = nil;
3662
a44406f4369b polish polish polish polish (also: panning horizontal fix, panning momentum, settings page reworked yet again, memory leaks, crashes, segfaults)
koda
parents: 3661
diff changeset
   402
    MSG_DIDUNLOAD();
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   403
    [super viewDidUnload];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   404
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   405
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   406
-(void) dealloc {
5208
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   407
    releaseAndNil(imgContainer);
5666
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   408
    releaseAndNil(interfaceBridge);
5208
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   409
    releaseAndNil(mapConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   410
    releaseAndNil(teamConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   411
    releaseAndNil(schemeWeaponConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   412
    releaseAndNil(helpPage);
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   413
    [super dealloc];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   414
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   415
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   416
@end