project_files/HedgewarsMobile/Classes/GameConfigViewController.m
author koda
Sun, 09 Oct 2011 00:24:58 +0200
changeset 6107 0741c0f0203e
parent 6080 ce02ddfe8aa1
child 6108 7a8da11a6144
permissions -rw-r--r--
some code refactoring of the ios game config
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];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    58
            if ([self isEverythingSet] == NO)
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    59
                return;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    60
            theButton.enabled = NO;
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    61
            for (UIView *oneView in self.imgContainer.subviews) {
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    62
                if ([oneView isMemberOfClass:[UIImageView class]]) {
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    63
                    UIImageView *anImageView = (UIImageView *)oneView;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    64
                    [anImageView removeFromSuperview];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    65
                }
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    66
            }
3626
19f78afa0188 fix the multitouch shooting and moving
koda
parents: 3625
diff changeset
    67
            [self startGame:theButton];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
    68
            
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    69
            break;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    70
        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
    71
            [AudioManagerController playClickSound];
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    72
            if (self.helpPage == nil)
4144
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
    73
                self.helpPage = [[HelpPageViewController alloc] initWithNibName:@"HelpPageLobbyViewController-iPad" bundle:nil];
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    74
            self.helpPage.view.alpha = 0;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    75
            [self.view addSubview:helpPage.view];
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    76
            [UIView beginAnimations:@"helplobby" context:NULL];
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    77
            self.helpPage.view.alpha = 1;
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    78
            [UIView commitAnimations];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    79
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    80
        default:
