summary refs log blame commit diff stats
path: root/Classes/GameMode.m
blob: 7afbf20ceed8d7e37e520ad21789e4ca19a08a82 (plain) (tree)
1
2
3
4
5
6
7
8
9
10








                                                    
                         






                                        
    
















                                              






















                                                                                                                                                                








                                                                                                 
                                  
 
                                       











                                                                         



                                          













































































                                                                                                                                                                 






                      
//
//  GameMode.m
//  Cart Collect
//
//  Created by Starla Insigna on 8/9/11.
//  Copyright 2011 Four Island. All rights reserved.
//

#import "GameMode.h"
#import "FallingObject.h"
#import "MainMenuLayer.h"

@implementation GameMode

@synthesize cart, score, lives;

+ (CCScene*)scene
{
	CCScene* scene = [CCScene node];
    
	GameMode* layer = [self node];
    layer.tag = GAME_LAYER;
	[scene addChild:layer];
	
	scene.tag = GAME_SCENE;
	
	return scene;
}

- (id)init
{
    self = [super init];
    
    if (nil != self)
    {
        isAccelerometerEnabled_ = YES;
        
        objects = [[NSMutableSet alloc] init];
        
        cart = [[Cart alloc] initWithSprite:[CCSprite spriteWithFile:@"cart.png"]];
		cart.sprite.position = ccp(240, 22);
		cart.sprite.scale = 2;
		[self addChild:cart.sprite];
        
        scoreLabel = [CCLabelBMFont labelWithString:@"Score: 0" fntFile:@"helvetica2.fnt"];
		scoreLabel.position = ccp(50, 300);
		[self addChild:scoreLabel];
		
		livesLabel = [CCLabelBMFont labelWithString:@"Lives: 3" fntFile:@"helvetica2.fnt"];
		livesLabel.position = ccp(50, 280);
		[self addChild:livesLabel];
		
		score = 0;
		lives = 3;
		
        if ([self canPause])
        {
            CCMenuItemImage* pauseButton = [CCMenuItemImage itemFromNormalImage:@"pause2.png" selectedImage:@"pause.png" target:self selector:@selector(pause)];
            CCMenu* pauseMenu = [CCMenu menuWithItems:pauseButton, nil];
            [pauseMenu setPosition:ccp(480-8-16, 320-8-16)];
            [self addChild:pauseMenu];
        }
    }
    
    return self;
}

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{	
	[cart accelerometer:accelerometer didAccelerate:acceleration];
}

- (void)onEnterTransitionDidFinish
{
    [super onEnterTransitionDidFinish];
    
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 60)];
    [self schedule:@selector(tick:) interval:1.0f/60.0f];
}

- (void)tick:(ccTime)dt
{
    [cart tick];
    
    for (FallingObject* object in objects)
	{
        if ([object tick])
        {
            [objects removeObject:object];
        }
    }
}

- (BOOL)canPause
{
    return YES;
}

- (void)pause
{
    if ([self canPause])
    {
        [self pauseSchedulerAndActions];
        
        shadedLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)];
        [[[CCDirector sharedDirector] runningScene] addChild:shadedLayer];
        
        pauseLayer = [CCLayer node];
        CCLabelBMFont* scoreLabel2 = [CCLabelBMFont labelWithString:@"PAUSE" fntFile:@"helvetica.fnt"];
        scoreLabel2.position = ccp(240,90);
        [pauseLayer addChild:scoreLabel2];
        
        CCMenuItemImage* pauseButton = [CCMenuItemImage itemFromNormalImage:@"pause2.png" selectedImage:@"pause.png" target:self selector:@selector(unpause)];
        CCMenu* pauseMenu = [CCMenu menuWithItems:pauseButton, nil];
        [pauseMenu setPosition:ccp(480-8-16, 320-8-16)];
        [pauseLayer addChild:pauseMenu];
        
        CCMenuItemImage* newgameMenuItem = [CCMenuItemImage itemFromNormalImage:@"back.png" selectedImage:@"back2.png" target:self selector:@selector(mainmenu)];
        CCMenu* myMenu = [CCMenu menuWithItems:newgameMenuItem, nil];
        myMenu.position = ccp(240, 60);
        [pauseLayer addChild:myMenu];
        
        [[[CCDirector sharedDirector] runningScene] addChild:pauseLayer];
    }
}

- (void)unpause
{
    [[[CCDirector sharedDirector] runningScene] removeChild:shadedLayer cleanup:YES];
    [[[CCDirector sharedDirector] runningScene] removeChild:pauseLayer cleanup:YES];
    
    shadedLayer = nil;
    pauseLayer = nil;
    
    [self resumeSchedulerAndActions];
}

- (void)mainmenu
{
    [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]];
}

- (void)setScore:(int)m_score
{
    score = m_score;
    
    [scoreLabel setString:[NSString stringWithFormat:@"Score: %d", score]];
}

- (void)setLives:(int)m_lives
{
    lives = m_lives;
    
    [livesLabel setString:[NSString stringWithFormat:@"Lives: %d", lives]];
}

- (void)scheduleDelayedAction:(void(^)(void))m_delayedAction delay:(float)delay
{
    delayedAction = Block_copy([m_delayedAction retain]);
    
    [self schedule:@selector(runDelayedAction) interval:delay];
}

- (void)runDelayedAction
{
    [self unschedule:@selector(runDelayedAction)];
    
    delayedAction();
    [delayedAction release];
    delayedAction = nil;
}

- (void)dealloc
{
    [objects release];
    [cart release];
    [super dealloc];
}

@end