From c5edc8808e9f9dbb1daeda760ba74ef0cf2e9dce Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sat, 10 Sep 2011 10:25:25 -0400 Subject: Modified behavior of falling objects in Jump Also increased the distance between ledges as the game goes on, and changed the sound point multipliers make when you catch them. Closes #221, #223 --- Classes/JumpGameMode.m | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'Classes/JumpGameMode.m') diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index 9076426..14cd365 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m @@ -30,6 +30,8 @@ @end +// FallingObject flag 0 is whether the object is floating in water + @implementation JumpGameMode - (id)init @@ -116,24 +118,55 @@ } } + NSMutableSet* discardedObjects = [NSMutableSet set]; for (FallingObject* object in objects) { - if (waterTick > 0) + if ((object.sprite.position.y < 86) && (![object flag:0])) + { + for (CCSprite* ledge in ledges) + { + CGSize first = [object.sprite boundingBox].size; + CGSize second = [ledge boundingBox].size; + + if (object.sprite.position.x > (ledge.position.x - second.width/2 - first.width/2)) + { + if (object.sprite.position.x < (ledge.position.x + second.width/2 + first.width/2)) + { + if (object.sprite.position.y > (ledge.position.y - second.height/2 - first.height/2)) + { + if (object.sprite.position.y < (ledge.position.y + second.height/2 + first.height/2)) + { + [discardedObjects addObject:object]; + } + } + } + } + } + } + + if ((waterTick >= 180) || ([object flag:0])) { 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) { int ledgeWidth = arc4random() % 9 + 1; + int ledgeDistance = arc4random() % (ledgeScrollSpeed*ledgeScrollSpeed+1)*3/2; CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:ledgeWidth height:2]]; CCSprite* ledge = [CCSprite spriteWithTexture:texture]; - ledge.position = ccp(rightmost + rightwidth + ledge.boundingBox.size.width/2+64, 32); + ledge.position = ccp(rightmost + rightwidth + ledge.boundingBox.size.width/2+64+ledgeDistance, 32); [self addChild:ledge]; [ledges addObject:ledge]; [texture release]; -- cgit 1.4.1