summary refs log blame commit diff stats
path: root/Classes/GameModeSelectionLayer.m
blob: 9875d414d7d60f86e40c910c2e83f2576af9a989 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13











                                                    
                           























                                                                            
                                                  
                                                                         



                                                                                                                                                        
                                            
        
                                                     

                                                                                          
                          



                                                                                                                             
                                                                      
                 
            
                                                                                                                                    
                














                                                                                                                                                          
         









                                                                                                                                                                      








                                                                                                                                                                 




                                              



                                                                     












                                                                                        
    
//
//  GameModeSelectionLayer.m
//  Cartographic
//
//  Created by Starla Insigna on 8/18/11.
//  Copyright 2011 Four Island. All rights reserved.
//

#import "GameModeSelectionLayer.h"
#import "GameModeSelection.h"
#import <sqlite3.h>
#import "Cart_CollectAppDelegate.h"
#import "MainMenuLayer.h"
#import "TutorialMode.h"
#import "ClassicGameMode.h"

@implementation GameModeSelectionLayer

+ (CCScene*)scene
{
    CCScene* scene = [CCScene node];
    
    CCLayer* backgroundLayer = [[[CCLayer alloc] init] autorelease];
    CCSprite* backgroundImage = [CCSprite spriteWithFile:@"paintdaubs.png"];
    backgroundImage.position = ccp(240,160);
    [backgroundLayer addChild:backgroundImage];
    [scene addChild:backgroundLayer];
	
	GameModeSelectionLayer* layer = [GameModeSelectionLayer node];
	[scene addChild:layer];
	
	return scene;
}

- (id)init
{
    self = [super init];
    
    if (nil != self)
    {
        gameModes = [[NSMutableArray alloc] init];
        CCMenu* menu = [CCMenu menuWithItems:nil];
        NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
        float onePanelWide = 128;
        
        GameModeSelection* tutorialSelection = [GameModeSelection selectionWithName:@"Tutorial" location:@"Florence" filename:@"florence" unlocked:YES];
        [gameModes addObject:tutorialSelection];
        
        GameModeSelection* collectSelection;
        
        if ([defaults boolForKey:@"hasDoneTutorial"])
        {
            const char* sqlQuery = "SELECT * FROM highscores ORDER BY score DESC LIMIT 1";
            sqlite3_stmt* compiled_statement;
            int score = 0;
            
            if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
            {
                if (sqlite3_step(compiled_statement) == SQLITE_ROW)
                {
                    score = sqlite3_column_int(compiled_statement, 2);
                }
            }
            
            collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" highscore:score];
        } else {
            collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" unlockCondition:@"Beat the tutorial!"];
        }
        
        [gameModes addObject:collectSelection];
        
        float padding = 15;
        float totalPanelWidth = onePanelWide + padding*2;
        float numberOfPanels = [gameModes count];
        float totalWidth = numberOfPanels * totalPanelWidth;
        int currentWorldOffset = [defaults integerForKey:@"lastSelectedMode"];
        CCLayer* panels = [CCLayer node];
        
        for (GameModeSelection* gameMode in gameModes)
        {
            [gameMode setDelegate:self];
            [menu addChild:gameMode];
        }
        
        [menu alignItemsHorizontallyWithPadding:padding*2];
        [panels addChild:menu];
        [self addChild:panels];
        
        menu.position = ccpAdd(menu.position, ccp(totalWidth/2 - totalPanelWidth/2, 320));
        touchDelegatingView = [[TouchDelegatingView alloc] initWithFrame:CGRectMake(0, 0, 480, 320)];
        scrollView = [[CocosOverlayScrollView alloc] initWithFrame:CGRectMake(0, 0, totalPanelWidth, 320) numPages:numberOfPanels width:totalPanelWidth layer:panels];
        touchDelegatingView.scrollView = scrollView;
        [scrollView setContentOffset:CGPointMake(currentWorldOffset*totalPanelWidth+1,0) animated:NO];
        [[[CCDirector sharedDirector] openGLView] addSubview:touchDelegatingView];
        [[[CCDirector sharedDirector] openGLView] addSubview:scrollView];
        
        CCMenuItemImage* newgameMenuItem = [CCMenuItemImage itemFromNormalImage:@"back.png" selectedImage:@"back2.png" target:self selector:@selector(mainmenu)];
        CCMenu* myMenu = [CCMenu menuWithItems:newgameMenuItem, nil];
        myMenu.position = ccp(240, 30);
        [self addChild:myMenu];
    }
    
    return self;
}

- (void)onExit
{
    [touchDelegatingView removeFromSuperview];
    [scrollView removeFromSuperview];
}

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

- (void)didSelectGameMode:(GameModeSelection *)gameMode
{
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    [defaults setInteger:[gameModes indexOfObject:gameMode] forKey:@"lastSelectedMode"];
    
    if ([gameMode.name isEqual:@"Tutorial"])
    {
        [[CCDirector sharedDirector] replaceScene:[TutorialMode scene]];
    } else if ([gameMode.name isEqual:@"Collect"])
    {
        [[CCDirector sharedDirector] replaceScene:[ClassicGameMode scene]];
    }
}

@end