From 339f8e2cb2fce18f6d32b3881a5cd390c0be488e Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sun, 4 Sep 2011 11:17:44 -0400 Subject: Implemented Jump mode (BETA) Dear god this is beta. I think I'll release a build for the testers soon so I can see what people think and then hammer out the bugs. Refs #204 --- Classes/Cart.m | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'Classes/Cart.m') diff --git a/Classes/Cart.m b/Classes/Cart.m index 45c370c..cfe7ee7 100644 --- a/Classes/Cart.m +++ b/Classes/Cart.m @@ -10,7 +10,7 @@ @implementation Cart -@synthesize sprite, immobile; +@synthesize sprite, immobile, delegate, falling; - (id)initWithSprite:(CCSprite*)m_sprite { @@ -20,6 +20,7 @@ { sprite = m_sprite; immobile = NO; + falling = NO; } return self; @@ -30,7 +31,27 @@ if (!immobile) { // Move the cart based on acceleration gathered from accelerometer + CGPoint prevLoc = sprite.position; sprite.position = ccp(MIN(MAX(sprite.position.x+accelX, 16),464), sprite.position.y); + + if ((delegate != nil) && ([delegate respondsToSelector:@selector(cartIsObstructed:)])) + { + if ([delegate cartIsObstructed:self]) + { + sprite.position = prevLoc; + } + } + + if (falling) + { + if ((delegate != nil) && ([delegate respondsToSelector:@selector(cartShouldFall:)])) + { + int bottom = [delegate cartShouldFall:self]; + sprite.position = ccp(sprite.position.x, MAX(bottom, sprite.position.y-6)); + } else { + NSLog(@"Falling is set on a cart without a compatible game mode."); + } + } } } -- cgit 1.4.1