From 5ccc4fc305f502a552b1ac7e815e576c93a8159a Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sat, 10 Sep 2011 14:33:27 -0400 Subject: Jump: Allowed cart to be pushed off side of screen when below ledges Closes #227 --- Classes/Cart.h | 2 ++ Classes/Cart.m | 11 +++++++++-- Classes/JumpGameMode.m | 13 ++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Classes/Cart.h b/Classes/Cart.h index 302e5ec..1058025 100644 --- a/Classes/Cart.h +++ b/Classes/Cart.h @@ -16,12 +16,14 @@ BOOL immobile; id delegate; BOOL falling; + BOOL boundedByScreen; } @property (readonly) CCSprite* sprite; @property (assign) BOOL immobile; @property (nonatomic,retain) id delegate; @property (assign) BOOL falling; +@property (assign) BOOL boundedByScreen; - (id)initWithSprite:(CCSprite*)sprite; - (void)tick; - (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration; diff --git a/Classes/Cart.m b/Classes/Cart.m index cfe7ee7..0344bdf 100644 --- a/Classes/Cart.m +++ b/Classes/Cart.m @@ -10,7 +10,7 @@ @implementation Cart -@synthesize sprite, immobile, delegate, falling; +@synthesize sprite, immobile, delegate, falling, boundedByScreen; - (id)initWithSprite:(CCSprite*)m_sprite { @@ -21,6 +21,7 @@ sprite = m_sprite; immobile = NO; falling = NO; + boundedByScreen = YES; } return self; @@ -32,7 +33,13 @@ { // 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 (boundedByScreen) + { + sprite.position = ccp(MIN(MAX(sprite.position.x+accelX, 16),464), sprite.position.y); + } else { + sprite.position = ccp(sprite.position.x+accelX, sprite.position.y); + } if ((delegate != nil) && ([delegate respondsToSelector:@selector(cartIsObstructed:)])) { diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index e4f3c8b..15b0e16 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m @@ -179,13 +179,24 @@ [super tick:dt]; + if ((cart.sprite.position.y < 86) && (cart.boundedByScreen)) + { + cart.boundedByScreen = NO; + } + if (cart.sprite.position.y == (0-cart.sprite.boundingBox.size.height/2)) { [self setLives:self.lives-1]; + cart.boundedByScreen = YES; [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Damage1" ofType:@"wav"]]; - cart.sprite.position = ccp(cart.sprite.position.x, 320 + cart.sprite.boundingBox.size.height/2); + if (cart.sprite.position.x < cart.sprite.boundingBox.size.width/2) + { + cart.sprite.position = ccp(cart.sprite.boundingBox.size.width, 320 + cart.sprite.boundingBox.size.height/2); + } else { + cart.sprite.position = ccp(cart.sprite.position.x, 320 + cart.sprite.boundingBox.size.height/2); + } } if (lives <= 0) -- cgit 1.4.1