From 1cdf1d1424d869a2969fc2a1859e337086f086d5 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Mon, 5 Sep 2011 13:22:38 -0400 Subject: Prevented objects from spawning directly above you on the wave in Jump Closes #216 --- Classes/JumpGameMode.m | 68 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index 7299160..13294c3 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m @@ -328,7 +328,31 @@ } } - int objectX = arc4random()%448+16; + int objectX; + + CGSize first = [cart.sprite boundingBox].size; + CGSize second = [object.sprite boundingBox].size; + + for (;;) + { + objectX = arc4random()%448+16; + + if (waterTick == 0) + { + break; + } + + if (cart.sprite.position.x > (objectX - second.width/2 - first.width/2)) + { + if (cart.sprite.position.x < (objectX + second.width/2 + first.width/2)) + { + continue; + } + } + + break; + } + object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; @@ -342,7 +366,26 @@ { object = [[Rock alloc] init]; - objectX = arc4random()%448+16; + for (;;) + { + objectX = arc4random()%448+16; + + if (waterTick == 0) + { + break; + } + + if (cart.sprite.position.x > (objectX - second.width/2 - first.width/2)) + { + if (cart.sprite.position.x < (objectX + second.width/2 + first.width/2)) + { + continue; + } + } + + break; + } + object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; @@ -358,7 +401,26 @@ { object = [[Rock alloc] init]; - objectX = arc4random()%448+16; + for (;;) + { + objectX = arc4random()%448+16; + + if (waterTick == 0) + { + break; + } + + if (cart.sprite.position.x > (objectX - second.width/2 - first.width/2)) + { + if (cart.sprite.position.x < (objectX + second.width/2 + first.width/2)) + { + continue; + } + } + + break; + } + object.sprite.position = ccp(objectX, 360); object.sprite.scale = 1; [self addChild:object.sprite]; -- cgit 1.4.1