From d19677f9f73d8fe7436982bdf8d40f69d69d1b43 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Fri, 12 Aug 2011 09:51:50 -0400 Subject: Added tutorial mode GameLayer was also renamed to ClassicGameMode and its pause functionality and score/lives counters were moved out to GameMode. FallingObjectDelegate was created to allow for custom code to be run when items were caught/missed, something that is used extensively by tutorial mode. Important: Cart Collect's bundle identifier was changed in this revision from com.fourisland.Cart-Collect to com.apatheticink.Cart-Collect, so ensure that before attempting to compile/run this build, you clear your build directory and remove the old version of Cart Collect from your device. Closes #193 --- Classes/ClassicGameMode.m | 166 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100755 Classes/ClassicGameMode.m (limited to 'Classes/ClassicGameMode.m') diff --git a/Classes/ClassicGameMode.m b/Classes/ClassicGameMode.m new file mode 100755 index 0000000..eb766a1 --- /dev/null +++ b/Classes/ClassicGameMode.m @@ -0,0 +1,166 @@ +// +// 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 "GameOverLayer.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:[GameOverLayer 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 -- cgit 1.4.1