project_files/HedgewarsMobile/Classes/MainMenuViewController.m
branchios-develop
changeset 12872 00215a7ec5f5
parent 11559 2b9e189df3d6
child 13229 f62ea2a45f47
equal deleted inserted replaced
12871:2c06b1120749 12872:00215a7ec5f5
    48 @property (retain, nonatomic) IBOutlet UIButton *campaignButton;
    48 @property (retain, nonatomic) IBOutlet UIButton *campaignButton;
    49 @end
    49 @end
    50 
    50 
    51 @implementation MainMenuViewController
    51 @implementation MainMenuViewController
    52 
    52 
    53 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
    53 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    54     return rotationManager(interfaceOrientation);
    54     return rotationManager(interfaceOrientation);
    55 }
    55 }
    56 
    56 
    57 #pragma mark -
    57 #pragma mark -
    58 -(void) viewDidLoad {
    58 - (void)viewDidLoad {
    59     self.view.frame = [[UIScreen mainScreen] safeBounds];
    59     self.view.frame = [[UIScreen mainScreen] safeBounds];
    60     [super viewDidLoad];
    60     [super viewDidLoad];
    61     
    61     
    62     [self.simpleGameButton setTitle:NSLocalizedString(@"Simple", nil) forState:UIControlStateNormal];
    62     [self.simpleGameButton setTitle:NSLocalizedString(@"Simple", nil) forState:UIControlStateNormal];
    63     [self.missionsButton setTitle:NSLocalizedString(@"Missions", nil) forState:UIControlStateNormal];
    63     [self.missionsButton setTitle:NSLocalizedString(@"Missions", nil) forState:UIControlStateNormal];
   106 }
   106 }
   107 
   107 
   108 - (void) presentViewController:(UIViewController *)vc
   108 - (void) presentViewController:(UIViewController *)vc
   109 {
   109 {
   110     [self presentViewController:vc animated:NO completion:nil];
   110     [self presentViewController:vc animated:NO completion:nil];
   111     [vc release];
   111 }
   112 }
   112 
   113 
   113 - (void)viewWillAppear:(BOOL)animated {
   114 -(void) viewWillAppear:(BOOL)animated {
       
   115     [[AudioManagerController mainManager] playBackgroundMusic];
   114     [[AudioManagerController mainManager] playBackgroundMusic];
   116     [super viewWillAppear:animated];
   115     [super viewWillAppear:animated];
   117 }
   116 }
   118 
   117 
   119 #pragma mark -
   118 #pragma mark -
   120 -(IBAction) switchViews:(id) sender {
   119 - (IBAction)switchViews:(id)sender {
   121     UIButton *button = (UIButton *)sender;
   120     UIButton *button = (UIButton *)sender;
   122     UIAlertView *alert;
   121     UIAlertView *alert;
   123     NSString *xib = nil;
   122     NSString *xib = nil;
   124 
   123 
   125     [[AudioManagerController mainManager] playClickSound];
   124     [[AudioManagerController mainManager] playClickSound];
   126     switch (button.tag) {
   125     switch (button.tag) {
   127         case 0:
   126         case 0: {
   128             xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone";
   127             xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone";
   129 
   128 
   130             GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil];
   129             GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil];
   131             gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
   130             gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
   132 
   131 
   133             [self presentViewController:gcvc animated:YES completion:nil];
   132             [self presentViewController:gcvc animated:YES completion:nil];
   134             [gcvc release];
   133             break;
   135             break;
   134         }
   136         case 2:
   135         case 2:
   137             if (IS_IPAD())
   136             if (IS_IPAD())
   138             {
   137             {
   139                 // the contents on the right of the splitview, setting targetController to nil to avoid creating the table
   138                 // the contents on the right of the splitview, setting targetController to nil to avoid creating the table
   140                 SettingsBaseViewController *rightController = [[SettingsBaseViewController alloc] init];
   139                 SettingsBaseViewController *rightController = [[SettingsBaseViewController alloc] init];
   141                 rightController.targetController = nil;
   140                 rightController.targetController = nil;
   142                 UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:rightController];
   141                 UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:rightController];
   143                 [rightController release];
       
   144                 
   142                 
   145                 // the contens on the left of the splitview, setting targetController that will receive push/pop actions
   143                 // the contens on the left of the splitview, setting targetController that will receive push/pop actions
   146                 SettingsBaseViewController *leftController = [[SettingsBaseViewController alloc] init];
   144                 SettingsBaseViewController *leftController = [[SettingsBaseViewController alloc] init];
   147                 leftController.targetController = rightNavController.topViewController;
   145                 leftController.targetController = rightNavController.topViewController;
   148                 UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController];
   146                 UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController];
   149                 [leftController release];
       
   150                 
   147                 
   151                 MGSplitViewController *splitViewRootController = [[MGSplitViewController alloc] init];
   148                 MGSplitViewController *splitViewRootController = [[MGSplitViewController alloc] init];
   152                 splitViewRootController.delegate = nil;
   149                 splitViewRootController.delegate = nil;
   153                 splitViewRootController.showsMasterInPortrait = YES;
   150                 splitViewRootController.showsMasterInPortrait = YES;
   154                 splitViewRootController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
   151                 splitViewRootController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
   155                 [leftNavController release];
       
   156                 [rightNavController release];
       
   157 
   152 
   158                 [self presentViewController:splitViewRootController animated:YES completion:nil];
   153                 [self presentViewController:splitViewRootController animated:YES completion:nil];
   159                 [splitViewRootController release];
       
   160             }
   154             }
   161             else
   155             else
   162             {
   156             {
   163                 NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5];
   157                 NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5];
   164                 
   158                 
   165                 UIViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   159                 UIViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   166                 generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"General",@"") imageName:@"flower" selectedImageName:@"flower_filled"];
   160                 generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"General",@"") imageName:@"flower" selectedImageName:@"flower_filled"];
   167                 UINavigationController *generalNavController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController];
   161                 UINavigationController *generalNavController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController];
   168                 [generalSettingsViewController release];
       
   169                 [tabBarNavigationControllers addObject:generalNavController];
   162                 [tabBarNavigationControllers addObject:generalNavController];
   170                 [generalNavController release];
       
   171                 
   163                 
   172                 UIViewController *teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   164                 UIViewController *teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   173                 teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Teams",@"") imageName:@"teams" selectedImageName:@"teams_filled"];
   165                 teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Teams",@"") imageName:@"teams" selectedImageName:@"teams_filled"];
   174                 UINavigationController *teamNavController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController];
   166                 UINavigationController *teamNavController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController];
   175                 [teamSettingsViewController release];
       
   176                 [tabBarNavigationControllers addObject:teamNavController];
   167                 [tabBarNavigationControllers addObject:teamNavController];
   177                 [teamNavController release];
       
   178                 
   168                 
   179                 UIViewController *weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   169                 UIViewController *weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   180                 weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Weapons",@"") imageName:@"bullet" selectedImageName:@"bullet_filled"];
   170                 weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Weapons",@"") imageName:@"bullet" selectedImageName:@"bullet_filled"];
   181                 UINavigationController *weaponNavController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController];
   171                 UINavigationController *weaponNavController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController];
   182                 [weaponSettingsViewController release];
       
   183                 [tabBarNavigationControllers addObject:weaponNavController];
   172                 [tabBarNavigationControllers addObject:weaponNavController];
   184                 [weaponNavController release];
       
   185                 
   173                 
   186                 UIViewController *schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   174                 UIViewController *schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
   187                 schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Schemes",@"") imageName:@"target" selectedImageName:@"target_filled"];
   175                 schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Schemes",@"") imageName:@"target" selectedImageName:@"target_filled"];
   188                 UINavigationController *schemeNavController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController];
   176                 UINavigationController *schemeNavController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController];
   189                 [schemeSettingsViewController release];
       
   190                 [tabBarNavigationControllers addObject:schemeNavController];
   177                 [tabBarNavigationControllers addObject:schemeNavController];
   191                 [schemeNavController release];
       
   192                 
   178                 
   193                 UIViewController *supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
   179                 UIViewController *supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
   194                 supportViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Support",@"") imageName:@"heart" selectedImageName:@"heart_filled"];
   180                 supportViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Support",@"") imageName:@"heart" selectedImageName:@"heart_filled"];
   195                 UINavigationController *supportNavController = [[UINavigationController alloc] initWithRootViewController:supportViewController];
   181                 UINavigationController *supportNavController = [[UINavigationController alloc] initWithRootViewController:supportViewController];
   196                 [supportViewController release];
       
   197                 [tabBarNavigationControllers addObject:supportNavController];
   182                 [tabBarNavigationControllers addObject:supportNavController];
   198                 [supportNavController release];
       
   199                 
   183                 
   200                 UITabBarController *settingsTabController = [[UITabBarController alloc] init];
   184                 UITabBarController *settingsTabController = [[UITabBarController alloc] init];
   201                 settingsTabController.viewControllers = tabBarNavigationControllers;
   185                 settingsTabController.viewControllers = tabBarNavigationControllers;
   202                 [tabBarNavigationControllers release];
       
   203                 
   186                 
   204                 [self presentViewController:settingsTabController animated:YES completion:nil];
   187                 [self presentViewController:settingsTabController animated:YES completion:nil];
   205                 [settingsTabController release];
       
   206             }
   188             }
   207             break;
   189             break;
   208         case 3:
   190         case 3:
   209 #ifdef DEBUG
   191 #ifdef DEBUG
   210             {
   192             {
   211                 GameLogViewController *gameLogVC = [[GameLogViewController alloc] init];
   193                 GameLogViewController *gameLogVC = [[GameLogViewController alloc] init];
   212                 UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:gameLogVC];
   194                 UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:gameLogVC];
   213                 [gameLogVC release];
       
   214                 
   195                 
   215                 [self presentViewController:navController animated:YES completion:nil];
   196                 [self presentViewController:navController animated:YES completion:nil];
   216                 [navController release];
       
   217             }
   197             }
   218 #else
   198 #else
   219             {
   199             {
   220                 AboutViewController *about = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];
   200                 AboutViewController *about = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];
   221                 about.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
   201                 about.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
   222                 about.modalPresentationStyle = UIModalPresentationFormSheet;
   202                 about.modalPresentationStyle = UIModalPresentationFormSheet;
   223                 
   203                 
   224                 [self presentViewController:about animated:YES completion:nil];
   204                 [self presentViewController:about animated:YES completion:nil];
   225                 [about release];
       
   226             }
   205             }
   227 #endif
   206 #endif
   228             break;
   207             break;
   229         case 4:
   208         case 4:
   230             {
   209             {
   231                 SavedGamesViewController *savedgames = [[SavedGamesViewController alloc] initWithNibName:@"SavedGamesViewController" bundle:nil];
   210                 SavedGamesViewController *savedgames = [[SavedGamesViewController alloc] initWithNibName:@"SavedGamesViewController" bundle:nil];
   232                 savedgames.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
   211                 savedgames.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
   233                 savedgames.modalPresentationStyle = UIModalPresentationPageSheet;
   212                 savedgames.modalPresentationStyle = UIModalPresentationPageSheet;
   234                 
   213                 
   235                 [self presentViewController:savedgames animated:YES completion:nil];
   214                 [self presentViewController:savedgames animated:YES completion:nil];
   236                 [savedgames release];
       
   237             }
   215             }
   238             break;
   216             break;
   239         case 5:
   217         case 5:
   240             {
   218             {
   241                 xib = IS_IPAD() ? @"MissionTrainingViewController-iPad" : @"MissionTrainingViewController-iPhone";
   219                 xib = IS_IPAD() ? @"MissionTrainingViewController-iPad" : @"MissionTrainingViewController-iPhone";
   242                 MissionTrainingViewController *missions = [[MissionTrainingViewController alloc] initWithNibName:xib bundle:nil];
   220                 MissionTrainingViewController *missions = [[MissionTrainingViewController alloc] initWithNibName:xib bundle:nil];
   243                 missions.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
   221                 missions.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
   244                 missions.modalPresentationStyle = UIModalPresentationPageSheet;
   222                 missions.modalPresentationStyle = UIModalPresentationPageSheet;
   245                 
   223                 
   246                 [self presentViewController:missions animated:YES completion:nil];
   224                 [self presentViewController:missions animated:YES completion:nil];
   247                 [missions release];
   225             }
   248             }
   226             break;
   249             break;
   227         case 6: {
   250         case 6:
       
   251             [GameInterfaceBridge registerCallingController:self];
   228             [GameInterfaceBridge registerCallingController:self];
   252             [GameInterfaceBridge startSimpleGame];
   229             [GameInterfaceBridge startSimpleGame];
   253             break;
   230             break;
       
   231         }
   254         case 7:
   232         case 7:
   255             {
   233             {
   256                 xib = IS_IPAD() ? @"CampaignsViewController-iPad" : @"CampaignsViewController-iPhone";
   234                 xib = IS_IPAD() ? @"CampaignsViewController-iPad" : @"CampaignsViewController-iPhone";
   257                 CampaignsViewController *campaigns = [[CampaignsViewController alloc] initWithNibName:xib bundle:nil];
   235                 CampaignsViewController *campaigns = [[CampaignsViewController alloc] initWithNibName:xib bundle:nil];
   258                 UINavigationController *campaignNavigationController = [[UINavigationController alloc] initWithRootViewController:campaigns];
   236                 UINavigationController *campaignNavigationController = [[UINavigationController alloc] initWithRootViewController:campaigns];
   259                 [campaigns release];
       
   260                 
   237                 
   261                 campaignNavigationController.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
   238                 campaignNavigationController.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
   262                 campaignNavigationController.modalPresentationStyle = UIModalPresentationPageSheet;
   239                 campaignNavigationController.modalPresentationStyle = UIModalPresentationPageSheet;
   263                 
   240                 
   264                 [self presentViewController:campaignNavigationController animated:YES completion:nil];
   241                 [self presentViewController:campaignNavigationController animated:YES completion:nil];
   265                 [campaignNavigationController release];
   242             }
   266             }
   243             break;
   267             break;
   244         default: {
   268         default:
       
   269             alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented"
   245             alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented"
   270                                                message:@"Sorry, this feature is not yet implemented"
   246                                                message:@"Sorry, this feature is not yet implemented"
   271                                               delegate:nil
   247                                               delegate:nil
   272                                      cancelButtonTitle:@"Well, don't worry"
   248                                      cancelButtonTitle:@"Well, don't worry"
   273                                      otherButtonTitles:nil];
   249                                      otherButtonTitles:nil];
   274             [alert show];
   250             [alert show];
   275             [alert release];
   251             break;
   276             break;
   252         }
   277     }
   253     }
   278 }
   254 }
   279 
   255 
   280 - (UITabBarItem *)tabBarItemWithTitle: (NSString *)title
   256 - (UITabBarItem *)tabBarItemWithTitle: (NSString *)title
   281                             imageName: (NSString *)imageName
   257                             imageName: (NSString *)imageName
   282                     selectedImageName: (NSString *)selectedImageName
   258                     selectedImageName: (NSString *)selectedImageName
   283 {
   259 {
   284     return [[[UITabBarItem alloc] initWithTitle:title
   260     return [[UITabBarItem alloc] initWithTitle:title
   285                                           image:[UIImage imageNamed:imageName]
   261                                           image:[UIImage imageNamed:imageName]
   286                                   selectedImage:[UIImage imageNamed:selectedImageName]] autorelease];
   262                                   selectedImage:[UIImage imageNamed:selectedImageName]];
   287 }
   263 }
   288 
   264 
   289 #pragma mark -
   265 #pragma mark -
   290 -(void) viewDidUnload {
   266 
   291     MSG_DIDUNLOAD();
   267 - (void)didReceiveMemoryWarning {
   292     [super viewDidUnload];
       
   293 }
       
   294 
       
   295 -(void) didReceiveMemoryWarning {
       
   296     MSG_MEMCLEAN();
   268     MSG_MEMCLEAN();
   297     [super didReceiveMemoryWarning];
   269     [super didReceiveMemoryWarning];
   298 }
   270 }
   299 
   271 
   300 -(void) dealloc {
       
   301     [_simpleGameButton release];
       
   302     [_missionsButton release];
       
   303     [_campaignButton release];
       
   304     [super dealloc];
       
   305 }
       
   306 
       
   307 @end
   272 @end