// // JumpGameMode.m // Cart Collect // // Created by Starla Insigna on 8/17/11. // Copyright 2011 Four Island. All rights reserved. // #import "JumpGameMode.h" #define kMinimumGestureLength 25 #define kMaximumVariance 5 @implementation JumpGameMode - (id)init { self = [super init]; if (nil != self) { water = [CCSprite spriteWithFile:@"water.png"]; water.position = ccp(240, -80); [self addChild:water]; self.isTouchEnabled = YES; waterTick = 0; wave = NO; } return self; } - (void)onEnterTransitionDidFinish { [super onEnterTransitionDidFinish]; [self scheduleDelayedAction:^{ wave = YES; } delay:3.0f]; } - (void)tick:(ccTime)dt { [super tick:dt]; if (wave) { waterTick++; water.position = ccp(240, 160 * sin(waterTick / (36 * M_PI)) - 80); if (waterTick == 180) { wave = NO; [self scheduleDelayedAction:^{ wave = YES; } delay:10.0f]; } else if (waterTick == 360) { wave = NO; waterTick = 0; } } if (jump) { jumpTick++; cart.sprite.position = ccp(cart.sprite.position.x, MAX(100 * sin(jumpTick / (2 * M_PI)) + 22, water.position.y+80+11)); if (jumpTick == 20) { jump = NO; jumpTick = 0; } } else { cart.sprite.position = ccp(cart.sprite.position.x, MAX(22, water.position.y+80+11)); } } - (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* touch = [touches anyObject]; gestureStartPoint = [touch locationInView:nil]; } - (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* touch = [touches anyObject]; CGPoint gestureCurrentPosition = [touch locationInView:nil]; CGFloat deltaX = fabsf(gestureStartPoint.x - gestureCurrentPosition.x); CGFloat deltaY = fabsf(gestureStartPoint.y - gestureCurrentPosition.y); if ((deltaX >= kMinimumGestureLength) && (deltaY <= kMaximumVariance*swipeVarianceModifer) && (cart.sprite.position.y == 22)) { jump = YES; } } - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { [super accelerometer:accelerometer didAccelerate:acceleration]; swipeVarianceModifer = MAX(1,(fabsf(acceleration.y) * 480)/kMaximumVariance); } @end