Skip to content

Commit 426c593

Browse files
committed
Merge branch 'v3.1' into v3.2
2 parents f7e8258 + ab3fe78 commit 426c593

File tree

5 files changed

+48
-6
lines changed

5 files changed

+48
-6
lines changed

cocos2d-ui-tests/tests/CCBMFontTest.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
static NSString *TEST_STRINGS[] = {
1313
@"ABCDEFGHIJKLM\nNOPQRSTUVWXYZ",
1414
@"abcdefghijklm\nnopqrstuvwxyz",
15+
@"first line\u2028second line",
1516
@",.?!;:'\"",
1617
@"()[]{}<>\\|/\n",
1718
@"@#$%^&*+-=_",

cocos2d/CCLabelBMFont.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ -(void) createFontChars
762762
// since the Y position needs to be calcualted before hand
763763
for(NSUInteger i=0; i < stringLen-1;i++) {
764764
unichar c = [_string characterAtIndex:i];
765-
if( c=='\n')
765+
if([[NSCharacterSet newlineCharacterSet] characterIsMember:c])
766766
quantityOfLines++;
767767
}
768768

@@ -776,7 +776,7 @@ -(void) createFontChars
776776
for(NSUInteger i = 0; i<stringLen; i++) {
777777
unichar c = [_string characterAtIndex:i];
778778

779-
if (c == '\n') {
779+
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:c]) {
780780
nextFontPositionX = 0;
781781
nextFontPositionY -= _configuration->_commonHeight;
782782
continue;

cocos2d/CCNode.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,17 @@ A common user pattern in building a Cocos2d game is to subclass CCNode, add it t
530530
*
531531
* @return A newly initialized CCTimer object.
532532
*/
533+
534+
/**
535+
* Schedules a custom selector with an interval time in seconds.
536+
* If the custom selector you pass in is not already scheduled, this method simply schedules it for the first time.
537+
* The difference between this method and the schedule:interval: method is that if the selector passed in this method is already scheduled, calling this method will only adjust the interval on the already scheduled method. In contrast, when you call schedule:interval: on an already scheduled selector, your custom selector will be unscheduled and then rescheduled.
538+
* @param selector Selector to execute.
539+
* @param interval Interval between execution in seconds.
540+
*/
541+
-(CCTimer*)reschedule:(SEL)selector interval:(CCTime)interval;
542+
543+
533544
- (CCTimer *) scheduleOnce:(SEL) selector delay:(CCTime) delay;
534545

535546
/**

cocos2d/CCNode.m

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,6 +1190,32 @@ -(CCTimer *) schedule:(SEL)selector interval:(CCTime)interval
11901190
return [self schedule:selector interval:interval repeat:CCTimerRepeatForever delay:interval];
11911191
}
11921192

1193+
-(CCTimer*)reschedule:(SEL)selector interval:(CCTime)interval
1194+
{
1195+
NSString *selectorName = NSStringFromSelector(selector);
1196+
1197+
CCTimer *currentTimerForSelector = nil;
1198+
1199+
for (CCTimer *timer in [_scheduler timersForTarget:self])
1200+
{
1201+
if([selectorName isEqual:timer.userData])
1202+
{
1203+
CCLOG(@"%@ was already scheduled on %@. Updating interval from %f to %f",NSStringFromSelector(selector),self,timer.repeatInterval,interval);
1204+
timer.repeatInterval = interval;
1205+
currentTimerForSelector = timer;
1206+
break;
1207+
}
1208+
}
1209+
1210+
if (currentTimerForSelector == nil)
1211+
{
1212+
CCLOG(@"%@ was never scheduled. Scheduling for the first time.",selectorName);
1213+
currentTimerForSelector = [self schedule:selector interval:interval];
1214+
}
1215+
1216+
return currentTimerForSelector;
1217+
}
1218+
11931219
-(BOOL)unschedule_private:(SEL)selector
11941220
{
11951221
NSString *selectorName = NSStringFromSelector(selector);

cocos2d/Platforms/iOS/CCAppDelegate.m

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,28 +268,32 @@ - (void) setupCocos2dWithOptions:(NSDictionary*)config
268268
// getting a call, pause the game
269269
-(void) applicationWillResignActive:(UIApplication *)application
270270
{
271-
if( [navController_ visibleViewController] == [CCDirector sharedDirector] )
271+
if([CCDirector sharedDirector].paused == NO) {
272272
[[CCDirector sharedDirector] pause];
273+
}
273274
}
274275

275276
// call got rejected
276277
-(void) applicationDidBecomeActive:(UIApplication *)application
277278
{
278279
[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
279-
if( [navController_ visibleViewController] == [CCDirector sharedDirector] )
280+
if([CCDirector sharedDirector].paused) {
280281
[[CCDirector sharedDirector] resume];
282+
}
281283
}
282284

283285
-(void) applicationDidEnterBackground:(UIApplication*)application
284286
{
285-
if( [navController_ visibleViewController] == [CCDirector sharedDirector] )
287+
if([CCDirector sharedDirector].animating) {
286288
[[CCDirector sharedDirector] stopAnimation];
289+
}
287290
}
288291

289292
-(void) applicationWillEnterForeground:(UIApplication*)application
290293
{
291-
if( [navController_ visibleViewController] == [CCDirector sharedDirector] )
294+
if([CCDirector sharedDirector].animating == NO) {
292295
[[CCDirector sharedDirector] startAnimation];
296+
}
293297
}
294298

295299
// application will be killed

0 commit comments

Comments
 (0)