3792
dd9345e74b66 help page for lobby
koda
parents: 3783
diff changeset
    81
            DLog(@"Nope");
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    82
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    83
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    84
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    85
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    86
-(IBAction) segmentPressed:(id) sender {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    87
    UISegmentedControl *theSegment = (UISegmentedControl *)sender;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    88
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
    89
    [AudioManagerController playSelectSound];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    90
    switch (theSegment.selectedSegmentIndex) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    91
        case 0:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    92
            // this init here is just aestetic as this controller was already set up in viewDidLoad
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    93
            if (mapConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    94
                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
    95
                [self.view addSubview:mapConfigViewController.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
            [mapConfigViewController 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:mapConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   100
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   101
        case 1:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   102
            if (teamConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   103
                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
   104
                [self.view addSubview:teamConfigViewController.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
            [teamConfigViewController 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:teamConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   109
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   110
        case 2:
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   111
            if (schemeWeaponConfigViewController == nil) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   112
                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
   113
                [self.view addSubview:schemeWeaponConfigViewController.view];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   114
            }
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   115
            // 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
   116
            [schemeWeaponConfigViewController viewWillAppear:NO];
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   117
            [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
   118
            break;
4144
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   119
        case 3:
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   120
            if (helpPage == nil) {
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   121
                helpPage = [[HelpPageViewController alloc] initWithNibName:@"HelpPageLobbyViewController-iPhone" bundle:nil];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   122
                [self.view addSubview:helpPage.view];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   123
            }
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   124
            // this message is compulsory otherwise the table won't be loaded at all
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   125
            [helpPage viewWillAppear:NO];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   126
            [self.view bringSubviewToFront:helpPage.view];
cda2685feeb4 help pages for iphone
koda
parents: 3996
diff changeset
   127
            break;
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   128
        default:
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   129
            DLog(@"Nope");
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   130
            break;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   131
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   132
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   133
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   134
-(BOOL) isEverythingSet {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   135
    // don't start playing if the preview is in progress
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   136
    if ([self.mapConfigViewController busy]) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   137
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Wait for the Preview",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   138
                                                        message:NSLocalizedString(@"Before playing the preview needs to be generated",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   139
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   140
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   141
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   142
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   143
        [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
   144
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   145
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   146
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   147
    // play only if there is more than one team
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   148
    if ([self.teamConfigViewController.listOfSelectedTeams count] < 2) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   149
        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
   150
                                                        message:NSLocalizedString(@"Select at least two teams to play a game",@"")
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   151
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   152
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   153
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   154
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   155
        [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
   156
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   157
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   158
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   159
    // play if there's room for enough hogs in the selected map
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   160
    int hogs = 0;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   161
    for (NSDictionary *teamData in teamConfigViewController.listOfSelectedTeams)
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   162
        hogs += [[teamData objectForKey:@"number"] intValue];
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   163
    if (hogs > self.mapConfigViewController.maxHogs) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   164
        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
   165
                                                        message:NSLocalizedString(@"The map is too small for that many hogs",@"")
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   166
                                                       delegate:nil
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   167
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   168
                                              otherButtonTitles:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   169
        [alert show];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   170
        [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
   171
        return NO;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   172
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   173
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   174
    // play if there aren't too many teams
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   175
    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
   176
        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
   177
                                                        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
   178
                                                       delegate:nil
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   179
                                              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
   180
                                              otherButtonTitles:nil];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   181
        [alert show];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   182
        [alert release];
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   183
        return NO;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   184
    }
4150
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   185
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   186
    // play only if one scheme and one weapon are selected
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   187
    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
   188
        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
   189
                                                        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
   190
                                                       delegate:nil
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   191
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   192
                                              otherButtonTitles:nil];
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   193
        [alert show];
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   194
        [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
   195
        return NO;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   196
    }
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   197
4349
8efa91f98274 display an empty table for missions
koda
parents: 4150
diff changeset
   198
    // 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
   199
    NSString *schemePath = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),self.schemeWeaponConfigViewController.selectedScheme];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   200
    NSArray *gameFlags = [[NSDictionary dictionaryWithContentsOfFile:schemePath] objectForKey:@"gamemod"];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   201
    [schemePath release];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   202
    if ([[gameFlags objectAtIndex:2] boolValue] && [self.teamConfigViewController.listOfSelectedTeams count] != 2) {
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   203
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Scheme mismatch",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   204
                                                        message:NSLocalizedString(@"The scheme you selected allows only for two teams",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   205
                                                       delegate:nil
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   206
                                              cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"")
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   207
                                              otherButtonTitles:nil];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   208
        [alert show];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   209
        [alert release];
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   210
        return NO;
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   211
    }
050163c35c83 perform an additional check on gamestart
koda
parents: 4144
diff changeset
   212
3881
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   213
    return YES;
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   214
}
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   215
e570268a9d52 re-add City theme with the UpdateDataFolder script (and revert changes made to the flake sprite)
koda
parents: 3829
diff changeset
   216
-(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
   217
    button.enabled = YES;
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   218
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
   219
    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
   220
    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
   221
        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
   222
3632
8e1bd8b5780e fix land check fo' real
koda
parents: 3630
diff changeset
   223
    // create the configuration file that is going to be sent to engine
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   224
    NSDictionary *gameDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   225
                                    self.mapConfigViewController.seedCommand,@"seed_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   226
                                    self.mapConfigViewController.templateFilterCommand,@"templatefilter_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   227
                                    self.mapConfigViewController.mapGenCommand,@"mapgen_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   228
                                    self.mapConfigViewController.mazeSizeCommand,@"mazesize_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   229
                                    self.mapConfigViewController.themeCommand,@"theme_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   230
                                    self.mapConfigViewController.staticMapCommand,@"staticmap_command",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   231
                                    self.teamConfigViewController.listOfSelectedTeams,@"teams_list",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   232
                                    self.schemeWeaponConfigViewController.selectedScheme,@"scheme",
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   233
                                    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
   234
                                    script,@"mission_command",
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   235
                                    nil];
3973
0d1a420531ef i fix up the new ammo menu finally
koda
parents: 3971
diff changeset
   236
5666
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   237
    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
   238
        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
   239
        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
   240
        [bridge release];
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   241
    }
cc79eb30346e this should fix the double free that happens when closing the sdl window on ios (untested)
koda
parents: 5455
diff changeset
   242
    [self.interfaceBridge startLocalGame:gameDictionary];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   243
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   244
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   245
-(void) loadNiceHogs {
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   246
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   247
    srand(time(NULL));
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   248
    NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Hedgehog/Idle.png",GRAPHICS_DIRECTORY()];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   249
    UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:filePath];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   250
    [filePath release];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   251
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   252
    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
   253
    int numberOfHats = [hatArray count];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   254
    int animationFrames = IS_VERY_POWERFUL([HWUtils modelType]) ? 18 : 1;
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   255
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   256
    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
   257
        [self.imgContainer removeFromSuperview];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   258
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   259
    self.imgContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
3978
9660600e43cb fix some glitches
koda
parents: 3973
diff changeset
   260
    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
   261
        NSString *hat = [hatArray objectAtIndex:random()%numberOfHats];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   262
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   263
        NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   264
        UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile:hatFile];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   265
        NSMutableArray *animation = [[NSMutableArray alloc] initWithCapacity:animationFrames];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   266
        for (int j = 0; j < animationFrames; j++) {
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   267
            int x = ((j*32)/(int)hatSprite.size.height)*32;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   268
            int y = (j*32)%(int)hatSprite.size.height;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   269
            UIImage *hatSpriteFrame = [hatSprite cutAt:CGRectMake(x, y, 32, 32)];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   270
            UIImage *hogSpriteFrame = [hogSprite cutAt:CGRectMake(x, y, 32, 32)];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   271
            UIImage *hogWithHat = [hogSpriteFrame mergeWith:hatSpriteFrame atPoint:CGPointMake(0, 5)];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   272
            [animation addObject:hogWithHat];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   273
        }
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   274
        [hatSprite release];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   275
        [hatFile release];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   276
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   277
        UIImageView *hog = [[UIImageView alloc] initWithImage:[animation objectAtIndex:0]];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   278
        hog.animationImages = animation;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   279
        hog.animationDuration = 3;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   280
        [animation release];
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   281
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   282
        int x = 20*i+random()%128;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   283
        if (x > 320 - 32)
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   284
            x = i*random()%32;
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   285
        hog.frame = CGRectMake(x, 25, hog.frame.size.width, hog.frame.size.height);
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   286
        [self.imgContainer addSubview:hog];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   287
        [hog startAnimating];
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   288
        [hog release];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   289
    }
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   290
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   291
    [self.view addSubview:self.imgContainer];
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   292
    [hogSprite release];
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   293
    [pool drain];
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   294
}
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   295
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   296
-(void) viewDidLoad {
3629
86212d2b116a redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents: 3626
diff changeset
   297
    self.view.backgroundColor = [UIColor blackColor];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   298
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   299
    CGRect screen = [[UIScreen mainScreen] bounds];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   300
    self.view.frame = CGRectMake(0, 0, screen.size.height, screen.size.width);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   301
3996
eb549fd864a5 the ios port is also iphone compatible
koda
parents: 3984
diff changeset
   302
    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
   303
        // load other controllers and the background
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   304
        if (self.mapConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   305
            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
   306
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
   307
        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
   308
        // 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
   309
        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
   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
        // 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
   313
        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
   314
        [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
   315
        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
   316
        // right column
6080
ce02ddfe8aa1 on ipad2 and above animate the little hogs on game config and fix the hat display imaging
koda
parents: 6079
diff changeset
   317
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(704, 214, 320, 466) andTitle:nil withBorderWidth:2.7f];
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
   318
        [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
   319
        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
   320
        // 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
   321
        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
   322
        [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
   323
        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
   324
        // bottom left
6079
c10767edcd58 little changes and fixes to the previous commit
koda
parents: 6078
diff changeset
   325
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(110, 714, 320, 40) andTitle:nil withBorderWidth:2.0f];
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
   326
        [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
   327
        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
   328
        // bottom right
6079
c10767edcd58 little changes and fixes to the previous commit
koda
parents: 6078
diff changeset
   329
        theLabel = [[UILabel alloc] initWithFrame:CGRectMake(596, 714, 320, 40)
c10767edcd58 little changes and fixes to the previous commit
koda
parents: 6078
diff changeset
   330
                                         andTitle:NSLocalizedString(@"          Max Hogs:",@"")
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
   331
                                  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
   332
        theLabel.font = [UIFont italicSystemFontOfSize:[UIFont labelFontSize]];
6079
c10767edcd58 little changes and fixes to the previous commit
koda
parents: 6078
diff changeset
   333
        theLabel.textColor = [UIColor lightYellowColor];
c10767edcd58 little changes and fixes to the previous commit
koda
parents: 6078
diff changeset
   334
        theLabel.textAlignment = UITextAlignmentLeft;
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
   335
        [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
   336
        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
   337
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   338
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.maxLabel];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   339
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.sizeLabel];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   340
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.segmentedControl];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   341
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.previewButton];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   342
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.slider];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   343
        [self.mapConfigViewController.view bringSubviewToFront:self.mapConfigViewController.tableView];
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   344
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   345
        if (self.teamConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   346
            self.teamConfigViewController = [[TeamConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   347
        [self.mapConfigViewController.view addSubview:self.teamConfigViewController.view];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   348
        if (self.schemeWeaponConfigViewController == nil)
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   349
            self.schemeWeaponConfigViewController = [[SchemeWeaponConfigViewController alloc] initWithStyle:UITableViewStyleGrouped];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   350
        [self.mapConfigViewController.view addSubview:schemeWeaponConfigViewController.view];
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   351
        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
   352
        self.teamConfigViewController.view.frame = CGRectMake(348, 200, 328, 480);
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   353
        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
   354
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4349
diff changeset
   355
        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
   356
    } 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
   357
        // 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
   358
        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
   359
            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
   360
        // 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
   361
        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
   362
        [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
   363
    }
3948
24daa33a3114 some rethinking of initial menu presentation and initial orientation (also merging images should be threadsafe now)
koda
parents: 3930
diff changeset
   364
    [self.view addSubview:self.mapConfigViewController.view];
4349
8efa91f98274 display an empty table for missions
koda
parents: 4150
diff changeset
   365
    self.mapConfigViewController.externalController = schemeWeaponConfigViewController;
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   366
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   367
    [super viewDidLoad];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   368
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   369
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   370
-(void) viewWillAppear:(BOOL)animated {
3996
eb549fd864a5 the ios port is also iphone compatible
koda
parents: 3984
diff changeset
   371
    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
   372
        [NSThread detachNewThreadSelector:@selector(loadNiceHogs) toTarget:self withObject:nil];
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   373
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   374
    [self.mapConfigViewController viewWillAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   375
    [self.teamConfigViewController viewWillAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   376
    [self.schemeWeaponConfigViewController viewWillAppear:animated];
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   377
    // add other controllers here and below
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   378
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   379
    [super viewWillAppear:animated];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   380
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   381
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   382
-(void) viewDidAppear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   383
    [self.mapConfigViewController viewDidAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   384
    [self.teamConfigViewController viewDidAppear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   385
    [self.schemeWeaponConfigViewController viewDidAppear:animated];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   386
    [super viewDidAppear:animated];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   387
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   388
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   389
-(void) viewWillDisappear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   390
    [self.mapConfigViewController viewWillDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   391
    [self.teamConfigViewController viewWillDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   392
    [self.schemeWeaponConfigViewController viewWillDisappear:animated];
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   393
    [super viewWillDisappear:animated];
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   394
}
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   395
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   396
-(void) viewDidDisappear:(BOOL)animated {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   397
    [self.mapConfigViewController viewDidDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   398
    [self.teamConfigViewController viewDidDisappear:animated];
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   399
    [self.schemeWeaponConfigViewController viewDidDisappear:animated];
3739
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   400
    [super viewDidDisappear:animated];
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   401
}
97cf933e5bd2 disable AI teleport
koda
parents: 3737
diff changeset
   402
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   403
-(void) didReceiveMemoryWarning {
3971
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   404
    if (self.teamConfigViewController.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   405
        self.teamConfigViewController = nil;
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   406
    if (self.schemeWeaponConfigViewController.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   407
        self.schemeWeaponConfigViewController = nil;
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   408
    if (self.helpPage.view.superview == nil)
5c82ee165ed5 minor stuff
koda
parents: 3948
diff changeset
   409
        self.helpPage = nil;
3983
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   410
    if (self.mapConfigViewController.view.superview == nil)
aa24192417a8 use labels instead of images, should save ram and space
koda
parents: 3978
diff changeset
   411
        self.mapConfigViewController = nil;
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   412
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   413
    self.imgContainer = nil;
5700
f0960a88ab0e savedgamesviewcontroller refactor, added icons to supportviewcontroller
koda
parents: 5699
diff changeset
   414
    // 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
   415
    //self.interfaceBridge = nil;
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   416
    MSG_MEMCLEAN();
3778
2e61bb50cc57 add a nice group of hogs in lobby page
koda
parents: 3739
diff changeset
   417
    [super didReceiveMemoryWarning];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   418
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   419
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   420
-(void) viewDidUnload {
3923
694e6f6e0e30 various classes updates (new version in mainmenu, opt in mapconfig, clear all in savegames)
koda
parents: 3911
diff changeset
   421
    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
   422
    self.interfaceBridge = nil;
3930
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   423
    self.mapConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   424
    self.teamConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   425
    self.schemeWeaponConfigViewController = nil;
8b00b4f93242 remove a useless field from weaponfile format
koda
parents: 3926
diff changeset
   426
    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
   427
    MSG_DIDUNLOAD();
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   428
    [super viewDidUnload];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   429
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   430
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   431
-(void) dealloc {
5208
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   432
    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
   433
    releaseAndNil(interfaceBridge);
5208
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   434
    releaseAndNil(mapConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   435
    releaseAndNil(teamConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   436
    releaseAndNil(schemeWeaponConfigViewController);
878e551f0b4a all together now! releaseAndNil ftw
koda
parents: 5158
diff changeset
   437
    releaseAndNil(helpPage);
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   438
    [super dealloc];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   439
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   440
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   441
@end