summary refs log tree commit diff stats
path: root/Classes
diff options
context:
space:
mode:
Diffstat (limited to 'Classes')
-rwxr-xr-xClasses/FallingObject.h3
-rwxr-xr-xClasses/FallingObject.m10
-rw-r--r--Classes/JumpGameMode.m37
-rw-r--r--Classes/PointMultiplier.m2
4 files changed, 49 insertions, 3 deletions
diff --git a/Classes/FallingObject.h b/Classes/FallingObject.h index 3e28903..d3ac638 100755 --- a/Classes/FallingObject.h +++ b/Classes/FallingObject.h
@@ -14,6 +14,7 @@
14 CCSprite* sprite; 14 CCSprite* sprite;
15 int weight; 15 int weight;
16 id<FallingObjectDelegate> delegate; 16 id<FallingObjectDelegate> delegate;
17 BOOL flags[4];
17} 18}
18 19
19@property (readonly) CCSprite* sprite; 20@property (readonly) CCSprite* sprite;
@@ -23,5 +24,7 @@
23- (BOOL)tick; 24- (BOOL)tick;
24- (void)collideWithCart; 25- (void)collideWithCart;
25- (void)collideWithFloor; 26- (void)collideWithFloor;
27- (BOOL)flag:(int)flag;
28- (void)setFlag:(int)flag withValue:(BOOL)value;
26 29
27@end 30@end
diff --git a/Classes/FallingObject.m b/Classes/FallingObject.m index 85ea902..86edd15 100755 --- a/Classes/FallingObject.m +++ b/Classes/FallingObject.m
@@ -93,6 +93,16 @@
93 93
94} 94}
95 95
96- (BOOL)flag:(int)flag
97{
98 return flags[flag];
99}
100
101- (void)setFlag:(int)flag withValue:(BOOL)value
102{
103 flags[flag] = value;
104}
105
96- (void)dealloc 106- (void)dealloc
97{ 107{
98 [sprite.parent removeChild:sprite cleanup:YES]; 108 [sprite.parent removeChild:sprite cleanup:YES];
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 @@
30 30
31@end 31@end
32 32
33// FallingObject flag 0 is whether the object is floating in water
34
33@implementation JumpGameMode 35@implementation JumpGameMode
34 36
35- (id)init 37- (id)init
@@ -116,24 +118,55 @@
116 } 118 }
117 } 119 }
118 120
121 NSMutableSet* discardedObjects = [NSMutableSet set];
119 for (FallingObject* object in objects) 122 for (FallingObject* object in objects)
120 { 123 {
121 if (waterTick > 0) 124 if ((object.sprite.position.y < 86) && (![object flag:0]))
125 {
126 for (CCSprite* ledge in ledges)
127 {
128 CGSize first = [object.sprite boundingBox].size;
129 CGSize second = [ledge boundingBox].size;
130
131 if (object.sprite.position.x > (ledge.position.x - second.width/2 - first.width/2))
132 {
133 if (object.sprite.position.x < (ledge.position.x + second.width/2 + first.width/2))
134 {
135 if (object.sprite.position.y > (ledge.position.y - second.height/2 - first.height/2))
136 {
137 if (object.sprite.position.y < (ledge.position.y + second.height/2 + first.height/2))
138 {
139 [discardedObjects addObject:object];
140 }
141 }
142 }
143 }
144 }
145 }
146
147 if ((waterTick >= 180) || ([object flag:0]))
122 { 148 {
123 object.sprite.position = ccp(object.sprite.position.x, MAX(object.sprite.position.y, water.position.y+80+11)); 149 object.sprite.position = ccp(object.sprite.position.x, MAX(object.sprite.position.y, water.position.y+80+11));
124 } else { 150 } else {
125 object.sprite.position = ccp(object.sprite.position.x-ledgeScrollSpeed, object.sprite.position.y); 151 object.sprite.position = ccp(object.sprite.position.x-ledgeScrollSpeed, object.sprite.position.y);
126 } 152 }
153
154 if ((waterTick > 0) && (object.sprite.position.y <= (water.position.y+80+11)))
155 {
156 [object setFlag:0 withValue:YES];
157 }
127 } 158 }
128 159
129 [ledges minusSet:discardedSet]; 160 [ledges minusSet:discardedSet];
161 [objects minusSet:discardedObjects];
130 162
131 if (rightmost <= 480) 163 if (rightmost <= 480)
132 { 164 {
133 int ledgeWidth = arc4random() % 9 + 1; 165 int ledgeWidth = arc4random() % 9 + 1;
166 int ledgeDistance = arc4random() % (ledgeScrollSpeed*ledgeScrollSpeed+1)*3/2;
134 CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:ledgeWidth height:2]]; 167 CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:ledgeWidth height:2]];
135 CCSprite* ledge = [CCSprite spriteWithTexture:texture]; 168 CCSprite* ledge = [CCSprite spriteWithTexture:texture];
136 ledge.position = ccp(rightmost + rightwidth + ledge.boundingBox.size.width/2+64, 32); 169 ledge.position = ccp(rightmost + rightwidth + ledge.boundingBox.size.width/2+64+ledgeDistance, 32);
137 [self addChild:ledge]; 170 [self addChild:ledge];
138 [ledges addObject:ledge]; 171 [ledges addObject:ledge];
139 [texture release]; 172 [texture release];
diff --git a/Classes/PointMultiplier.m b/Classes/PointMultiplier.m index a14bf68..0a9649d 100644 --- a/Classes/PointMultiplier.m +++ b/Classes/PointMultiplier.m
@@ -30,7 +30,7 @@
30 GameMode* gameLayer = ((GameMode*) sprite.parent); 30 GameMode* gameLayer = ((GameMode*) sprite.parent);
31 [gameLayer setPointMultiplier:gameLayer.pointMultiplier+1]; 31 [gameLayer setPointMultiplier:gameLayer.pointMultiplier+1];
32 32
33 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Item1" ofType:@"wav"]]; 33 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Absorption2" ofType:@"wav"]];
34} 34}
35 35
36@end 36@end