304 #pragma mark Table view delegate |
304 #pragma mark Table view delegate |
305 -(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
305 -(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
306 NSInteger row = [indexPath row]; |
306 NSInteger row = [indexPath row]; |
307 NSInteger section = [indexPath section]; |
307 NSInteger section = [indexPath section]; |
308 |
308 |
309 if (2 == section) { |
309 if (2 == section) |
310 switch (row) { |
310 { |
|
311 switch (row) |
|
312 { |
311 case 0: // grave |
313 case 0: // grave |
312 if (nil == gravesViewController) |
314 { |
313 gravesViewController = [[GravesViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
315 GravesViewController *gravesViewController = [[GravesViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
314 |
316 |
315 [gravesViewController setTeamDictionary:teamDictionary]; |
317 [gravesViewController setTeamDictionary:teamDictionary]; |
316 [self.navigationController pushViewController:gravesViewController animated:YES]; |
318 [self.navigationController pushViewController:gravesViewController animated:YES]; |
317 break; |
319 [gravesViewController release]; |
|
320 break; |
|
321 } |
318 case 1: // voice |
322 case 1: // voice |
319 if (nil == voicesViewController) |
323 { |
320 voicesViewController = [[VoicesViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
324 VoicesViewController *voicesViewController = [[VoicesViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
321 |
325 |
322 [voicesViewController setTeamDictionary:teamDictionary]; |
326 [voicesViewController setTeamDictionary:teamDictionary]; |
323 [self.navigationController pushViewController:voicesViewController animated:YES]; |
327 [self.navigationController pushViewController:voicesViewController animated:YES]; |
324 break; |
328 [voicesViewController release]; |
|
329 break; |
|
330 } |
325 case 2: // fort |
331 case 2: // fort |
326 if (nil == fortsViewController) |
332 { |
327 fortsViewController = [[FortsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
333 FortsViewController *fortsViewController = [[FortsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
328 |
334 |
329 [fortsViewController setTeamDictionary:teamDictionary]; |
335 [fortsViewController setTeamDictionary:teamDictionary]; |
330 [self.navigationController pushViewController:fortsViewController animated:YES]; |
336 [self.navigationController pushViewController:fortsViewController animated:YES]; |
331 break; |
337 [fortsViewController release]; |
|
338 break; |
|
339 } |
332 case 3: // flag |
340 case 3: // flag |
333 if (nil == flagsViewController) |
341 { |
334 flagsViewController = [[FlagsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
342 FlagsViewController *flagsViewController = [[FlagsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
335 |
343 |
336 [flagsViewController setTeamDictionary:teamDictionary]; |
344 [flagsViewController setTeamDictionary:teamDictionary]; |
337 [self.navigationController pushViewController:flagsViewController animated:YES]; |
345 [self.navigationController pushViewController:flagsViewController animated:YES]; |
338 break; |
346 [flagsViewController release]; |
|
347 break; |
|
348 } |
339 case 4: // level |
349 case 4: // level |
340 if (nil == levelViewController) |
350 { |
341 levelViewController = [[LevelViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
351 LevelViewController *levelViewController = [[LevelViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
342 |
352 |
343 [levelViewController setTeamDictionary:teamDictionary]; |
353 [levelViewController setTeamDictionary:teamDictionary]; |
344 [self.navigationController pushViewController:levelViewController animated:YES]; |
354 [self.navigationController pushViewController:levelViewController animated:YES]; |
345 break; |
355 [levelViewController release]; |
|
356 break; |
|
357 } |
346 default: |
358 default: |
347 DLog(@"Nope"); |
359 DLog(@"Nope"); |
348 break; |
360 break; |
349 } |
361 } |
350 } else { |
362 } else { |
369 [self showHogHatViewControllerForHogIndex:[indexPath row]]; |
381 [self showHogHatViewControllerForHogIndex:[indexPath row]]; |
370 } |
382 } |
371 |
383 |
372 - (void)showHogHatViewControllerForHogIndex:(NSInteger)hogIndex |
384 - (void)showHogHatViewControllerForHogIndex:(NSInteger)hogIndex |
373 { |
385 { |
374 if (nil == hogHatViewController) |
386 HogHatViewController *hogHatViewController = [[HogHatViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
375 hogHatViewController = [[HogHatViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
376 |
387 |
377 // cache the dictionary file of the team, so that other controllers can modify it |
388 // cache the dictionary file of the team, so that other controllers can modify it |
378 hogHatViewController.teamDictionary = self.teamDictionary; |
389 hogHatViewController.teamDictionary = self.teamDictionary; |
379 hogHatViewController.selectedHog = hogIndex; |
390 hogHatViewController.selectedHog = hogIndex; |
380 |
391 |
381 [self.navigationController pushViewController:hogHatViewController animated:YES]; |
392 [self.navigationController pushViewController:hogHatViewController animated:YES]; |
|
393 [hogHatViewController release]; |
382 } |
394 } |
383 |
395 |
384 #pragma mark - |
396 #pragma mark - |
385 #pragma mark Memory management |
397 #pragma mark Memory management |
386 -(void) didReceiveMemoryWarning { |
398 -(void) didReceiveMemoryWarning { |
387 [super didReceiveMemoryWarning]; |
399 [super didReceiveMemoryWarning]; |
388 if (hogHatViewController.view.superview == nil) |
|
389 hogHatViewController = nil; |
|
390 if (gravesViewController.view.superview == nil) |
|
391 gravesViewController = nil; |
|
392 if (voicesViewController.view.superview == nil) |
|
393 voicesViewController = nil; |
|
394 if (fortsViewController.view.superview == nil) |
|
395 fortsViewController = nil; |
|
396 if (flagsViewController.view.superview == nil) |
|
397 flagsViewController = nil; |
|
398 if (levelViewController.view.superview == nil) |
|
399 levelViewController = nil; |
|
400 MSG_MEMCLEAN(); |
400 MSG_MEMCLEAN(); |
401 } |
401 } |
402 |
402 |
403 -(void) viewDidUnload { |
403 -(void) viewDidUnload { |
404 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
404 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
405 self.teamDictionary = nil; |
405 self.teamDictionary = nil; |
406 self.teamName = nil; |
406 self.teamName = nil; |
407 self.normalHogSprite = nil; |
407 self.normalHogSprite = nil; |
408 self.secondaryItems = nil; |
408 self.secondaryItems = nil; |
409 self.moreSecondaryItems = nil; |
409 self.moreSecondaryItems = nil; |
410 hogHatViewController = nil; |
|
411 gravesViewController = nil; |
|
412 voicesViewController = nil; |
|
413 flagsViewController = nil; |
|
414 fortsViewController = nil; |
|
415 levelViewController = nil; |
|
416 MSG_DIDUNLOAD(); |
410 MSG_DIDUNLOAD(); |
417 [super viewDidUnload]; |
411 [super viewDidUnload]; |
418 } |
412 } |
419 |
413 |
420 -(void) dealloc { |
414 -(void) dealloc { |
421 releaseAndNil(teamDictionary); |
415 releaseAndNil(teamDictionary); |
422 releaseAndNil(teamName); |
416 releaseAndNil(teamName); |
423 releaseAndNil(normalHogSprite); |
417 releaseAndNil(normalHogSprite); |
424 releaseAndNil(secondaryItems); |
418 releaseAndNil(secondaryItems); |
425 releaseAndNil(moreSecondaryItems); |
419 releaseAndNil(moreSecondaryItems); |
426 releaseAndNil(hogHatViewController); |
|
427 releaseAndNil(gravesViewController); |
|
428 releaseAndNil(fortsViewController); |
|
429 releaseAndNil(voicesViewController); |
|
430 releaseAndNil(flagsViewController); |
|
431 releaseAndNil(levelViewController); |
|
432 [super dealloc]; |
420 [super dealloc]; |
433 } |
421 } |
434 |
422 |
435 |
423 |
436 @end |
424 @end |