diff options
Diffstat (limited to 'Classes/Cart.m')
| -rw-r--r-- | Classes/Cart.m | 23 |
1 files changed, 22 insertions, 1 deletions
| 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 @@ | |||
| 10 | 10 | ||
| 11 | @implementation Cart | 11 | @implementation Cart |
| 12 | 12 | ||
| 13 | @synthesize sprite, immobile; | 13 | @synthesize sprite, immobile, delegate, falling; |
| 14 | 14 | ||
| 15 | - (id)initWithSprite:(CCSprite*)m_sprite | 15 | - (id)initWithSprite:(CCSprite*)m_sprite |
| 16 | { | 16 | { |
| @@ -20,6 +20,7 @@ | |||
| 20 | { | 20 | { |
| 21 | sprite = m_sprite; | 21 | sprite = m_sprite; |
| 22 | immobile = NO; | 22 | immobile = NO; |
| 23 | falling = NO; | ||
| 23 | } | 24 | } |
| 24 | 25 | ||
| 25 | return self; | 26 | return self; |
| @@ -30,7 +31,27 @@ | |||
| 30 | if (!immobile) | 31 | if (!immobile) |
| 31 | { | 32 | { |
| 32 | // Move the cart based on acceleration gathered from accelerometer | 33 | // Move the cart based on acceleration gathered from accelerometer |
| 34 | CGPoint prevLoc = sprite.position; | ||
| 33 | sprite.position = ccp(MIN(MAX(sprite.position.x+accelX, 16),464), sprite.position.y); | 35 | sprite.position = ccp(MIN(MAX(sprite.position.x+accelX, 16),464), sprite.position.y); |
| 36 | |||
| 37 | if ((delegate != nil) && ([delegate respondsToSelector:@selector(cartIsObstructed:)])) | ||
| 38 | { | ||
| 39 | if ([delegate cartIsObstructed:self]) | ||
| 40 | { | ||
| 41 | sprite.position = prevLoc; | ||
| 42 | } | ||
| 43 | } | ||
| 44 | |||
| 45 | if (falling) | ||
| 46 | { | ||
| 47 | if ((delegate != nil) && ([delegate respondsToSelector:@selector(cartShouldFall:)])) | ||
| 48 | { | ||
| 49 | int bottom = [delegate cartShouldFall:self]; | ||
| 50 | sprite.position = ccp(sprite.position.x, MAX(bottom, sprite.position.y-6)); | ||
| 51 | } else { | ||
| 52 | NSLog(@"Falling is set on a cart without a compatible game mode."); | ||
| 53 | } | ||
| 54 | } | ||
| 34 | } | 55 | } |
| 35 | } | 56 | } |
| 36 | 57 | ||
