summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Classes/GameMode.h10
-rw-r--r--Classes/GameMode.m60
-rw-r--r--Classes/JumpGameMode.h4
-rw-r--r--Classes/JumpGameMode.m19
4 files changed, 62 insertions, 31 deletions
diff --git a/Classes/GameMode.h b/Classes/GameMode.h index e208d49..ae3fbe5 100644 --- a/Classes/GameMode.h +++ b/Classes/GameMode.h
@@ -15,7 +15,7 @@
15#define GAME_SCENE 436 15#define GAME_SCENE 436
16#define GAME_LAYER 437 16#define GAME_LAYER 437
17 17
18@interface GameMode : CCLayer <UIAlertViewDelegate, CartDelegate> { 18@interface GameMode : CCLayer <UIAlertViewDelegate, CartDelegate, CCStandardTouchDelegate> {
19 NSMutableSet* objects; 19 NSMutableSet* objects;
20 int score; 20 int score;
21 int lives; 21 int lives;
@@ -23,19 +23,23 @@
23 Cart* cart; 23 Cart* cart;
24 FallingObjectFactory* objectFactory; 24 FallingObjectFactory* objectFactory;
25 25
26 CCLayerColor* willPauseLayer;
26 CCLayerColor* shadedLayer; 27 CCLayerColor* shadedLayer;
27 CCLayer* pauseLayer; 28 CCLayer* pauseLayer;
29 BOOL isPaused;
30 BOOL isPausing;
28 31
29 CCLabelBMFont* scoreLabel; 32 CCLabelBMFont* scoreLabel;
30 CCLabelBMFont* livesLabel; 33 CCLabelBMFont* livesLabel;
31 34
32 void (^delayedAction)(void); 35 void (^delayedAction)(void);
33 36
34 BOOL isPaused;
35
36 BOOL hasGyroscope; 37 BOOL hasGyroscope;
37 double pitch; 38 double pitch;
38 CMMotionManager* motionManager; 39 CMMotionManager* motionManager;
40
41 BOOL isGesturing;
42 CGPoint gestureStartPoint;
39} 43}
40 44
41@property (readonly) Cart* cart; 45@property (readonly) Cart* cart;
diff --git a/Classes/GameMode.m b/Classes/GameMode.m index 49d0053..ca269cd 100644 --- a/Classes/GameMode.m +++ b/Classes/GameMode.m
@@ -42,14 +42,6 @@
42 42
43 objectFactory = [[FallingObjectFactory alloc] init]; 43 objectFactory = [[FallingObjectFactory alloc] init];
44 44
45 if ([self canPause])
46 {
47 CCMenuItemImage* pauseButton = [CCMenuItemImage itemFromNormalImage:@"pause2.png" selectedImage:@"pause.png" target:self selector:@selector(pause)];
48 CCMenu* pauseMenu = [CCMenu menuWithItems:pauseButton, nil];
49 [pauseMenu setPosition:ccp(480-8-16, 320-8-16)];
50 [self addChild:pauseMenu];
51 }
52
53 isPaused = NO; 45 isPaused = NO;
54 46
55 Class cmClass = (NSClassFromString(@"CMMotionManager")); 47 Class cmClass = (NSClassFromString(@"CMMotionManager"));
@@ -71,6 +63,8 @@
71 isAccelerometerEnabled_ = YES; 63 isAccelerometerEnabled_ = YES;
72 hasGyroscope = NO; 64 hasGyroscope = NO;
73 } 65 }
66
67 self.isTouchEnabled = YES;
74 } 68 }
75 69
76 return self; 70 return self;
@@ -262,6 +256,56 @@
262 [cart deviceDidRotate:pitch]; 256 [cart deviceDidRotate:pitch];
263} 257}
264 258
259- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
260{
261 if ((!isPaused) && (!isGesturing) && ([self canPause]))
262 {
263 UITouch* touch = [touches anyObject];
264 gestureStartPoint = [touch locationInView:nil];
265 isGesturing = YES;
266
267 if (gestureStartPoint.x > 160)
268 {
269 isPausing = YES;
270
271 willPauseLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 63) width:480 height:160];
272 willPauseLayer.position = ccp(0, 160);
273 [[[CCDirector sharedDirector] runningScene] addChild:willPauseLayer];
274 }
275 }
276}
277
278- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
279{
280 if (isGesturing && isPausing)
281 {
282 UITouch* touch = [touches anyObject];
283 CGPoint gestureCurrentPosition = [touch locationInView:nil];
284 CGFloat distance = sqrt(powf((gestureCurrentPosition.x - gestureStartPoint.x),2) + powf((gestureCurrentPosition.y - gestureStartPoint.y),2));
285
286 if (distance > 2)
287 {
288 [[[CCDirector sharedDirector] runningScene] removeChild:willPauseLayer cleanup:YES];
289 willPauseLayer = nil;
290 isPausing = NO;
291 }
292 }
293}
294
295- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
296{
297 if (isPausing)
298 {
299 [[[CCDirector sharedDirector] runningScene] removeChild:willPauseLayer cleanup:YES];
300 willPauseLayer = nil;
301 isPausing = NO;
302
303 [self pause];
304 }
305
306 isGesturing = NO;
307}
308
265- (void)dealloc 309- (void)dealloc
266{ 310{
267 [objects release]; 311 [objects release];
diff --git a/Classes/JumpGameMode.h b/Classes/JumpGameMode.h index b18fd5a..a09bbea 100644 --- a/Classes/JumpGameMode.h +++ b/Classes/JumpGameMode.h
@@ -11,12 +11,10 @@
11 11
12@class LedgeFactory; 12@class LedgeFactory;
13 13
14@interface JumpGameMode : GameMode <CCStandardTouchDelegate, FallingObjectDelegate> { 14@interface JumpGameMode : GameMode <FallingObjectDelegate> {
15 CCSprite* water; 15 CCSprite* water;
16 int waterTick; 16 int waterTick;
17 BOOL wave; 17 BOOL wave;
18 BOOL isGesturing;
19 CGPoint gestureStartPoint;
20 int jumpTick; 18 int jumpTick;
21 BOOL jump; 19 BOOL jump;
22 float expectedAngle; 20 float expectedAngle;
diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index f3e690c..f0cb469 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m
@@ -83,8 +83,6 @@ static GameModeInfo* info;
83 cart.falling = YES; 83 cart.falling = YES;
84 cart.delegate = self; 84 cart.delegate = self;
85 85
86 self.isTouchEnabled = YES;
87
88 waterTick = 0; 86 waterTick = 0;
89 wave = NO; 87 wave = NO;
90 88
@@ -279,18 +277,10 @@ static GameModeInfo* info;
279 } 277 }
280} 278}
281 279
282- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
283{
284 if ((!isPaused) && (!isGesturing))
285 {
286 UITouch* touch = [touches anyObject];
287 gestureStartPoint = [touch locationInView:nil];
288 isGesturing = YES;
289 }
290}
291
292- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 280- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
293{ 281{
282 [super ccTouchesMoved:touches withEvent:event];
283
294 if (isGesturing) 284 if (isGesturing)
295 { 285 {
296 UITouch* touch = [touches anyObject]; 286 UITouch* touch = [touches anyObject];
@@ -306,11 +296,6 @@ static GameModeInfo* info;
306 } 296 }
307} 297}
308 298
309- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
310{
311 isGesturing = NO;
312}
313
314- (int)cartShouldFall:(Cart *)m_cart 299- (int)cartShouldFall:(Cart *)m_cart
315{ 300{
316 int bottom = 0-m_cart.sprite.boundingBox.size.height/2; 301 int bottom = 0-m_cart.sprite.boundingBox.size.height/2;