From f3ea6312f1e0d6a0069c41f71f6f40fdfbd8030a Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sun, 11 Sep 2011 19:55:27 -0400 Subject: Made falling objects on the wave destroy at the ledges Previously, falling objects on the wave floated through the ledges--now they destroy when they touch the ledges just like objects not on the wave. Falling objects also now only fall straight downward if they were dropped while the wave was active. Closes #221 --- Classes/FallingObject.h | 2 -- Classes/FallingObject.m | 10 ---------- Classes/JumpGameMode.m | 29 ++++++++++++++++++++--------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Classes/FallingObject.h b/Classes/FallingObject.h index d3ac638..6cb0c14 100755 --- a/Classes/FallingObject.h +++ b/Classes/FallingObject.h @@ -24,7 +24,5 @@ - (BOOL)tick; - (void)collideWithCart; - (void)collideWithFloor; -- (BOOL)flag:(int)flag; -- (void)setFlag:(int)flag withValue:(BOOL)value; @end diff --git a/Classes/FallingObject.m b/Classes/FallingObject.m index 86edd15..85ea902 100755 --- a/Classes/FallingObject.m +++ b/Classes/FallingObject.m @@ -93,16 +93,6 @@ } -- (BOOL)flag:(int)flag -{ - return flags[flag]; -} - -- (void)setFlag:(int)flag withValue:(BOOL)value -{ - flags[flag] = value; -} - - (void)dealloc { [sprite.parent removeChild:sprite cleanup:YES]; diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index 1e55b48..b192058 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m @@ -30,7 +30,19 @@ @end -// FallingObject flag 0 is whether the object is floating in water +@implementation FallingObject (Flags) + +- (BOOL)fellDuringWave +{ + return flags[0]; +} + +- (void)setFellDuringWave:(BOOL)value +{ + flags[0] = value; +} + +@end @implementation JumpGameMode @@ -118,10 +130,12 @@ } } + [ledges minusSet:discardedSet]; + NSMutableSet* discardedObjects = [NSMutableSet set]; for (FallingObject* object in objects) { - if ((object.sprite.position.y < 86) && (![object flag:0])) + if (object.sprite.position.y < (64+object.sprite.boundingBox.size.height/2)) { for (CCSprite* ledge in ledges) { @@ -144,20 +158,14 @@ } } - if ((waterTick >= 180) || ((waterTick > 0) && ([object flag:0]))) + if (object.fellDuringWave) { object.sprite.position = ccp(object.sprite.position.x, MAX(object.sprite.position.y, water.position.y+80+11)); } else { object.sprite.position = ccp(object.sprite.position.x-ledgeScrollSpeed, object.sprite.position.y); } - - if ((waterTick > 0) && (object.sprite.position.y <= (water.position.y+80+11))) - { - [object setFlag:0 withValue:YES]; - } } - [ledges minusSet:discardedSet]; [objects minusSet:discardedObjects]; if (rightmost <= 480) @@ -396,6 +404,7 @@ object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; + object.fellDuringWave = waterTick > 0; [self addChild:object.sprite]; [objects addObject:object]; @@ -429,6 +438,7 @@ object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; + object.fellDuringWave = waterTick > 0; [self addChild:object.sprite]; [objects addObject:object]; @@ -464,6 +474,7 @@ object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; + object.fellDuringWave = waterTick > 0; [self addChild:object.sprite]; [objects addObject:object]; -- cgit 1.4.1