From 2eaf95c43aa42da3c8f18d96278d7330d6114371 Mon Sep 17 00:00:00 2001 From: Panajev Date: Sun, 21 Oct 2012 12:28:50 +0200 Subject: [PATCH] (x): modernized Objective-C code. --- CCBlade.h | 5 +- CCBlade.m | 85 +++++++++--------- Example/Example.xcodeproj/project.pbxproj | 20 ++--- .../UserInterfaceState.xcuserstate | Bin 32623 -> 15254 bytes Example/Resources/Info.plist | 5 ++ Example/libs/README | 1 - 6 files changed, 54 insertions(+), 62 deletions(-) delete mode 100644 Example/libs/README diff --git a/CCBlade.h b/CCBlade.h index 8e637cc..5e5eafd 100644 --- a/CCBlade.h +++ b/CCBlade.h @@ -37,14 +37,10 @@ inline void CGPointSet(CGPoint *v, float x, float y); inline void f1(CGPoint p1, CGPoint p2, float d, CGPoint *o1, CGPoint *o2); @interface CCBlade : CCNode { - NSMutableArray *path; - unsigned int pointLimit; int count; CGPoint *vertices; CGPoint *coordinates; BOOL reset; - CCTexture2D *_texture; - float width; BOOL _finish; BOOL _willPop; @@ -55,6 +51,7 @@ inline void f1(CGPoint p1, CGPoint p2, float d, CGPoint *o1, CGPoint *o2); @property(strong) CCTexture2D *texture; @property(nonatomic) float width; @property (nonatomic) BOOL autoDim; +@property(nonatomic,strong)NSMutableArray *path; + (id) bladeWithMaximumPoint:(int) limit; - (id) initWithMaximumPoint:(int) limit; diff --git a/CCBlade.m b/CCBlade.m index 73d196d..804b0d5 100644 --- a/CCBlade.m +++ b/CCBlade.m @@ -60,10 +60,6 @@ inline void CGPointSet(CGPoint *v, float x, float y){ } @implementation CCBlade -@synthesize texture = _texture; -@synthesize pointLimit; -@synthesize width; -@synthesize autoDim; + (id) bladeWithMaximumPoint:(int) limit{ return [[self alloc] initWithMaximumPoint:limit]; @@ -74,8 +70,8 @@ + (id) bladeWithMaximumPoint:(int) limit{ - (id) initWithMaximumPoint:(int) limit{ self = [super init]; - pointLimit = limit; - self.width = 5; + _pointLimit = limit; + _width = 5; vertices = (CGPoint *)calloc(2*limit+5, sizeof(vertices[0])); coordinates = (CGPoint *)calloc(2*limit+5, sizeof(coordinates[0])); @@ -83,7 +79,7 @@ - (id) initWithMaximumPoint:(int) limit{ CGPointSet(coordinates+0, 0.00, 0.5); reset = NO; - path = [[NSMutableArray alloc] init]; + _path = [[NSMutableArray alloc] init]; #if USE_UPDATE_FOR_POP popTimeInterval = POP_TIME_INTERVAL; @@ -92,6 +88,8 @@ - (id) initWithMaximumPoint:(int) limit{ [self scheduleUpdateWithPriority:0]; #endif + self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture]; + return self; } @@ -102,40 +100,40 @@ - (void) dealloc{ } - (void) populateVertices{ - vertices[0] = [[path objectAtIndex:0] CGPointValue]; + vertices[0] = [[_path objectAtIndex:0] CGPointValue]; CGPoint pre = vertices[0]; unsigned int i = 0; - CGPoint it = [[path objectAtIndex:1] CGPointValue]; - float dd = width / [path count]; - while (i < [path count] - 2){ - f1(pre, it, width - i * dd , vertices+2*i+1, vertices+2*i+2); + CGPoint it = [[_path objectAtIndex:1] CGPointValue]; + float dd = _width / [_path count]; + while (i < [_path count] - 2){ + f1(pre, it, _width - i * dd , vertices+2*i+1, vertices+2*i+2); CGPointSet(coordinates+2*i+1, .5, 1.0); CGPointSet(coordinates+2*i+2, .5, 0.0); i++; pre = it; - it = [[path objectAtIndex:i+1] CGPointValue]; + it = [[_path objectAtIndex:i+1] CGPointValue]; } CGPointSet(coordinates+1, 0.25, 1.0); CGPointSet(coordinates+2, 0.25, 0.0); - vertices[2*[path count]-3] = it; - CGPointSet(coordinates+2*[path count]-3, 0.75, 0.5); + vertices[2*[_path count]-3] = it; + CGPointSet(coordinates+2*[_path count]-3, 0.75, 0.5); } - (void) shift{ - int index = 2 * pointLimit - 1; + int index = 2 * _pointLimit - 1; for (int i = index; i > 3; i -= 2) { vertices[i] = vertices[i-2]; vertices[i-1] = vertices[i-3]; } } -- (void) setWidth:(float)width_{ - width = width_ ;//* CC_CONTENT_SCALE_FACTOR(); +- (void) set_width:(float)newWidth{ + _width = newWidth ;//* CC_CONTENT_SCALE_FACTOR(); } #define DISTANCE_TO_INTERPOLATE 10 @@ -146,37 +144,34 @@ - (void) push:(CGPoint) v{ if (reset) { return; } - if (CC_CONTENT_SCALE_FACTOR() != 1.0f) { - //v = ccpMult(v, CC_CONTENT_SCALE_FACTOR()); - } #if USE_LAGRANGE - if ([path count] == 0) { - [path insertObject:[NSValue valueWithCGPoint:v] atIndex:0]; + if ([_path count] == 0) { + [_path insertObject:[NSValue valueWithCGPoint:v] atIndex:0]; return; } - CGPoint first = [[path objectAtIndex:0] CGPointValue]; + CGPoint first = [[_path objectAtIndex:0] CGPointValue]; if (ccpDistance(v, first) < DISTANCE_TO_INTERPOLATE) { - [path insertObject:[NSValue valueWithCGPoint:v] atIndex:0]; - if ([path count] > pointLimit) { - [path removeLastObject]; + [_path insertObject:[NSValue valueWithCGPoint:v] atIndex:0]; + if ([_path count] > _pointLimit) { + [_path removeLastObject]; } }else{ int num = ccpDistance(v, first) / DISTANCE_TO_INTERPOLATE; CGPoint iv = ccpMult(ccpSub(v, first), (float)1./(num + 1)); for (int i = 1; i <= num + 1; i++) { - [path insertObject:[NSValue valueWithCGPoint:ccpAdd(first, ccpMult(iv, i))] atIndex:0]; + [_path insertObject:[NSValue valueWithCGPoint:ccpAdd(first, ccpMult(iv, i))] atIndex:0]; } - while ([path count] > pointLimit) { - [path removeLastObject]; + while ([_path count] > _pointLimit) { + [_path removeLastObject]; } } #else // !USE_LAGRANGE - path.push_front(v); - if (path.size() > pointLimit) { - path.pop_back(); + _path.push_front(v); + if (_path.size() > pointLimit) { + _path.pop_back(); } #endif // !USE_LAGRANGE @@ -185,18 +180,18 @@ - (void) push:(CGPoint) v{ } - (void) pop:(int) n{ - while ([path count] > 0 && n > 0) { - [path removeLastObject]; + while ([_path count] > 0 && n > 0) { + [_path removeLastObject]; n--; } - if ([path count] > 2) { + if ([_path count] > 2) { [self populateVertices]; } } - (void) clear{ - [path removeAllObjects]; + [_path removeAllObjects]; reset = NO; if (_finish) [self removeFromParentAndCleanup:YES]; @@ -222,9 +217,9 @@ - (void) update:(ccTime)dt { for (int pop = 0; pop < numberOfPops; pop++) { - if ((reset && [path count] > 0) || (self.autoDim && _willPop)) { + if ((reset && [_path count] > 0) || (self.autoDim && _willPop)) { [self pop:1]; - if ([path count] < 3) { + if ([_path count] < 3) { [self clear]; if (_finish) { return; // if we continue self will have been deallocated @@ -238,9 +233,9 @@ - (void) update:(ccTime)dt { - (void) draw{ #if !USE_UPDATE_FOR_POP - if ((reset && [path count] > 0) || (self.autoDim && _willPop)) { + if ((reset && [_path count] > 0) || (self.autoDim && _willPop)) { [self pop:1]; - if ([path count] < 3) { + if ([_path count] < 3) { [self clear]; if (_finish) { return; // if we continue self will have been deallocated @@ -249,14 +244,14 @@ - (void) draw{ } #endif - if(path == nil) + if(_path == nil) return; - if ([path count] < 3) { + if ([_path count] < 3) { return; } - willPop = YES; + _willPop = YES; CC_NODE_DRAW_SETUP(); ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords); @@ -267,7 +262,7 @@ - (void) draw{ glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, coordinates); - glDrawArrays(GL_TRIANGLE_STRIP, 0, 2*[path count]-2); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 2*[_path count]-2); CC_INCREMENT_GL_DRAWS(1); } diff --git a/Example/Example.xcodeproj/project.pbxproj b/Example/Example.xcodeproj/project.pbxproj index ffc4799..e6e5b3b 100644 --- a/Example/Example.xcodeproj/project.pbxproj +++ b/Example/Example.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 45; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -218,8 +218,11 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Example" */; - compatibilityVersion = "Xcode 3.1"; + compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( @@ -290,7 +293,6 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Example_Prefix.pch; @@ -298,11 +300,10 @@ GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = "~/Programming/SharedLibs/Cocos/include/**"; INFOPLIST_FILE = Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = "~/Programming/SharedLibs/Cocos/lib/**"; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-lCocos"; - PREBINDING = NO; PRODUCT_NAME = CCBlade; "PROVISIONING_PROFILE[sdk=iphoneos*]" = "9FC23DC7-CB28-4671-9494-EB7B1F3ABCBE"; TARGETED_DEVICE_FAMILY = 1; @@ -318,18 +319,15 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Duc Hiep Ngo (36Q6CZ7F37)"; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Example_Prefix.pch; GCC_TREAT_WARNINGS_AS_ERRORS = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = "~/Programming/SharedLibs/Cocos/include/**"; INFOPLIST_FILE = Resources/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = "~/Programming/SharedLibs/Cocos/lib/**"; - ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-lCocos"; - PREBINDING = NO; PRODUCT_NAME = CCBlade; "PROVISIONING_PROFILE[sdk=iphoneos*]" = "9FC23DC7-CB28-4671-9494-EB7B1F3ABCBE"; TARGETED_DEVICE_FAMILY = 1; @@ -356,7 +354,6 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 3.0; ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -376,7 +373,6 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 3.0; - PREBINDING = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/Example/Example.xcodeproj/project.xcworkspace/xcuserdata/Panajev.xcuserdatad/UserInterfaceState.xcuserstate b/Example/Example.xcodeproj/project.xcworkspace/xcuserdata/Panajev.xcuserdatad/UserInterfaceState.xcuserstate index 1d4702233bdbddf7efe8d6702be5090a8b25b07d..0db3ca283b9f31cb3309748f484e4232ab855d77 100644 GIT binary patch delta 8483 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 D`kVKw literal 32623 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 B-sJ!Q diff --git a/Example/Resources/Info.plist b/Example/Resources/Info.plist index a525442..f741ab1 100644 --- a/Example/Resources/Info.plist +++ b/Example/Resources/Info.plist @@ -44,5 +44,10 @@ UIStatusBarHidden + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + diff --git a/Example/libs/README b/Example/libs/README deleted file mode 100644 index 0d4d8fc..0000000 --- a/Example/libs/README +++ /dev/null @@ -1 +0,0 @@ -This directory contains the libraries used in cocos2d