blob: 9875d414d7d60f86e40c910c2e83f2576af9a989 (
plain) (
tree)
|
|
//
// 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
|