// // GameLayer.m // Cart Collect // // Created by iD Student Account on 7/18/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "ClassicGameMode.h" #import "FallingObject.h" #import "Cherry.h" #import "Bottle.h" #import "OneUp.h" #import "Rock.h" #import "GameOverScene.h" #import "SimpleAudioEngine.h" @implementation ClassicGameMode - (void)tick:(ccTime)dt { int lastScore = score; [super tick:dt]; if (lives == 0) { [self unscheduleAllSelectors]; [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score]]]; } else if (score > lastScore) { if ((lastScore < 6500) && (score >= 6500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.6f]; addSpeed = 0.6f; } else if ((lastScore < 4500) && (score >= 4500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.7f]; addSpeed = 0.7f; } else if ((lastScore < 2500) && (score >= 2500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.8f]; addSpeed = 0.8f; } else if ((lastScore < 1500) && (score >= 1500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.9f]; addSpeed = 0.9f; } else if ((lastScore < 500) && (score >= 500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:1.0f]; addSpeed = 1.0f; } else if ((lastScore < 150) && (score >= 150)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:2.0f]; addSpeed = 2.0f; } } } - (void)randomlyAddObject:(ccTime)dt { FallingObject* object; int oneuppercent = 98 - (lives == 1 ? 1 : 0); if (score < 1000) { int randomval = arc4random()%100; if (randomval < 65) { object = [[Cherry alloc] init]; } else if (randomval < oneuppercent) { object = [[Bottle alloc] init]; } else { object = [[OneUp alloc] init]; } } else { int randomval = arc4random()%100; if (randomval < 40) { object = [[Cherry alloc] init]; } else if (randomval < 70) { object = [[Rock alloc] init]; } else if (randomval < oneuppercent) { object = [[Bottle alloc] init]; } else { object = [[OneUp alloc] init]; } } int objectX = arc4random()%448+16; object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; [objects addObject:object]; [object release]; if (score >= 2000) { if (arc4random() % 100 > 80) { object = [[Rock alloc] init]; objectX = arc4random()%448+16; object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; [objects addObject:object]; [object release]; } } if (score >= 4000) { if (arc4random() % 100 > 80) { object = [[Rock alloc] init]; objectX = arc4random()%448+16; object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; [objects addObject:object]; [object release]; } } } - (id)init { self = [super init]; if (nil != self) { CCSprite* backgroundImage = [CCSprite spriteWithFile:@"SeaBeach.png"]; backgroundImage.position = ccp(240, 160); [self addChild:backgroundImage z:-1]; addSpeed = 2.5f; } return self; } - (void)onEnterTransitionDidFinish { [super onEnterTransitionDidFinish]; [self schedule:@selector(randomlyAddObject:) interval:addSpeed]; } @end