diff options
Diffstat (limited to 'Classes')
-rw-r--r-- | Classes/GameMode.h | 3 | ||||
-rw-r--r-- | Classes/GameMode.m | 27 |
2 files changed, 21 insertions, 9 deletions
diff --git a/Classes/GameMode.h b/Classes/GameMode.h index 370550c..890106e 100644 --- a/Classes/GameMode.h +++ b/Classes/GameMode.h | |||
@@ -25,11 +25,14 @@ | |||
25 | CCLabelBMFont* livesLabel; | 25 | CCLabelBMFont* livesLabel; |
26 | 26 | ||
27 | void (^delayedAction)(void); | 27 | void (^delayedAction)(void); |
28 | |||
29 | BOOL isPaused; | ||
28 | } | 30 | } |
29 | 31 | ||
30 | @property (readonly) Cart* cart; | 32 | @property (readonly) Cart* cart; |
31 | @property (nonatomic,assign) int score; | 33 | @property (nonatomic,assign) int score; |
32 | @property (nonatomic,assign) int lives; | 34 | @property (nonatomic,assign) int lives; |
35 | @property (readonly) BOOL isPaused; | ||
33 | + (CCScene*)scene; | 36 | + (CCScene*)scene; |
34 | - (void)tick:(ccTime)dt; | 37 | - (void)tick:(ccTime)dt; |
35 | - (BOOL)canPause; | 38 | - (BOOL)canPause; |
diff --git a/Classes/GameMode.m b/Classes/GameMode.m index 7afbf20..7b07f15 100644 --- a/Classes/GameMode.m +++ b/Classes/GameMode.m | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | @implementation GameMode | 13 | @implementation GameMode |
14 | 14 | ||
15 | @synthesize cart, score, lives; | 15 | @synthesize cart, score, lives, isPaused; |
16 | 16 | ||
17 | + (CCScene*)scene | 17 | + (CCScene*)scene |
18 | { | 18 | { |
@@ -60,6 +60,8 @@ | |||
60 | [pauseMenu setPosition:ccp(480-8-16, 320-8-16)]; | 60 | [pauseMenu setPosition:ccp(480-8-16, 320-8-16)]; |
61 | [self addChild:pauseMenu]; | 61 | [self addChild:pauseMenu]; |
62 | } | 62 | } |
63 | |||
64 | isPaused = NO; | ||
63 | } | 65 | } |
64 | 66 | ||
65 | return self; | 67 | return self; |
@@ -98,8 +100,10 @@ | |||
98 | 100 | ||
99 | - (void)pause | 101 | - (void)pause |
100 | { | 102 | { |
101 | if ([self canPause]) | 103 | if (([self canPause]) && (!isPaused)) |
102 | { | 104 | { |
105 | isPaused = YES; | ||
106 | |||
103 | [self pauseSchedulerAndActions]; | 107 | [self pauseSchedulerAndActions]; |
104 | 108 | ||
105 | shadedLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)]; | 109 | shadedLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)]; |
@@ -126,13 +130,18 @@ | |||
126 | 130 | ||
127 | - (void)unpause | 131 | - (void)unpause |
128 | { | 132 | { |
129 | [[[CCDirector sharedDirector] runningScene] removeChild:shadedLayer cleanup:YES]; | 133 | if (isPaused) |
130 | [[[CCDirector sharedDirector] runningScene] removeChild:pauseLayer cleanup:YES]; | 134 | { |
131 | 135 | [[[CCDirector sharedDirector] runningScene] removeChild:shadedLayer cleanup:YES]; | |
132 | shadedLayer = nil; | 136 | [[[CCDirector sharedDirector] runningScene] removeChild:pauseLayer cleanup:YES]; |
133 | pauseLayer = nil; | 137 | |
134 | 138 | shadedLayer = nil; | |
135 | [self resumeSchedulerAndActions]; | 139 | pauseLayer = nil; |
140 | |||
141 | [self resumeSchedulerAndActions]; | ||
142 | |||
143 | isPaused = NO; | ||
144 | } | ||
136 | } | 145 | } |
137 | 146 | ||
138 | - (void)mainmenu | 147 | - (void)mainmenu |