Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
extensions:gameplayviewcontroller [2011/05/07 20:27]
daniel moved code to "source code" section
extensions:gameplayviewcontroller [2015/09/14 11:15] (current)
Line 1: Line 1:
 +~~NOTOC~~
  
 +====== GamePlayViewController ======
 +
 +---- dataentry extension ----
 +type          : extension ​ # or '​mod'​ if it requires changing the Sparrow source ​
 +author_mail ​  : matt62king@gmail.com Matt King 
 +description ​  : A view controller for SPView.
 +lastupdate_dt : YYYY-MM-DD # the date you created the extension
 +compatible ​   : v1.1       # the Sparrow version you tested the extension with
 +depends ​      : ​           # if the ext. depends on others, list them here
 +tags          : SPView, SPStage
 +homepage_url ​ :            # if the ext. has an URL (e.g. a Gist-page), add it here
 +download_url ​ :            # a direct link to the download (e.g. the Gist-archive)
 +----
 +
 +===== Usage =====
 +
 +The GamePlayViewConroller is a view controller for SPView. It is a subclass of UIViewController so it can be used on a navigation stack or as a model view controller. ​
 +
 +GamePlayViewController responds to the application moving to/from the background, and listens for a "​StopGame"​ NSNotification. ​
 +
 +It also has SPStage property. Set this property with your stage before presenting the view controller.
 +
 +===== Changelog =====
 +
 +  * //​2011/​05/​06 23:22//: First public version
 +
 +===== Source Code =====
 +
 +GamePlayViewController.h
 +
 +<code objc>
 +#import <​UIKit/​UIKit.h>​
 +#import "​Sparrow.h"​
 +
 +@interface GamePlayViewController : UIViewController {
 + SPView *_sparrowView;​
 +}
 +
 +@property (nonatomic, retain) SPStage *stage;
 +
 +- (void)stopGameNotification;​
 +
 +- (void)onTransitionToActive:​(NSNotification *)sender;
 +- (void)onTransitionToInactive:​(NSNotification *)sender;
 +
 +
 +@end
 +
 +</​code>​
 +
 +GamePlayViewController.m
 +
 +<code objc>
 +#import "​GamePlayViewController.h"​
 +
 +@implementation GamePlayViewController
 +
 +@synthesize stage;
 +
 +- (id)initWithNibName:​(NSString *)nibNameOrNil bundle:​(NSBundle *)nibBundleOrNil {
 +    self = [super initWithNibName:​nibNameOrNil bundle:​nibBundleOrNil];​
 +    if (self) {
 + _sparrowView = [[SPView alloc] initWithFrame:​CGRectMake(0.0,​ 0.0, 480.0, 320.0)];
 +        ​
 +    }
 +    return self;
 +}
 +
 +- (void)loadView {
 + [self setView:​_sparrowView];​
 + [_sparrowView release];
 +}
 +
 +#pragma mark -
 +#pragma mark View Life Cycle
 +
 +- (void)viewDidLoad {
 +    [super viewDidLoad];​
 +    ​
 +    [[NSNotificationCenter defaultCenter] addObserver:​self selector:​@selector(onTransitionToInactive:​) name:​UIApplicationWillResignActiveNotification object:​nil];​
 +    [[NSNotificationCenter defaultCenter] addObserver:​self selector:​@selector(stopGameNotification) name:​@"​StopGame"​ object:​nil];​
 +    [[NSNotificationCenter defaultCenter] addObserver:​self selector:​@selector(onTransitionToActive:​) name:​UIApplicationDidBecomeActiveNotification object:​nil];​
 +    ​
 +}
 +
 +- (void)viewDidDisappear:​(BOOL)animated {
 + [super viewDidDisappear:​animated];​
 + self.stage = nil;
 +}
 +
 +- (void)viewDidUnload {
 +    [super viewDidUnload];​
 +}
 +
 +#pragma mark -
 +#pragma mark Rotation
 +
 +- (BOOL)shouldAutorotateToInterfaceOrientation:​(UIInterfaceOrientation)interfaceOrientation {
 + return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);​
 +}
 +
 +#pragma mark -
 +#pragma mark Accessor Methods
 +
 +- (void)setStage:​(SPStage *)aStage {
 + if (aStage) {
 + SPView *spView = (SPView *)[self view];
 +
 + spView.stage = aStage;
 + spView.frameRate = 30.0;
 + [spView start];
 +
 + [SPAudioEngine start:​SPAudioSessionCategory_AmbientSound];​
 + }
 +}
 +
 +#pragma mark -
 +#pragma mark Notifications
 +
 +- (void)stopGameNotification {
 +    SPView *spView = (SPView *)[self view];
 + [spView stop];
 +
 + [SPAudioEngine stop];
 +
 +    [self.parentViewController dismissModalViewControllerAnimated:​YES];​
 +}
 +
 +- (void)onTransitionToActive:​(NSNotification *)sender {
 +    SPView *spView = (SPView *)[self view];
 +    [spView start];
 +    ​
 +    [SPAudioEngine start];
 +}
 +
 +- (void)onTransitionToInactive:​(NSNotification *)sender {
 +    SPView *spView = (SPView *)[self view];
 +    [spView stop];
 +    ​
 +    [SPAudioEngine stop];
 +}
 +
 +
 +#pragma mark -
 +#pragma mark Memory Managment
 +
 +- (void)didReceiveMemoryWarning {
 +    // Releases the view if it doesn'​t have a superview.
 +    [super didReceiveMemoryWarning];​
 +    ​
 +    // Release any cached data, images, etc. that aren't in use.
 +}
 +
 +- (void)dealloc {
 +    [self.stage release];
 +    ​
 +    [[NSNotificationCenter defaultCenter] removeObserver:​self name:​@"​StopGame"​ object:​nil];​
 +    [[NSNotificationCenter defaultCenter] removeObserver:​self name:​UIApplicationDidBecomeActiveNotification object:​nil];​
 +    [[NSNotificationCenter defaultCenter] removeObserver:​self name:​UIApplicationWillResignActiveNotification object:​nil];​
 +      ​
 +    [super dealloc];
 +}
 +
 +@end
 +</​code>​
 +
 +===== Discussion =====
 +
 +//No comments so far. Feel free to edit this part of the page.//
  extensions/gameplayviewcontroller.txt · Last modified: 2015/09/14 11:15 (external edit)
 
Powered by DokuWiki