From ce1d0d246efaaaace8eb78158aad10bc4886695b Mon Sep 17 00:00:00 2001 From: chsieh Date: Sun, 17 Apr 2011 17:31:47 -0700 Subject: [PATCH] Removing cocos2d and properly adding it back in later. --- Classes/cocos2d/CCAction.h | 188 --- Classes/cocos2d/CCAction.m | 360 ------ Classes/cocos2d/CCActionCamera.h | 72 -- Classes/cocos2d/CCActionCamera.m | 146 --- Classes/cocos2d/CCActionEase.h | 159 --- Classes/cocos2d/CCActionEase.m | 534 --------- Classes/cocos2d/CCActionGrid.h | 165 --- Classes/cocos2d/CCActionGrid.m | 386 ------- Classes/cocos2d/CCActionGrid3D.h | 208 ---- Classes/cocos2d/CCActionGrid3D.m | 659 ----------- Classes/cocos2d/CCActionInstant.h | 197 ---- Classes/cocos2d/CCActionInstant.m | 472 -------- Classes/cocos2d/CCActionInterval.h | 384 ------- Classes/cocos2d/CCActionInterval.m | 1213 -------------------- Classes/cocos2d/CCActionManager.h | 118 -- Classes/cocos2d/CCActionManager.m | 356 ------ Classes/cocos2d/CCActionPageTurn3D.h | 42 - Classes/cocos2d/CCActionPageTurn3D.m | 86 -- Classes/cocos2d/CCActionProgressTimer.h | 59 - Classes/cocos2d/CCActionProgressTimer.m | 103 -- Classes/cocos2d/CCActionTiledGrid.h | 211 ---- Classes/cocos2d/CCActionTiledGrid.m | 768 ------------- Classes/cocos2d/CCActionTween.h | 62 - Classes/cocos2d/CCActionTween.m | 72 -- Classes/cocos2d/CCAnimation.h | 132 --- Classes/cocos2d/CCAnimation.m | 152 --- Classes/cocos2d/CCAnimationCache.h | 63 - Classes/cocos2d/CCAnimationCache.m | 100 -- Classes/cocos2d/CCAtlasNode.h | 86 -- Classes/cocos2d/CCAtlasNode.m | 205 ---- Classes/cocos2d/CCBlockSupport.h | 51 - Classes/cocos2d/CCBlockSupport.m | 46 - Classes/cocos2d/CCCamera.h | 94 -- Classes/cocos2d/CCCamera.m | 130 --- Classes/cocos2d/CCCompatibility.h | 224 ---- Classes/cocos2d/CCCompatibility.m | 596 ---------- Classes/cocos2d/CCConfiguration.h | 110 -- Classes/cocos2d/CCConfiguration.m | 192 --- Classes/cocos2d/CCDirector.h | 304 ----- Classes/cocos2d/CCDirector.m | 557 --------- Classes/cocos2d/CCDrawingPrimitives.h | 91 -- Classes/cocos2d/CCDrawingPrimitives.m | 271 ----- Classes/cocos2d/CCGrabber.h | 43 - Classes/cocos2d/CCGrabber.m | 95 -- Classes/cocos2d/CCGrid.h | 121 -- Classes/cocos2d/CCGrid.m | 571 --------- Classes/cocos2d/CCLabelAtlas.h | 61 - Classes/cocos2d/CCLabelAtlas.m | 189 --- Classes/cocos2d/CCLabelBMFont.h | 189 --- Classes/cocos2d/CCLabelBMFont.m | 669 ----------- Classes/cocos2d/CCLabelTTF.h | 62 - Classes/cocos2d/CCLabelTTF.m | 125 -- Classes/cocos2d/CCLayer.h | 261 ----- Classes/cocos2d/CCLayer.m | 562 --------- Classes/cocos2d/CCMenu.h | 89 -- Classes/cocos2d/CCMenu.m | 516 --------- Classes/cocos2d/CCMenuItem.h | 341 ------ Classes/cocos2d/CCMenuItem.m | 752 ------------ Classes/cocos2d/CCMotionStreak.h | 67 -- Classes/cocos2d/CCMotionStreak.m | 104 -- Classes/cocos2d/CCNode.h | 510 -------- Classes/cocos2d/CCNode.m | 883 -------------- Classes/cocos2d/CCParallaxNode.h | 49 - Classes/cocos2d/CCParallaxNode.m | 160 --- Classes/cocos2d/CCParticleExamples.h | 110 -- Classes/cocos2d/CCParticleExamples.m | 925 --------------- Classes/cocos2d/CCParticleSystem.h | 444 ------- Classes/cocos2d/CCParticleSystem.m | 795 ------------- Classes/cocos2d/CCParticleSystemPoint.h | 64 - Classes/cocos2d/CCParticleSystemPoint.m | 207 ---- Classes/cocos2d/CCParticleSystemQuad.h | 74 -- Classes/cocos2d/CCParticleSystemQuad.m | 314 ----- Classes/cocos2d/CCProgressTimer.h | 83 -- Classes/cocos2d/CCProgressTimer.m | 494 -------- Classes/cocos2d/CCProtocols.h | 124 -- Classes/cocos2d/CCRenderTexture.h | 108 -- Classes/cocos2d/CCRenderTexture.m | 308 ----- Classes/cocos2d/CCRibbon.h | 117 -- Classes/cocos2d/CCRibbon.m | 381 ------ Classes/cocos2d/CCScene.h | 42 - Classes/cocos2d/CCScene.m | 44 - Classes/cocos2d/CCScheduler.h | 212 ---- Classes/cocos2d/CCScheduler.m | 597 ---------- Classes/cocos2d/CCSprite.h | 367 ------ Classes/cocos2d/CCSprite.m | 1004 ---------------- Classes/cocos2d/CCSpriteBatchNode.h | 143 --- Classes/cocos2d/CCSpriteBatchNode.m | 499 -------- Classes/cocos2d/CCSpriteFrame.h | 89 -- Classes/cocos2d/CCSpriteFrame.m | 87 -- Classes/cocos2d/CCSpriteFrameCache.h | 133 --- Classes/cocos2d/CCSpriteFrameCache.m | 344 ------ Classes/cocos2d/CCSpriteSheet.h | 61 - Classes/cocos2d/CCSpriteSheet.m | 37 - Classes/cocos2d/CCTMXLayer.h | 153 --- Classes/cocos2d/CCTMXLayer.m | 668 ----------- Classes/cocos2d/CCTMXObjectGroup.h | 65 -- Classes/cocos2d/CCTMXObjectGroup.m | 83 -- Classes/cocos2d/CCTMXTiledMap.h | 144 --- Classes/cocos2d/CCTMXTiledMap.m | 202 ---- Classes/cocos2d/CCTMXXMLParser.h | 200 ---- Classes/cocos2d/CCTMXXMLParser.m | 444 ------- Classes/cocos2d/CCTexture2D.h | 308 ----- Classes/cocos2d/CCTexture2D.m | 754 ------------ Classes/cocos2d/CCTextureAtlas.h | 138 --- Classes/cocos2d/CCTextureAtlas.m | 343 ------ Classes/cocos2d/CCTextureCache.h | 139 --- Classes/cocos2d/CCTextureCache.m | 466 -------- Classes/cocos2d/CCTexturePVR.h | 118 -- Classes/cocos2d/CCTexturePVR.m | 407 ------- Classes/cocos2d/CCTileMapAtlas.h | 82 -- Classes/cocos2d/CCTileMapAtlas.m | 233 ---- Classes/cocos2d/CCTransition.h | 295 ----- Classes/cocos2d/CCTransition.m | 1057 ----------------- Classes/cocos2d/CCTransitionPageTurn.h | 60 - Classes/cocos2d/CCTransitionPageTurn.m | 117 -- Classes/cocos2d/CCTransitionRadial.h | 40 - Classes/cocos2d/CCTransitionRadial.m | 115 -- Classes/cocos2d/Platforms/CCGL.h | 82 -- Classes/cocos2d/Platforms/CCNS.h | 62 - Classes/cocos2d/Platforms/Mac/CCDirectorMac.h | 99 -- Classes/cocos2d/Platforms/Mac/CCDirectorMac.m | 471 -------- Classes/cocos2d/Platforms/Mac/CCEventDispatcher.h | 233 ---- Classes/cocos2d/Platforms/Mac/CCEventDispatcher.m | 578 ---------- Classes/cocos2d/Platforms/Mac/MacGLView.h | 88 -- Classes/cocos2d/Platforms/Mac/MacGLView.m | 241 ---- Classes/cocos2d/Platforms/iOS/CCDirectorIOS.h | 342 ------ Classes/cocos2d/Platforms/iOS/CCDirectorIOS.m | 897 --------------- .../Platforms/iOS/CCTouchDelegateProtocol.h | 75 -- Classes/cocos2d/Platforms/iOS/CCTouchDispatcher.h | 122 -- Classes/cocos2d/Platforms/iOS/CCTouchDispatcher.m | 326 ------ Classes/cocos2d/Platforms/iOS/CCTouchHandler.h | 93 -- Classes/cocos2d/Platforms/iOS/CCTouchHandler.m | 135 --- Classes/cocos2d/Platforms/iOS/EAGLView.h | 155 --- Classes/cocos2d/Platforms/iOS/EAGLView.m | 342 ------ Classes/cocos2d/Platforms/iOS/ES1Renderer.h | 71 -- Classes/cocos2d/Platforms/iOS/ES1Renderer.m | 252 ---- Classes/cocos2d/Platforms/iOS/ESRenderer.h | 53 - Classes/cocos2d/Platforms/iOS/glu.c | 113 -- Classes/cocos2d/Platforms/iOS/glu.h | 29 - Classes/cocos2d/Support/CCArray.h | 92 -- Classes/cocos2d/Support/CCArray.m | 245 ---- Classes/cocos2d/Support/CCFileUtils.h | 61 - Classes/cocos2d/Support/CCFileUtils.m | 168 --- Classes/cocos2d/Support/CCProfiling.h | 53 - Classes/cocos2d/Support/CCProfiling.m | 117 -- Classes/cocos2d/Support/CGPointExtension.h | 321 ------ Classes/cocos2d/Support/CGPointExtension.m | 167 --- Classes/cocos2d/Support/OpenGL_Internal.h | 80 -- Classes/cocos2d/Support/TGAlib.h | 55 - Classes/cocos2d/Support/TGAlib.m | 272 ----- Classes/cocos2d/Support/TransformUtils.h | 37 - Classes/cocos2d/Support/TransformUtils.m | 46 - Classes/cocos2d/Support/ZipUtils.h | 78 -- Classes/cocos2d/Support/ZipUtils.m | 246 ---- Classes/cocos2d/Support/base64.c | 89 -- Classes/cocos2d/Support/base64.h | 33 - Classes/cocos2d/Support/ccCArray.h | 406 ------- Classes/cocos2d/Support/ccUtils.c | 20 - Classes/cocos2d/Support/ccUtils.h | 29 - Classes/cocos2d/Support/uthash.h | 956 --------------- Classes/cocos2d/Support/utlist.h | 493 -------- Classes/cocos2d/ccConfig.h | 291 ----- Classes/cocos2d/ccMacros.h | 227 ---- Classes/cocos2d/ccTypes.h | 262 ----- Classes/cocos2d/cocos2d.h | 165 --- Classes/cocos2d/cocos2d.m | 33 - 166 files changed, 0 insertions(+), 41582 deletions(-) delete mode 100644 Classes/cocos2d/CCAction.h delete mode 100644 Classes/cocos2d/CCAction.m delete mode 100644 Classes/cocos2d/CCActionCamera.h delete mode 100644 Classes/cocos2d/CCActionCamera.m delete mode 100644 Classes/cocos2d/CCActionEase.h delete mode 100644 Classes/cocos2d/CCActionEase.m delete mode 100644 Classes/cocos2d/CCActionGrid.h delete mode 100644 Classes/cocos2d/CCActionGrid.m delete mode 100644 Classes/cocos2d/CCActionGrid3D.h delete mode 100644 Classes/cocos2d/CCActionGrid3D.m delete mode 100644 Classes/cocos2d/CCActionInstant.h delete mode 100644 Classes/cocos2d/CCActionInstant.m delete mode 100644 Classes/cocos2d/CCActionInterval.h delete mode 100644 Classes/cocos2d/CCActionInterval.m delete mode 100644 Classes/cocos2d/CCActionManager.h delete mode 100644 Classes/cocos2d/CCActionManager.m delete mode 100644 Classes/cocos2d/CCActionPageTurn3D.h delete mode 100644 Classes/cocos2d/CCActionPageTurn3D.m delete mode 100644 Classes/cocos2d/CCActionProgressTimer.h delete mode 100644 Classes/cocos2d/CCActionProgressTimer.m delete mode 100644 Classes/cocos2d/CCActionTiledGrid.h delete mode 100644 Classes/cocos2d/CCActionTiledGrid.m delete mode 100644 Classes/cocos2d/CCActionTween.h delete mode 100644 Classes/cocos2d/CCActionTween.m delete mode 100644 Classes/cocos2d/CCAnimation.h delete mode 100644 Classes/cocos2d/CCAnimation.m delete mode 100644 Classes/cocos2d/CCAnimationCache.h delete mode 100644 Classes/cocos2d/CCAnimationCache.m delete mode 100644 Classes/cocos2d/CCAtlasNode.h delete mode 100644 Classes/cocos2d/CCAtlasNode.m delete mode 100644 Classes/cocos2d/CCBlockSupport.h delete mode 100644 Classes/cocos2d/CCBlockSupport.m delete mode 100644 Classes/cocos2d/CCCamera.h delete mode 100644 Classes/cocos2d/CCCamera.m delete mode 100644 Classes/cocos2d/CCCompatibility.h delete mode 100644 Classes/cocos2d/CCCompatibility.m delete mode 100644 Classes/cocos2d/CCConfiguration.h delete mode 100644 Classes/cocos2d/CCConfiguration.m delete mode 100644 Classes/cocos2d/CCDirector.h delete mode 100644 Classes/cocos2d/CCDirector.m delete mode 100644 Classes/cocos2d/CCDrawingPrimitives.h delete mode 100644 Classes/cocos2d/CCDrawingPrimitives.m delete mode 100644 Classes/cocos2d/CCGrabber.h delete mode 100644 Classes/cocos2d/CCGrabber.m delete mode 100644 Classes/cocos2d/CCGrid.h delete mode 100644 Classes/cocos2d/CCGrid.m delete mode 100644 Classes/cocos2d/CCLabelAtlas.h delete mode 100644 Classes/cocos2d/CCLabelAtlas.m delete mode 100644 Classes/cocos2d/CCLabelBMFont.h delete mode 100644 Classes/cocos2d/CCLabelBMFont.m delete mode 100644 Classes/cocos2d/CCLabelTTF.h delete mode 100644 Classes/cocos2d/CCLabelTTF.m delete mode 100644 Classes/cocos2d/CCLayer.h delete mode 100644 Classes/cocos2d/CCLayer.m delete mode 100644 Classes/cocos2d/CCMenu.h delete mode 100644 Classes/cocos2d/CCMenu.m delete mode 100644 Classes/cocos2d/CCMenuItem.h delete mode 100644 Classes/cocos2d/CCMenuItem.m delete mode 100644 Classes/cocos2d/CCMotionStreak.h delete mode 100644 Classes/cocos2d/CCMotionStreak.m delete mode 100644 Classes/cocos2d/CCNode.h delete mode 100644 Classes/cocos2d/CCNode.m delete mode 100644 Classes/cocos2d/CCParallaxNode.h delete mode 100644 Classes/cocos2d/CCParallaxNode.m delete mode 100644 Classes/cocos2d/CCParticleExamples.h delete mode 100644 Classes/cocos2d/CCParticleExamples.m delete mode 100644 Classes/cocos2d/CCParticleSystem.h delete mode 100644 Classes/cocos2d/CCParticleSystem.m delete mode 100644 Classes/cocos2d/CCParticleSystemPoint.h delete mode 100644 Classes/cocos2d/CCParticleSystemPoint.m delete mode 100644 Classes/cocos2d/CCParticleSystemQuad.h delete mode 100644 Classes/cocos2d/CCParticleSystemQuad.m delete mode 100644 Classes/cocos2d/CCProgressTimer.h delete mode 100644 Classes/cocos2d/CCProgressTimer.m delete mode 100644 Classes/cocos2d/CCProtocols.h delete mode 100755 Classes/cocos2d/CCRenderTexture.h delete mode 100755 Classes/cocos2d/CCRenderTexture.m delete mode 100644 Classes/cocos2d/CCRibbon.h delete mode 100644 Classes/cocos2d/CCRibbon.m delete mode 100644 Classes/cocos2d/CCScene.h delete mode 100644 Classes/cocos2d/CCScene.m delete mode 100644 Classes/cocos2d/CCScheduler.h delete mode 100644 Classes/cocos2d/CCScheduler.m delete mode 100644 Classes/cocos2d/CCSprite.h delete mode 100644 Classes/cocos2d/CCSprite.m delete mode 100644 Classes/cocos2d/CCSpriteBatchNode.h delete mode 100644 Classes/cocos2d/CCSpriteBatchNode.m delete mode 100644 Classes/cocos2d/CCSpriteFrame.h delete mode 100644 Classes/cocos2d/CCSpriteFrame.m delete mode 100644 Classes/cocos2d/CCSpriteFrameCache.h delete mode 100644 Classes/cocos2d/CCSpriteFrameCache.m delete mode 100644 Classes/cocos2d/CCSpriteSheet.h delete mode 100644 Classes/cocos2d/CCSpriteSheet.m delete mode 100644 Classes/cocos2d/CCTMXLayer.h delete mode 100644 Classes/cocos2d/CCTMXLayer.m delete mode 100644 Classes/cocos2d/CCTMXObjectGroup.h delete mode 100644 Classes/cocos2d/CCTMXObjectGroup.m delete mode 100644 Classes/cocos2d/CCTMXTiledMap.h delete mode 100644 Classes/cocos2d/CCTMXTiledMap.m delete mode 100644 Classes/cocos2d/CCTMXXMLParser.h delete mode 100644 Classes/cocos2d/CCTMXXMLParser.m delete mode 100644 Classes/cocos2d/CCTexture2D.h delete mode 100644 Classes/cocos2d/CCTexture2D.m delete mode 100644 Classes/cocos2d/CCTextureAtlas.h delete mode 100644 Classes/cocos2d/CCTextureAtlas.m delete mode 100644 Classes/cocos2d/CCTextureCache.h delete mode 100644 Classes/cocos2d/CCTextureCache.m delete mode 100644 Classes/cocos2d/CCTexturePVR.h delete mode 100644 Classes/cocos2d/CCTexturePVR.m delete mode 100644 Classes/cocos2d/CCTileMapAtlas.h delete mode 100644 Classes/cocos2d/CCTileMapAtlas.m delete mode 100644 Classes/cocos2d/CCTransition.h delete mode 100644 Classes/cocos2d/CCTransition.m delete mode 100644 Classes/cocos2d/CCTransitionPageTurn.h delete mode 100644 Classes/cocos2d/CCTransitionPageTurn.m delete mode 100644 Classes/cocos2d/CCTransitionRadial.h delete mode 100644 Classes/cocos2d/CCTransitionRadial.m delete mode 100644 Classes/cocos2d/Platforms/CCGL.h delete mode 100644 Classes/cocos2d/Platforms/CCNS.h delete mode 100644 Classes/cocos2d/Platforms/Mac/CCDirectorMac.h delete mode 100644 Classes/cocos2d/Platforms/Mac/CCDirectorMac.m delete mode 100644 Classes/cocos2d/Platforms/Mac/CCEventDispatcher.h delete mode 100644 Classes/cocos2d/Platforms/Mac/CCEventDispatcher.m delete mode 100644 Classes/cocos2d/Platforms/Mac/MacGLView.h delete mode 100644 Classes/cocos2d/Platforms/Mac/MacGLView.m delete mode 100755 Classes/cocos2d/Platforms/iOS/CCDirectorIOS.h delete mode 100755 Classes/cocos2d/Platforms/iOS/CCDirectorIOS.m delete mode 100644 Classes/cocos2d/Platforms/iOS/CCTouchDelegateProtocol.h delete mode 100644 Classes/cocos2d/Platforms/iOS/CCTouchDispatcher.h delete mode 100644 Classes/cocos2d/Platforms/iOS/CCTouchDispatcher.m delete mode 100644 Classes/cocos2d/Platforms/iOS/CCTouchHandler.h delete mode 100644 Classes/cocos2d/Platforms/iOS/CCTouchHandler.m delete mode 100755 Classes/cocos2d/Platforms/iOS/EAGLView.h delete mode 100755 Classes/cocos2d/Platforms/iOS/EAGLView.m delete mode 100755 Classes/cocos2d/Platforms/iOS/ES1Renderer.h delete mode 100755 Classes/cocos2d/Platforms/iOS/ES1Renderer.m delete mode 100755 Classes/cocos2d/Platforms/iOS/ESRenderer.h delete mode 100755 Classes/cocos2d/Platforms/iOS/glu.c delete mode 100644 Classes/cocos2d/Platforms/iOS/glu.h delete mode 100644 Classes/cocos2d/Support/CCArray.h delete mode 100644 Classes/cocos2d/Support/CCArray.m delete mode 100644 Classes/cocos2d/Support/CCFileUtils.h delete mode 100644 Classes/cocos2d/Support/CCFileUtils.m delete mode 100644 Classes/cocos2d/Support/CCProfiling.h delete mode 100644 Classes/cocos2d/Support/CCProfiling.m delete mode 100644 Classes/cocos2d/Support/CGPointExtension.h delete mode 100644 Classes/cocos2d/Support/CGPointExtension.m delete mode 100644 Classes/cocos2d/Support/OpenGL_Internal.h delete mode 100644 Classes/cocos2d/Support/TGAlib.h delete mode 100644 Classes/cocos2d/Support/TGAlib.m delete mode 100644 Classes/cocos2d/Support/TransformUtils.h delete mode 100644 Classes/cocos2d/Support/TransformUtils.m delete mode 100644 Classes/cocos2d/Support/ZipUtils.h delete mode 100644 Classes/cocos2d/Support/ZipUtils.m delete mode 100644 Classes/cocos2d/Support/base64.c delete mode 100644 Classes/cocos2d/Support/base64.h delete mode 100644 Classes/cocos2d/Support/ccCArray.h delete mode 100644 Classes/cocos2d/Support/ccUtils.c delete mode 100644 Classes/cocos2d/Support/ccUtils.h delete mode 100644 Classes/cocos2d/Support/uthash.h delete mode 100644 Classes/cocos2d/Support/utlist.h delete mode 100644 Classes/cocos2d/ccConfig.h delete mode 100644 Classes/cocos2d/ccMacros.h delete mode 100644 Classes/cocos2d/ccTypes.h delete mode 100644 Classes/cocos2d/cocos2d.h delete mode 100644 Classes/cocos2d/cocos2d.m diff --git a/Classes/cocos2d/CCAction.h b/Classes/cocos2d/CCAction.h deleted file mode 100644 index 327a251..0000000 --- a/Classes/cocos2d/CCAction.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#include -#import - -#import "ccTypes.h" - -enum { - //! Default tag - kCCActionTagInvalid = -1, -}; - -/** Base class for CCAction objects. - */ -@interface CCAction : NSObject -{ - id originalTarget_; - id target_; - NSInteger tag_; -} - -/** The "target". The action will modify the target properties. - The target will be set with the 'startWithTarget' method. - When the 'stop' method is called, target will be set to nil. - The target is 'assigned', it is not 'retained'. - */ -@property (nonatomic,readonly,assign) id target; - -/** The original target, since target can be nil. - Is the target that were used to run the action. Unless you are doing something complex, like ActionManager, you should NOT call this method. - @since v0.8.2 -*/ -@property (nonatomic,readonly,assign) id originalTarget; - - -/** The action tag. An identifier of the action */ -@property (nonatomic,readwrite,assign) NSInteger tag; - -/** Allocates and initializes the action */ -+(id) action; - -/** Initializes the action */ --(id) init; - --(id) copyWithZone: (NSZone*) zone; - -//! return YES if the action has finished --(BOOL) isDone; -//! called before the action start. It will also set the target. --(void) startWithTarget:(id)target; -//! called after the action has finished. It will set the 'target' to nil. -//! IMPORTANT: You should never call "[action stop]" manually. Instead, use: "[target stopAction:action];" --(void) stop; -//! called every frame with it's delta time. DON'T override unless you know what you are doing. --(void) step: (ccTime) dt; -//! called once per frame. time a value between 0 and 1 -//! For example: -//! * 0 means that the action just started -//! * 0.5 means that the action is in the middle -//! * 1 means that the action is over --(void) update: (ccTime) time; - -@end - -/** Base class actions that do have a finite time duration. - Possible actions: - - An action with a duration of 0 seconds - - An action with a duration of 35.5 seconds - Infitite time actions are valid - */ -@interface CCFiniteTimeAction : CCAction -{ - //! duration in seconds - ccTime duration_; -} -//! duration in seconds of the action -@property (nonatomic,readwrite) ccTime duration; - -/** returns a reversed action */ -- (CCFiniteTimeAction*) reverse; -@end - - -@class CCActionInterval; -/** Repeats an action for ever. - To repeat the an action for a limited number of times use the Repeat action. - @warning This action can't be Sequenceable because it is not an IntervalAction - */ -@interface CCRepeatForever : CCAction -{ - CCActionInterval *other; -} -/** creates the action */ -+(id) actionWithAction: (CCActionInterval*) action; -/** initializes the action */ --(id) initWithAction: (CCActionInterval*) action; -@end - -/** Changes the speed of an action, making it take longer (speed>1) - or less (speed<1) time. - Useful to simulate 'slow motion' or 'fast forward' effect. - @warning This action can't be Sequenceable because it is not an IntervalAction - */ -@interface CCSpeed : CCAction -{ - CCActionInterval *other; - float speed; -} -/** alter the speed of the inner function in runtime */ -@property (nonatomic,readwrite) float speed; -/** creates the action */ -+(id) actionWithAction: (CCActionInterval*) action speed:(float)rate; -/** initializes the action */ --(id) initWithAction: (CCActionInterval*) action speed:(float)rate; -@end - -@class CCNode; -/** CCFollow is an action that "follows" a node. - - Eg: - [layer runAction: [CCFollow actionWithTarget:hero]]; - - Instead of using CCCamera as a "follower", use this action instead. - @since v0.99.2 - */ -@interface CCFollow : CCAction -{ - /* node to follow */ - CCNode *followedNode_; - - /* whether camera should be limited to certain area */ - BOOL boundarySet; - - /* if screensize is bigger than the boundary - update not needed */ - BOOL boundaryFullyCovered; - - /* fast access to the screen dimensions */ - CGPoint halfScreenSize; - CGPoint fullScreenSize; - - /* world boundaries */ - float leftBoundary; - float rightBoundary; - float topBoundary; - float bottomBoundary; -} - -/** alter behavior - turn on/off boundary */ -@property (nonatomic,readwrite) BOOL boundarySet; - -/** creates the action with no boundary set */ -+(id) actionWithTarget:(CCNode *)followedNode; - -/** creates the action with a set boundary */ -+(id) actionWithTarget:(CCNode *)followedNode worldBoundary:(CGRect)rect; - -/** initializes the action */ --(id) initWithTarget:(CCNode *)followedNode; - -/** initializes the action with a set boundary */ --(id) initWithTarget:(CCNode *)followedNode worldBoundary:(CGRect)rect; - -@end - diff --git a/Classes/cocos2d/CCAction.m b/Classes/cocos2d/CCAction.m deleted file mode 100644 index 8fc3b4c..0000000 --- a/Classes/cocos2d/CCAction.m +++ /dev/null @@ -1,360 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - - -#import -#import "CCDirector.h" -#import "ccMacros.h" -#import "CCAction.h" -#import "CCActionInterval.h" -#import "Support/CGPointExtension.h" - -// -// Action Base Class -// -#pragma mark - -#pragma mark Action -@implementation CCAction - -@synthesize tag = tag_, target = target_, originalTarget = originalTarget_; - -+(id) action -{ - return [[[self alloc] init] autorelease]; -} - --(id) init -{ - if( (self=[super init]) ) { - originalTarget_ = target_ = nil; - tag_ = kCCActionTagInvalid; - } - return self; -} - --(void) dealloc -{ - CCLOGINFO(@"cocos2d: deallocing %@", self); - [super dealloc]; -} - --(NSString*) description -{ - return [NSString stringWithFormat:@"<%@ = %08X | Tag = %i>", [self class], self, tag_]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] init]; - copy.tag = tag_; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - originalTarget_ = target_ = aTarget; -} - --(void) stop -{ - target_ = nil; -} - --(BOOL) isDone -{ - return YES; -} - --(void) step: (ccTime) dt -{ - NSLog(@"[Action step]. override me"); -} - --(void) update: (ccTime) time -{ - NSLog(@"[Action update]. override me"); -} -@end - -// -// FiniteTimeAction -// -#pragma mark - -#pragma mark FiniteTimeAction -@implementation CCFiniteTimeAction -@synthesize duration = duration_; - -- (CCFiniteTimeAction*) reverse -{ - CCLOG(@"cocos2d: FiniteTimeAction#reverse: Implement me"); - return nil; -} -@end - - -// -// RepeatForever -// -#pragma mark - -#pragma mark RepeatForever -@implementation CCRepeatForever -+(id) actionWithAction: (CCActionInterval*) action -{ - return [[[self alloc] initWithAction: action] autorelease]; -} - --(id) initWithAction: (CCActionInterval*) action -{ - if( (self=[super init]) ) - other = [action retain]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithAction:[[other copy] autorelease] ]; - return copy; -} - --(void) dealloc -{ - [other release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) step:(ccTime) dt -{ - [other step: dt]; - if( [other isDone] ) { - ccTime diff = dt + other.duration - other.elapsed; - [other startWithTarget:target_]; - - // to prevent jerk. issue #390 - [other step: diff]; - } -} - - --(BOOL) isDone -{ - return NO; -} - -- (CCActionInterval *) reverse -{ - return [CCRepeatForever actionWithAction:[other reverse]]; -} - -@end - -// -// Speed -// -#pragma mark - -#pragma mark Speed -@implementation CCSpeed -@synthesize speed; - -+(id) actionWithAction: (CCActionInterval*) action speed:(float)r -{ - return [[[self alloc] initWithAction: action speed:r] autorelease]; -} - --(id) initWithAction: (CCActionInterval*) action speed:(float)r -{ - if( (self=[super init]) ) { - other = [action retain]; - speed = r; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithAction:[[other copy] autorelease] speed:speed]; - return copy; -} - --(void) dealloc -{ - [other release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) stop -{ - [other stop]; - [super stop]; -} - --(void) step:(ccTime) dt -{ - [other step: dt * speed]; -} - --(BOOL) isDone -{ - return [other isDone]; -} - -- (CCActionInterval *) reverse -{ - return [CCSpeed actionWithAction:[other reverse] speed:speed]; -} -@end - -// -// Follow -// -#pragma mark - -#pragma mark Follow -@implementation CCFollow - -@synthesize boundarySet; - -+(id) actionWithTarget:(CCNode *) fNode -{ - return [[[self alloc] initWithTarget:fNode] autorelease]; -} - -+(id) actionWithTarget:(CCNode *) fNode worldBoundary:(CGRect)rect -{ - return [[[self alloc] initWithTarget:fNode worldBoundary:rect] autorelease]; -} - --(id) initWithTarget:(CCNode *)fNode -{ - if( (self=[super init]) ) { - - followedNode_ = [fNode retain]; - boundarySet = FALSE; - boundaryFullyCovered = FALSE; - - CGSize s = [[CCDirector sharedDirector] winSize]; - fullScreenSize = CGPointMake(s.width, s.height); - halfScreenSize = ccpMult(fullScreenSize, .5f); - } - - return self; -} - --(id) initWithTarget:(CCNode *)fNode worldBoundary:(CGRect)rect -{ - if( (self=[super init]) ) { - - followedNode_ = [fNode retain]; - boundarySet = TRUE; - boundaryFullyCovered = FALSE; - - CGSize winSize = [[CCDirector sharedDirector] winSize]; - fullScreenSize = CGPointMake(winSize.width, winSize.height); - halfScreenSize = ccpMult(fullScreenSize, .5f); - - leftBoundary = -((rect.origin.x+rect.size.width) - fullScreenSize.x); - rightBoundary = -rect.origin.x ; - topBoundary = -rect.origin.y; - bottomBoundary = -((rect.origin.y+rect.size.height) - fullScreenSize.y); - - if(rightBoundary < leftBoundary) - { - // screen width is larger than world's boundary width - //set both in the middle of the world - rightBoundary = leftBoundary = (leftBoundary + rightBoundary) / 2; - } - if(topBoundary < bottomBoundary) - { - // screen width is larger than world's boundary width - //set both in the middle of the world - topBoundary = bottomBoundary = (topBoundary + bottomBoundary) / 2; - } - - if( (topBoundary == bottomBoundary) && (leftBoundary == rightBoundary) ) - boundaryFullyCovered = TRUE; - } - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] init]; - copy.tag = tag_; - return copy; -} - --(void) step:(ccTime) dt -{ -#define CLAMP(x,y,z) MIN(MAX(x,y),z) - - if(boundarySet) - { - // whole map fits inside a single screen, no need to modify the position - unless map boundaries are increased - if(boundaryFullyCovered) - return; - - CGPoint tempPos = ccpSub( halfScreenSize, followedNode_.position); - [target_ setPosition:ccp(CLAMP(tempPos.x,leftBoundary,rightBoundary), CLAMP(tempPos.y,bottomBoundary,topBoundary))]; - } - else - [target_ setPosition:ccpSub( halfScreenSize, followedNode_.position )]; - -#undef CLAMP -} - - --(BOOL) isDone -{ - return !followedNode_.isRunning; -} - --(void) stop -{ - target_ = nil; - [super stop]; -} - --(void) dealloc -{ - [followedNode_ release]; - [super dealloc]; -} - -@end - - diff --git a/Classes/cocos2d/CCActionCamera.h b/Classes/cocos2d/CCActionCamera.h deleted file mode 100644 index 131c084..0000000 --- a/Classes/cocos2d/CCActionCamera.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -#import "CCActionInterval.h" - -@class CCCamera; - -/** Base class for CCCamera actions - */ -@interface CCActionCamera : CCActionInterval -{ - float centerXOrig_; - float centerYOrig_; - float centerZOrig_; - - float eyeXOrig_; - float eyeYOrig_; - float eyeZOrig_; - - float upXOrig_; - float upYOrig_; - float upZOrig_; -} -@end - -/** CCOrbitCamera action - Orbits the camera around the center of the screen using spherical coordinates - */ -@interface CCOrbitCamera : CCActionCamera -{ - float radius_; - float deltaRadius_; - float angleZ_; - float deltaAngleZ_; - float angleX_; - float deltaAngleX_; - - float radZ_; - float radDeltaZ_; - float radX_; - float radDeltaX_; - -} -/** creates a CCOrbitCamera action with radius, delta-radius, z, deltaZ, x, deltaX */ -+(id) actionWithDuration:(float) t radius:(float)r deltaRadius:(float) dr angleZ:(float)z deltaAngleZ:(float)dz angleX:(float)x deltaAngleX:(float)dx; -/** initializes a CCOrbitCamera action with radius, delta-radius, z, deltaZ, x, deltaX */ --(id) initWithDuration:(float) t radius:(float)r deltaRadius:(float) dr angleZ:(float)z deltaAngleZ:(float)dz angleX:(float)x deltaAngleX:(float)dx; -/** positions the camera according to spherical coordinates */ --(void) sphericalRadius:(float*) r zenith:(float*) zenith azimuth:(float*) azimuth; -@end diff --git a/Classes/cocos2d/CCActionCamera.m b/Classes/cocos2d/CCActionCamera.m deleted file mode 100644 index 5134c6f..0000000 --- a/Classes/cocos2d/CCActionCamera.m +++ /dev/null @@ -1,146 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - - -#import "CCActionCamera.h" -#import "CCNode.h" -#import "CCCamera.h" -#import "ccMacros.h" - -// -// CameraAction -// -@implementation CCActionCamera --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - CCCamera *camera = [target_ camera]; - [camera centerX:¢erXOrig_ centerY:¢erYOrig_ centerZ:¢erZOrig_]; - [camera eyeX:&eyeXOrig_ eyeY:&eyeYOrig_ eyeZ:&eyeZOrig_]; - [camera upX:&upXOrig_ upY:&upYOrig_ upZ: &upZOrig_]; -} - --(id) reverse -{ - return [CCReverseTime actionWithAction:self]; -} -@end - -@implementation CCOrbitCamera -+(id) actionWithDuration:(float)t radius:(float)r deltaRadius:(float) dr angleZ:(float)z deltaAngleZ:(float)dz angleX:(float)x deltaAngleX:(float)dx -{ - return [[[self alloc] initWithDuration:t radius:r deltaRadius:dr angleZ:z deltaAngleZ:dz angleX:x deltaAngleX:dx] autorelease]; -} - --(id) copyWithZone: (NSZone*) zone -{ - return [[[self class] allocWithZone: zone] initWithDuration:duration_ radius:radius_ deltaRadius:deltaRadius_ angleZ:angleZ_ deltaAngleZ:deltaAngleZ_ angleX:angleX_ deltaAngleX:deltaAngleX_]; -} - - --(id) initWithDuration:(float)t radius:(float)r deltaRadius:(float) dr angleZ:(float)z deltaAngleZ:(float)dz angleX:(float)x deltaAngleX:(float)dx -{ - if((self=[super initWithDuration:t]) ) { - - radius_ = r; - deltaRadius_ = dr; - angleZ_ = z; - deltaAngleZ_ = dz; - angleX_ = x; - deltaAngleX_ = dx; - - radDeltaZ_ = (CGFloat)CC_DEGREES_TO_RADIANS(dz); - radDeltaX_ = (CGFloat)CC_DEGREES_TO_RADIANS(dx); - } - - return self; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - float r, zenith, azimuth; - - [self sphericalRadius: &r zenith:&zenith azimuth:&azimuth]; - -#if 0 // isnan() is not supported on the simulator, and isnan() always returns false. - if( isnan(radius_) ) - radius_ = r; - - if( isnan( angleZ_) ) - angleZ_ = (CGFloat)CC_RADIANS_TO_DEGREES(zenith); - - if( isnan( angleX_ ) ) - angleX_ = (CGFloat)CC_RADIANS_TO_DEGREES(azimuth); -#endif - - radZ_ = (CGFloat)CC_DEGREES_TO_RADIANS(angleZ_); - radX_ = (CGFloat)CC_DEGREES_TO_RADIANS(angleX_); -} - --(void) update: (ccTime) dt -{ - float r = (radius_ + deltaRadius_ * dt) *[CCCamera getZEye]; - float za = radZ_ + radDeltaZ_ * dt; - float xa = radX_ + radDeltaX_ * dt; - - float i = sinf(za) * cosf(xa) * r + centerXOrig_; - float j = sinf(za) * sinf(xa) * r + centerYOrig_; - float k = cosf(za) * r + centerZOrig_; - - [[target_ camera] setEyeX:i eyeY:j eyeZ:k]; -} - --(void) sphericalRadius:(float*) newRadius zenith:(float*) zenith azimuth:(float*) azimuth -{ - float ex, ey, ez, cx, cy, cz, x, y, z; - float r; // radius - float s; - - CCCamera *camera = [target_ camera]; - [camera eyeX:&ex eyeY:&ey eyeZ:&ez]; - [camera centerX:&cx centerY:&cy centerZ:&cz]; - - x = ex-cx; - y = ey-cy; - z = ez-cz; - - r = sqrtf( x*x + y*y + z*z); - s = sqrtf( x*x + y*y); - if(s==0.0f) - s = FLT_EPSILON; - if(r==0.0f) - r = FLT_EPSILON; - - *zenith = acosf( z/r); - if( x < 0 ) - *azimuth = (float)M_PI - asinf(y/s); - else - *azimuth = asinf(y/s); - - *newRadius = r / [CCCamera getZEye]; -} -@end diff --git a/Classes/cocos2d/CCActionEase.h b/Classes/cocos2d/CCActionEase.h deleted file mode 100644 index fced701..0000000 --- a/Classes/cocos2d/CCActionEase.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2009 Jason Booth - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionInterval.h" - -/** Base class for Easing actions - */ -@interface CCActionEase : CCActionInterval -{ - CCActionInterval * other; -} -/** creates the action */ -+(id) actionWithAction: (CCActionInterval*) action; -/** initializes the action */ --(id) initWithAction: (CCActionInterval*) action; -@end - -/** Base class for Easing actions with rate parameters - */ -@interface CCEaseRateAction : CCActionEase -{ - float rate; -} -/** rate value for the actions */ -@property (nonatomic,readwrite,assign) float rate; -/** Creates the action with the inner action and the rate parameter */ -+(id) actionWithAction: (CCActionInterval*) action rate:(float)rate; -/** Initializes the action with the inner action and the rate parameter */ --(id) initWithAction: (CCActionInterval*) action rate:(float)rate; -@end - -/** CCEaseIn action with a rate - */ -@interface CCEaseIn : CCEaseRateAction {} @end - -/** CCEaseOut action with a rate - */ -@interface CCEaseOut : CCEaseRateAction {} @end - -/** CCEaseInOut action with a rate - */ -@interface CCEaseInOut : CCEaseRateAction {} @end - -/** CCEase Exponential In - */ -@interface CCEaseExponentialIn : CCActionEase {} @end -/** Ease Exponential Out - */ -@interface CCEaseExponentialOut : CCActionEase {} @end -/** Ease Exponential InOut - */ -@interface CCEaseExponentialInOut : CCActionEase {} @end -/** Ease Sine In - */ -@interface CCEaseSineIn : CCActionEase {} @end -/** Ease Sine Out - */ -@interface CCEaseSineOut : CCActionEase {} @end -/** Ease Sine InOut - */ -@interface CCEaseSineInOut : CCActionEase {} @end - -/** Ease Elastic abstract class - @since v0.8.2 - */ -@interface CCEaseElastic : CCActionEase -{ - float period_; -} - -/** period of the wave in radians. default is 0.3 */ -@property (nonatomic,readwrite) float period; - -/** Creates the action with the inner action and the period in radians (default is 0.3) */ -+(id) actionWithAction: (CCActionInterval*) action period:(float)period; -/** Initializes the action with the inner action and the period in radians (default is 0.3) */ --(id) initWithAction: (CCActionInterval*) action period:(float)period; -@end - -/** Ease Elastic In action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseElasticIn : CCEaseElastic {} @end -/** Ease Elastic Out action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseElasticOut : CCEaseElastic {} @end -/** Ease Elastic InOut action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseElasticInOut : CCEaseElastic {} @end - -/** CCEaseBounce abstract class. - @since v0.8.2 -*/ -@interface CCEaseBounce : CCActionEase {} @end - -/** CCEaseBounceIn action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 -*/ -@interface CCEaseBounceIn : CCEaseBounce {} @end - -/** EaseBounceOut action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseBounceOut : CCEaseBounce {} @end - -/** CCEaseBounceInOut action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseBounceInOut : CCEaseBounce {} @end - -/** CCEaseBackIn action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseBackIn : CCActionEase {} @end - -/** CCEaseBackOut action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseBackOut : CCActionEase {} @end - -/** CCEaseBackInOut action. - @warning This action doesn't use a bijective fucntion. Actions like Sequence might have an unexpected result when used with this action. - @since v0.8.2 - */ -@interface CCEaseBackInOut : CCActionEase {} @end - diff --git a/Classes/cocos2d/CCActionEase.m b/Classes/cocos2d/CCActionEase.m deleted file mode 100644 index f28be11..0000000 --- a/Classes/cocos2d/CCActionEase.m +++ /dev/null @@ -1,534 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2009 Jason Booth - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -/* - * Elastic, Back and Bounce actions based on code from: - * http://github.com/NikhilK/silverlightfx/ - * - * by http://github.com/NikhilK - */ - -#import "CCActionEase.h" - -#ifndef M_PI_X_2 -#define M_PI_X_2 (float)M_PI * 2.0f -#endif - -#pragma mark EaseAction - -// -// EaseAction -// -@implementation CCActionEase - -+(id) actionWithAction: (CCActionInterval*) action -{ - return [[[self alloc] initWithAction: action] autorelease ]; -} - --(id) initWithAction: (CCActionInterval*) action -{ - NSAssert( action!=nil, @"Ease: arguments must be non-nil"); - - if( (self=[super initWithDuration: action.duration]) ) - other = [action retain]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone:zone] initWithAction:[[other copy] autorelease]]; - return copy; -} - --(void) dealloc -{ - [other release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) stop -{ - [other stop]; - [super stop]; -} - --(void) update: (ccTime) t -{ - [other update: t]; -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithAction: [other reverse]]; -} -@end - - -#pragma mark - -#pragma mark EaseRate - -// -// EaseRateAction -// -@implementation CCEaseRateAction -@synthesize rate; -+(id) actionWithAction: (CCActionInterval*) action rate:(float)aRate -{ - return [[[self alloc] initWithAction: action rate:aRate] autorelease ]; -} - --(id) initWithAction: (CCActionInterval*) action rate:(float)aRate -{ - if( (self=[super initWithAction:action ]) ) - self.rate = aRate; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone:zone] initWithAction:[[other copy] autorelease] rate:rate]; - return copy; -} - --(void) dealloc -{ - [super dealloc]; -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithAction: [other reverse] rate:1/rate]; -} -@end - -// -// EeseIn -// -@implementation CCEaseIn --(void) update: (ccTime) t -{ - [other update: powf(t,rate)]; -} -@end - -// -// EaseOut -// -@implementation CCEaseOut --(void) update: (ccTime) t -{ - [other update: powf(t,1/rate)]; -} -@end - -// -// EaseInOut -// -@implementation CCEaseInOut --(void) update: (ccTime) t -{ - int sign =1; - int r = (int) rate; - if (r % 2 == 0) - sign = -1; - t *= 2; - if (t < 1) - [other update: 0.5f * powf (t, rate)]; - else - [other update: sign*0.5f * (powf (t-2, rate) + sign*2)]; -} - -// InOut and OutIn are symmetrical --(CCActionInterval*) reverse -{ - return [[self class] actionWithAction: [other reverse] rate:rate]; -} - -@end - -#pragma mark - -#pragma mark EaseExponential - -// -// EaseExponentialIn -// -@implementation CCEaseExponentialIn --(void) update: (ccTime) t -{ - [other update: (t==0) ? 0 : powf(2, 10 * (t/1 - 1)) - 1 * 0.001f]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseExponentialOut actionWithAction: [other reverse]]; -} -@end - -// -// EaseExponentialOut -// -@implementation CCEaseExponentialOut --(void) update: (ccTime) t -{ - [other update: (t==1) ? 1 : (-powf(2, -10 * t/1) + 1)]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseExponentialIn actionWithAction: [other reverse]]; -} -@end - -// -// EaseExponentialInOut -// -@implementation CCEaseExponentialInOut --(void) update: (ccTime) t -{ - t /= 0.5f; - if (t < 1) - t = 0.5f * powf(2, 10 * (t - 1)); - else - t = 0.5f * (-powf(2, -10 * (t -1) ) + 2); - - [other update:t]; -} -@end - - -#pragma mark - -#pragma mark EaseSin actions - -// -// EaseSineIn -// -@implementation CCEaseSineIn --(void) update: (ccTime) t -{ - [other update:-1*cosf(t * (float)M_PI_2) +1]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseSineOut actionWithAction: [other reverse]]; -} -@end - -// -// EaseSineOut -// -@implementation CCEaseSineOut --(void) update: (ccTime) t -{ - [other update:sinf(t * (float)M_PI_2)]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseSineIn actionWithAction: [other reverse]]; -} -@end - -// -// EaseSineInOut -// -@implementation CCEaseSineInOut --(void) update: (ccTime) t -{ - [other update:-0.5f*(cosf( (float)M_PI*t) - 1)]; -} -@end - -#pragma mark - -#pragma mark EaseElastic actions - -// -// EaseElastic -// -@implementation CCEaseElastic - -@synthesize period = period_; - -+(id) actionWithAction: (CCActionInterval*) action -{ - return [[[self alloc] initWithAction:action period:0.3f] autorelease]; -} - -+(id) actionWithAction: (CCActionInterval*) action period:(float)period -{ - return [[[self alloc] initWithAction:action period:period] autorelease]; -} - --(id) initWithAction: (CCActionInterval*) action -{ - return [self initWithAction:action period:0.3f]; -} - --(id) initWithAction: (CCActionInterval*) action period:(float)period -{ - if( (self=[super initWithAction:action]) ) - period_ = period; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone:zone] initWithAction:[[other copy] autorelease] period:period_]; - return copy; -} - --(CCActionInterval*) reverse -{ - NSAssert(NO,@"Override me"); - return nil; -} - -@end - -// -// EaseElasticIn -// - -@implementation CCEaseElasticIn --(void) update: (ccTime) t -{ - ccTime newT = 0; - if (t == 0 || t == 1) - newT = t; - - else { - float s = period_ / 4; - t = t - 1; - newT = -powf(2, 10 * t) * sinf( (t-s) *M_PI_X_2 / period_); - } - [other update:newT]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseElasticOut actionWithAction: [other reverse] period:period_]; -} - -@end - -// -// EaseElasticOut -// -@implementation CCEaseElasticOut - --(void) update: (ccTime) t -{ - ccTime newT = 0; - if (t == 0 || t == 1) { - newT = t; - - } else { - float s = period_ / 4; - newT = powf(2, -10 * t) * sinf( (t-s) *M_PI_X_2 / period_) + 1; - } - [other update:newT]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseElasticIn actionWithAction: [other reverse] period:period_]; -} - -@end - -// -// EaseElasticInOut -// -@implementation CCEaseElasticInOut --(void) update: (ccTime) t -{ - ccTime newT = 0; - - if( t == 0 || t == 1 ) - newT = t; - else { - t = t * 2; - if(! period_ ) - period_ = 0.3f * 1.5f; - ccTime s = period_ / 4; - - t = t -1; - if( t < 0 ) - newT = -0.5f * powf(2, 10 * t) * sinf((t - s) * M_PI_X_2 / period_); - else - newT = powf(2, -10 * t) * sinf((t - s) * M_PI_X_2 / period_) * 0.5f + 1; - } - [other update:newT]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseElasticInOut actionWithAction: [other reverse] period:period_]; -} - -@end - -#pragma mark - -#pragma mark EaseBounce actions - -// -// EaseBounce -// -@implementation CCEaseBounce --(ccTime) bounceTime:(ccTime) t -{ - if (t < 1 / 2.75) { - return 7.5625f * t * t; - } - else if (t < 2 / 2.75) { - t -= 1.5f / 2.75f; - return 7.5625f * t * t + 0.75f; - } - else if (t < 2.5 / 2.75) { - t -= 2.25f / 2.75f; - return 7.5625f * t * t + 0.9375f; - } - - t -= 2.625f / 2.75f; - return 7.5625f * t * t + 0.984375f; -} -@end - -// -// EaseBounceIn -// - -@implementation CCEaseBounceIn - --(void) update: (ccTime) t -{ - ccTime newT = 1 - [self bounceTime:1-t]; - [other update:newT]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseBounceOut actionWithAction: [other reverse]]; -} - -@end - -@implementation CCEaseBounceOut - --(void) update: (ccTime) t -{ - ccTime newT = [self bounceTime:t]; - [other update:newT]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseBounceIn actionWithAction: [other reverse]]; -} - -@end - -@implementation CCEaseBounceInOut - --(void) update: (ccTime) t -{ - ccTime newT = 0; - if (t < 0.5) { - t = t * 2; - newT = (1 - [self bounceTime:1-t] ) * 0.5f; - } else - newT = [self bounceTime:t * 2 - 1] * 0.5f + 0.5f; - - [other update:newT]; -} -@end - -#pragma mark - -#pragma mark Ease Back actions - -// -// EaseBackIn -// -@implementation CCEaseBackIn - --(void) update: (ccTime) t -{ - ccTime overshoot = 1.70158f; - [other update: t * t * ((overshoot + 1) * t - overshoot)]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseBackOut actionWithAction: [other reverse]]; -} -@end - -// -// EaseBackOut -// -@implementation CCEaseBackOut --(void) update: (ccTime) t -{ - ccTime overshoot = 1.70158f; - - t = t - 1; - [other update: t * t * ((overshoot + 1) * t + overshoot) + 1]; -} - -- (CCActionInterval*) reverse -{ - return [CCEaseBackIn actionWithAction: [other reverse]]; -} -@end - -// -// EaseBackInOut -// -@implementation CCEaseBackInOut - --(void) update: (ccTime) t -{ - ccTime overshoot = 1.70158f * 1.525f; - - t = t * 2; - if (t < 1) - [other update: (t * t * ((overshoot + 1) * t - overshoot)) / 2]; - else { - t = t - 2; - [other update: (t * t * ((overshoot + 1) * t + overshoot)) / 2 + 1]; - } -} -@end diff --git a/Classes/cocos2d/CCActionGrid.h b/Classes/cocos2d/CCActionGrid.h deleted file mode 100644 index 13b6bc7..0000000 --- a/Classes/cocos2d/CCActionGrid.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 On-Core - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionInterval.h" -#import "CCActionInstant.h" -#import "CCGrid.h" - -@class CCGridBase; - -/** Base class for Grid actions */ -@interface CCGridAction : CCActionInterval -{ - ccGridSize gridSize_; -} - -/** size of the grid */ -@property (nonatomic,readwrite) ccGridSize gridSize; - -/** creates the action with size and duration */ -+(id) actionWithSize:(ccGridSize)size duration:(ccTime)d; -/** initializes the action with size and duration */ --(id) initWithSize:(ccGridSize)gridSize duration:(ccTime)d; -/** returns the grid */ --(CCGridBase *)grid; - -@end - -//////////////////////////////////////////////////////////// - -/** Base class for CCGrid3D actions. - Grid3D actions can modify a non-tiled grid. - */ -@interface CCGrid3DAction : CCGridAction -{ -} - -/** returns the vertex than belongs to certain position in the grid */ --(ccVertex3F)vertex:(ccGridSize)pos; -/** returns the non-transformed vertex than belongs to certain position in the grid */ --(ccVertex3F)originalVertex:(ccGridSize)pos; -/** sets a new vertex to a certain position of the grid */ --(void)setVertex:(ccGridSize)pos vertex:(ccVertex3F)vertex; - -@end - -//////////////////////////////////////////////////////////// - -/** Base class for CCTiledGrid3D actions */ -@interface CCTiledGrid3DAction : CCGridAction -{ -} - -/** returns the tile that belongs to a certain position of the grid */ --(ccQuad3)tile:(ccGridSize)pos; -/** returns the non-transformed tile that belongs to a certain position of the grid */ --(ccQuad3)originalTile:(ccGridSize)pos; -/** sets a new tile to a certain position of the grid */ --(void)setTile:(ccGridSize)pos coords:(ccQuad3)coords; - -@end - -//////////////////////////////////////////////////////////// - -/** CCAccelDeccelAmplitude action */ -@interface CCAccelDeccelAmplitude : CCActionInterval -{ - float rate; - CCActionInterval *other; -} - -/** amplitude rate */ -@property (nonatomic,readwrite) float rate; - -/** creates the action with an inner action that has the amplitude property, and a duration time */ -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d; -/** initializes the action with an inner action that has the amplitude property, and a duration time */ --(id)initWithAction:(CCAction*)action duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCAccelAmplitude action */ -@interface CCAccelAmplitude : CCActionInterval -{ - float rate; - CCActionInterval *other; -} - -/** amplitude rate */ -@property (nonatomic,readwrite) float rate; - -/** creates the action with an inner action that has the amplitude property, and a duration time */ -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d; -/** initializes the action with an inner action that has the amplitude property, and a duration time */ --(id)initWithAction:(CCAction*)action duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCDeccelAmplitude action */ -@interface CCDeccelAmplitude : CCActionInterval -{ - float rate; - CCActionInterval *other; -} - -/** amplitude rate */ -@property (nonatomic,readwrite) float rate; - -/** creates the action with an inner action that has the amplitude property, and a duration time */ -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d; -/** initializes the action with an inner action that has the amplitude property, and a duration time */ --(id)initWithAction:(CCAction*)action duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCStopGrid action. - Don't call this action if another grid action is active. - Call if you want to remove the the grid effect. Example: - [Sequence actions:[Lens ...], [StopGrid action], nil]; - */ -@interface CCStopGrid : CCActionInstant -{ -} -@end - -//////////////////////////////////////////////////////////// - -/** CCReuseGrid action */ -@interface CCReuseGrid : CCActionInstant -{ - int t; -} -/** creates an action with the number of times that the current grid will be reused */ -+(id) actionWithTimes: (int) times; -/** initializes an action with the number of times that the current grid will be reused */ --(id) initWithTimes: (int) times; -@end diff --git a/Classes/cocos2d/CCActionGrid.m b/Classes/cocos2d/CCActionGrid.m deleted file mode 100644 index b2d8f98..0000000 --- a/Classes/cocos2d/CCActionGrid.m +++ /dev/null @@ -1,386 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 On-Core - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionGrid.h" -#import "CCDirector.h" - -#pragma mark - -#pragma mark GridAction - -@implementation CCGridAction - -@synthesize gridSize = gridSize_; - -+(id) actionWithSize:(ccGridSize)size duration:(ccTime)d -{ - return [[[self alloc] initWithSize:size duration:d ] autorelease]; -} - --(id) initWithSize:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithDuration:d]) ) - { - gridSize_ = gSize; - } - - return self; -} - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - - CCGridBase *newgrid = [self grid]; - - CCNode *t = (CCNode*) target_; - CCGridBase *targetGrid = [t grid]; - - if ( targetGrid && targetGrid.reuseGrid > 0 ) - { - if ( targetGrid.active && targetGrid.gridSize.x == gridSize_.x && targetGrid.gridSize.y == gridSize_.y && [targetGrid isKindOfClass:[newgrid class]] ) - [targetGrid reuse]; - else - [NSException raise:@"GridBase" format:@"Cannot reuse grid"]; - } - else - { - if ( targetGrid && targetGrid.active ) - targetGrid.active = NO; - - t.grid = newgrid; - t.grid.active = YES; - } -} - --(CCGridBase *)grid -{ - [NSException raise:@"GridBase" format:@"Abstract class needs implementation"]; - return nil; -} - -- (CCActionInterval*) reverse -{ - return [CCReverseTime actionWithAction:self]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithSize:gridSize_ duration:duration_]; - return copy; -} -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Grid3DAction - -@implementation CCGrid3DAction - --(CCGridBase *)grid -{ - return [CCGrid3D gridWithSize:gridSize_]; -} - --(ccVertex3F)vertex:(ccGridSize)pos -{ - CCGrid3D *g = (CCGrid3D *)[target_ grid]; - return [g vertex:pos]; -} - --(ccVertex3F)originalVertex:(ccGridSize)pos -{ - CCGrid3D *g = (CCGrid3D *)[target_ grid]; - return [g originalVertex:pos]; -} - --(void)setVertex:(ccGridSize)pos vertex:(ccVertex3F)vertex -{ - CCGrid3D *g = (CCGrid3D *)[target_ grid]; - return [g setVertex:pos vertex:vertex]; -} -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark TiledGrid3DAction - -@implementation CCTiledGrid3DAction - --(CCGridBase *)grid -{ - return [CCTiledGrid3D gridWithSize:gridSize_]; -} - --(ccQuad3)tile:(ccGridSize)pos -{ - CCTiledGrid3D *g = (CCTiledGrid3D *)[target_ grid]; - return [g tile:pos]; -} - --(ccQuad3)originalTile:(ccGridSize)pos -{ - CCTiledGrid3D *g = (CCTiledGrid3D *)[target_ grid]; - return [g originalTile:pos]; -} - --(void)setTile:(ccGridSize)pos coords:(ccQuad3)coords -{ - CCTiledGrid3D *g = (CCTiledGrid3D *)[target_ grid]; - [g setTile:pos coords:coords]; -} - -@end - -//////////////////////////////////////////////////////////// - -@interface CCActionInterval (Amplitude) --(void)setAmplitudeRate:(CGFloat)amp; --(CGFloat)getAmplitudeRate; -@end - -@implementation CCActionInterval (Amplitude) --(void)setAmplitudeRate:(CGFloat)amp -{ - [NSException raise:@"IntervalAction (Amplitude)" format:@"Abstract class needs implementation"]; -} - --(CGFloat)getAmplitudeRate -{ - [NSException raise:@"IntervalAction (Amplitude)" format:@"Abstract class needs implementation"]; - return 0; -} -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark AccelDeccelAmplitude - -@implementation CCAccelDeccelAmplitude - -@synthesize rate; - -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d -{ - return [[[self alloc] initWithAction:action duration:d ] autorelease]; -} - --(id)initWithAction:(CCAction *)action duration:(ccTime)d -{ - if ( (self = [super initWithDuration:d]) ) - { - rate = 1.0f; - other = [action retain]; - } - - return self; -} - --(void)dealloc -{ - [other release]; - [super dealloc]; -} - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) update: (ccTime) time -{ - float f = time*2; - - if (f > 1) - { - f -= 1; - f = 1 - f; - } - - [other setAmplitudeRate:powf(f, rate)]; - [other update:time]; -} - -- (CCActionInterval*) reverse -{ - return [CCAccelDeccelAmplitude actionWithAction:[other reverse] duration:duration_]; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark AccelAmplitude - -@implementation CCAccelAmplitude - -@synthesize rate; - -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d -{ - return [[[self alloc] initWithAction:action duration:d ] autorelease]; -} - --(id)initWithAction:(CCAction *)action duration:(ccTime)d -{ - if ( (self = [super initWithDuration:d]) ) - { - rate = 1.0f; - other = [action retain]; - } - - return self; -} - --(void)dealloc -{ - [other release]; - [super dealloc]; -} - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) update: (ccTime) time -{ - [other setAmplitudeRate:powf(time, rate)]; - [other update:time]; -} - -- (CCActionInterval*) reverse -{ - return [CCAccelAmplitude actionWithAction:[other reverse] duration:self.duration]; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark DeccelAmplitude - -@implementation CCDeccelAmplitude - -@synthesize rate; - -+(id)actionWithAction:(CCAction*)action duration:(ccTime)d -{ - return [[[self alloc] initWithAction:action duration:d ] autorelease]; -} - --(id)initWithAction:(CCAction *)action duration:(ccTime)d -{ - if ( (self = [super initWithDuration:d]) ) - { - rate = 1.0f; - other = [action retain]; - } - - return self; -} - --(void)dealloc -{ - [other release]; - [super dealloc]; -} - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) update: (ccTime) time -{ - [other setAmplitudeRate:powf((1-time), rate)]; - [other update:time]; -} - -- (CCActionInterval*) reverse -{ - return [CCDeccelAmplitude actionWithAction:[other reverse] duration:self.duration]; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark StopGrid - -@implementation CCStopGrid - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - - if ( [[self target] grid] && [[[self target] grid] active] ) { - [[[self target] grid] setActive: NO]; - -// [[self target] setGrid: nil]; - } -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark ReuseGrid - -@implementation CCReuseGrid - -+(id)actionWithTimes:(int)times -{ - return [[[self alloc] initWithTimes:times ] autorelease]; -} - --(id)initWithTimes:(int)times -{ - if ( (self = [super init]) ) - t = times; - - return self; -} - --(void)startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - - CCNode *myTarget = (CCNode*) [self target]; - if ( myTarget.grid && myTarget.grid.active ) - myTarget.grid.reuseGrid += t; -} - -@end diff --git a/Classes/cocos2d/CCActionGrid3D.h b/Classes/cocos2d/CCActionGrid3D.h deleted file mode 100644 index a8003f4..0000000 --- a/Classes/cocos2d/CCActionGrid3D.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 On-Core - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionGrid.h" - -/** CCWaves3D action */ -@interface CCWaves3D : CCGrid3DAction -{ - int waves; - float amplitude; - float amplitudeRate; -} - -/** amplitude of the wave */ -@property (nonatomic,readwrite) float amplitude; -/** amplitude rate of the wave */ -@property (nonatomic,readwrite) float amplitudeRate; - -+(id)actionWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; --(id)initWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCFlipX3D action */ -@interface CCFlipX3D : CCGrid3DAction -{ -} - -/** creates the action with duration */ -+(id) actionWithDuration:(ccTime)d; -/** initizlies the action with duration */ --(id) initWithDuration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCFlipY3D action */ -@interface CCFlipY3D : CCFlipX3D -{ -} - -@end - -//////////////////////////////////////////////////////////// - -/** CCLens3D action */ -@interface CCLens3D : CCGrid3DAction -{ - CGPoint position_; - CGPoint positionInPixels_; - float radius_; - float lensEffect_; - BOOL dirty_; -} - -/** lens effect. Defaults to 0.7 - 0 means no effect, 1 is very strong effect */ -@property (nonatomic,readwrite) float lensEffect; -/** lens center position in Points */ -@property (nonatomic,readwrite) CGPoint position; - -/** creates the action with center position in Points, radius, a grid size and duration */ -+(id)actionWithPosition:(CGPoint)pos radius:(float)r grid:(ccGridSize)gridSize duration:(ccTime)d; -/** initializes the action with center position in Points, radius, a grid size and duration */ --(id)initWithPosition:(CGPoint)pos radius:(float)r grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCRipple3D action */ -@interface CCRipple3D : CCGrid3DAction -{ - CGPoint position_; - CGPoint positionInPixels_; - float radius_; - int waves_; - float amplitude_; - float amplitudeRate_; -} - -/** center position in Points */ -@property (nonatomic,readwrite) CGPoint position; -/** amplitude */ -@property (nonatomic,readwrite) float amplitude; -/** amplitude rate */ -@property (nonatomic,readwrite) float amplitudeRate; - -/** creates the action with a position in points, radius, number of waves, amplitude, a grid size and duration */ -+(id)actionWithPosition:(CGPoint)pos radius:(float)r waves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; -/** initializes the action with a position in points, radius, number of waves, amplitude, a grid size and duration */ --(id)initWithPosition:(CGPoint)pos radius:(float)r waves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCShaky3D action */ -@interface CCShaky3D : CCGrid3DAction -{ - int randrange; - BOOL shakeZ; -} - -/** creates the action with a range, shake Z vertices, a grid and duration */ -+(id)actionWithRange:(int)range shakeZ:(BOOL)shakeZ grid:(ccGridSize)gridSize duration:(ccTime)d; -/** initializes the action with a range, shake Z vertices, a grid and duration */ --(id)initWithRange:(int)range shakeZ:(BOOL)shakeZ grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCLiquid action */ -@interface CCLiquid : CCGrid3DAction -{ - int waves; - float amplitude; - float amplitudeRate; - -} - -/** amplitude */ -@property (nonatomic,readwrite) float amplitude; -/** amplitude rate */ -@property (nonatomic,readwrite) float amplitudeRate; - -/** creates the action with amplitude, a grid and duration */ -+(id)actionWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; -/** initializes the action with amplitude, a grid and duration */ --(id)initWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCWaves action */ -@interface CCWaves : CCGrid3DAction -{ - int waves; - float amplitude; - float amplitudeRate; - BOOL vertical; - BOOL horizontal; -} - -/** amplitude */ -@property (nonatomic,readwrite) float amplitude; -/** amplitude rate */ -@property (nonatomic,readwrite) float amplitudeRate; - -/** initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration */ -+(id)actionWithWaves:(int)wav amplitude:(float)amp horizontal:(BOOL)h vertical:(BOOL)v grid:(ccGridSize)gridSize duration:(ccTime)d; -/** creates the action with amplitude, horizontal sin, vertical sin, a grid and duration */ --(id)initWithWaves:(int)wav amplitude:(float)amp horizontal:(BOOL)h vertical:(BOOL)v grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end - -//////////////////////////////////////////////////////////// - -/** CCTwirl action */ -@interface CCTwirl : CCGrid3DAction -{ - CGPoint position_; - CGPoint positionInPixels_; - int twirls_; - float amplitude_; - float amplitudeRate_; -} - -/** twirl center */ -@property (nonatomic,readwrite) CGPoint position; -/** amplitude */ -@property (nonatomic,readwrite) float amplitude; -/** amplitude rate */ -@property (nonatomic,readwrite) float amplitudeRate; - -/** creates the action with center position, number of twirls, amplitude, a grid size and duration */ -+(id)actionWithPosition:(CGPoint)pos twirls:(int)t amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; -/** initializes the action with center position, number of twirls, amplitude, a grid size and duration */ --(id)initWithPosition:(CGPoint)pos twirls:(int)t amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d; - -@end diff --git a/Classes/cocos2d/CCActionGrid3D.m b/Classes/cocos2d/CCActionGrid3D.m deleted file mode 100644 index 1d4a783..0000000 --- a/Classes/cocos2d/CCActionGrid3D.m +++ /dev/null @@ -1,659 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2009 On-Core - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionGrid3D.h" -#import "ccMacros.h" -#import "Support/CGPointExtension.h" - -#pragma mark - -#pragma mark Waves3D - -@implementation CCWaves3D - -@synthesize amplitude; -@synthesize amplitudeRate; - -+(id)actionWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithWaves:wav amplitude:amp grid:gridSize duration:d] autorelease]; -} - --(id)initWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - waves = wav; - amplitude = amp; - amplitudeRate = 1.0f; - } - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithWaves:waves amplitude:amplitude grid:gridSize_ duration:duration_]; - return copy; -} - - --(void)update:(ccTime)time -{ - int i, j; - - for( i = 0; i < (gridSize_.x+1); i++ ) - { - for( j = 0; j < (gridSize_.y+1); j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - v.z += (sinf((CGFloat)M_PI*time*waves*2 + (v.y+v.x) * .01f) * amplitude * amplitudeRate); - [self setVertex:ccg(i,j) vertex:v]; - } - } -} -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark FlipX3D - -@implementation CCFlipX3D - -+(id) actionWithDuration:(ccTime)d -{ - return [[[self alloc] initWithSize:ccg(1,1) duration:d] autorelease]; -} - --(id) initWithDuration:(ccTime)d -{ - return [super initWithSize:ccg(1,1) duration:d]; -} - --(id)initWithSize:(ccGridSize)gSize duration:(ccTime)d -{ - if ( gSize.x != 1 || gSize.y != 1 ) - { - [NSException raise:@"FlipX3D" format:@"Grid size must be (1,1)"]; - } - - return [super initWithSize:gSize duration:d]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithSize:gridSize_ duration:duration_]; - return copy; -} - - --(void)update:(ccTime)time -{ - CGFloat angle = (CGFloat)M_PI * time; // 180 degrees - CGFloat mz = sinf( angle ); - angle = angle / 2.0f; // x calculates degrees from 0 to 90 - CGFloat mx = cosf( angle ); - - ccVertex3F v0, v1, v, diff; - - v0 = [self originalVertex:ccg(1,1)]; - v1 = [self originalVertex:ccg(0,0)]; - - CGFloat x0 = v0.x; - CGFloat x1 = v1.x; - CGFloat x; - ccGridSize a, b, c, d; - - if ( x0 > x1 ) - { - // Normal Grid - a = ccg(0,0); - b = ccg(0,1); - c = ccg(1,0); - d = ccg(1,1); - x = x0; - } - else - { - // Reversed Grid - c = ccg(0,0); - d = ccg(0,1); - a = ccg(1,0); - b = ccg(1,1); - x = x1; - } - - diff.x = ( x - x * mx ); - diff.z = fabsf( floorf( (x * mz) / 4.0f ) ); - -// bottom-left - v = [self originalVertex:a]; - v.x = diff.x; - v.z += diff.z; - [self setVertex:a vertex:v]; - -// upper-left - v = [self originalVertex:b]; - v.x = diff.x; - v.z += diff.z; - [self setVertex:b vertex:v]; - -// bottom-right - v = [self originalVertex:c]; - v.x -= diff.x; - v.z -= diff.z; - [self setVertex:c vertex:v]; - -// upper-right - v = [self originalVertex:d]; - v.x -= diff.x; - v.z -= diff.z; - [self setVertex:d vertex:v]; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark FlipY3D - -@implementation CCFlipY3D - --(void)update:(ccTime)time -{ - CGFloat angle = (CGFloat)M_PI * time; // 180 degrees - CGFloat mz = sinf( angle ); - angle = angle / 2.0f; // x calculates degrees from 0 to 90 - CGFloat my = cosf( angle ); - - ccVertex3F v0, v1, v, diff; - - v0 = [self originalVertex:ccg(1,1)]; - v1 = [self originalVertex:ccg(0,0)]; - - CGFloat y0 = v0.y; - CGFloat y1 = v1.y; - CGFloat y; - ccGridSize a, b, c, d; - - if ( y0 > y1 ) - { - // Normal Grid - a = ccg(0,0); - b = ccg(0,1); - c = ccg(1,0); - d = ccg(1,1); - y = y0; - } - else - { - // Reversed Grid - b = ccg(0,0); - a = ccg(0,1); - d = ccg(1,0); - c = ccg(1,1); - y = y1; - } - - diff.y = y - y * my; - diff.z = fabsf( floorf( (y * mz) / 4.0f ) ); - - // bottom-left - v = [self originalVertex:a]; - v.y = diff.y; - v.z += diff.z; - [self setVertex:a vertex:v]; - - // upper-left - v = [self originalVertex:b]; - v.y -= diff.y; - v.z -= diff.z; - [self setVertex:b vertex:v]; - - // bottom-right - v = [self originalVertex:c]; - v.y = diff.y; - v.z += diff.z; - [self setVertex:c vertex:v]; - - // upper-right - v = [self originalVertex:d]; - v.y -= diff.y; - v.z -= diff.z; - [self setVertex:d vertex:v]; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Lens3D - -@implementation CCLens3D - -@synthesize lensEffect=lensEffect_; - -+(id)actionWithPosition:(CGPoint)pos radius:(float)r grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithPosition:pos radius:r grid:gridSize duration:d] autorelease]; -} - --(id)initWithPosition:(CGPoint)pos radius:(float)r grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - position_ = ccp(-1,-1); - self.position = pos; - radius_ = r; - lensEffect_ = 0.7f; - dirty_ = YES; - } - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithPosition:position_ radius:radius_ grid:gridSize_ duration:duration_]; - return copy; -} - --(void) setPosition:(CGPoint)pos -{ - if( ! CGPointEqualToPoint(pos, position_) ) { - position_ = pos; - positionInPixels_.x = pos.x * CC_CONTENT_SCALE_FACTOR(); - positionInPixels_.y = pos.y * CC_CONTENT_SCALE_FACTOR(); - - dirty_ = YES; - } -} - --(CGPoint) position -{ - return position_; -} - --(void)update:(ccTime)time -{ - if ( dirty_ ) - { - int i, j; - - for( i = 0; i < gridSize_.x+1; i++ ) - { - for( j = 0; j < gridSize_.y+1; j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - CGPoint vect = ccpSub(positionInPixels_, ccp(v.x,v.y)); - CGFloat r = ccpLength(vect); - - if ( r < radius_ ) - { - r = radius_ - r; - CGFloat pre_log = r / radius_; - if ( pre_log == 0 ) pre_log = 0.001f; - float l = logf(pre_log) * lensEffect_; - float new_r = expf( l ) * radius_; - - if ( ccpLength(vect) > 0 ) - { - vect = ccpNormalize(vect); - CGPoint new_vect = ccpMult(vect, new_r); - v.z += ccpLength(new_vect) * lensEffect_; - } - } - - [self setVertex:ccg(i,j) vertex:v]; - } - } - - dirty_ = NO; - } -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Ripple3D - -@implementation CCRipple3D - -@synthesize amplitude = amplitude_; -@synthesize amplitudeRate = amplitudeRate_; - -+(id)actionWithPosition:(CGPoint)pos radius:(float)r waves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithPosition:pos radius:r waves:wav amplitude:amp grid:gridSize duration:d] autorelease]; -} - --(id)initWithPosition:(CGPoint)pos radius:(float)r waves:(int)wav amplitude:(float)amp grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - self.position = pos; - radius_ = r; - waves_ = wav; - amplitude_ = amp; - amplitudeRate_ = 1.0f; - } - - return self; -} - --(CGPoint) position -{ - return position_; -} - --(void) setPosition:(CGPoint)pos -{ - position_ = pos; - positionInPixels_.x = pos.x * CC_CONTENT_SCALE_FACTOR(); - positionInPixels_.y = pos.y * CC_CONTENT_SCALE_FACTOR(); -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithPosition:position_ radius:radius_ waves:waves_ amplitude:amplitude_ grid:gridSize_ duration:duration_]; - return copy; -} - - --(void)update:(ccTime)time -{ - int i, j; - - for( i = 0; i < (gridSize_.x+1); i++ ) - { - for( j = 0; j < (gridSize_.y+1); j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - CGPoint vect = ccpSub(positionInPixels_, ccp(v.x,v.y)); - CGFloat r = ccpLength(vect); - - if ( r < radius_ ) - { - r = radius_ - r; - CGFloat rate = powf( r / radius_, 2); - v.z += (sinf( time*(CGFloat)M_PI*waves_*2 + r * 0.1f) * amplitude_ * amplitudeRate_ * rate ); - } - - [self setVertex:ccg(i,j) vertex:v]; - } - } -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Shaky3D - -@implementation CCShaky3D - -+(id)actionWithRange:(int)range shakeZ:(BOOL)sz grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithRange:range shakeZ:sz grid:gridSize duration:d] autorelease]; -} - --(id)initWithRange:(int)range shakeZ:(BOOL)sz grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - randrange = range; - shakeZ = sz; - } - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithRange:randrange shakeZ:shakeZ grid:gridSize_ duration:duration_]; - return copy; -} - --(void)update:(ccTime)time -{ - int i, j; - - for( i = 0; i < (gridSize_.x+1); i++ ) - { - for( j = 0; j < (gridSize_.y+1); j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - v.x += ( rand() % (randrange*2) ) - randrange; - v.y += ( rand() % (randrange*2) ) - randrange; - if( shakeZ ) - v.z += ( rand() % (randrange*2) ) - randrange; - - [self setVertex:ccg(i,j) vertex:v]; - } - } -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Liquid - -@implementation CCLiquid - -@synthesize amplitude; -@synthesize amplitudeRate; - -+(id)actionWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithWaves:wav amplitude:amp grid:gridSize duration:d] autorelease]; -} - --(id)initWithWaves:(int)wav amplitude:(float)amp grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - waves = wav; - amplitude = amp; - amplitudeRate = 1.0f; - } - - return self; -} - --(void)update:(ccTime)time -{ - int i, j; - - for( i = 1; i < gridSize_.x; i++ ) - { - for( j = 1; j < gridSize_.y; j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - v.x = (v.x + (sinf(time*(CGFloat)M_PI*waves*2 + v.x * .01f) * amplitude * amplitudeRate)); - v.y = (v.y + (sinf(time*(CGFloat)M_PI*waves*2 + v.y * .01f) * amplitude * amplitudeRate)); - [self setVertex:ccg(i,j) vertex:v]; - } - } -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithWaves:waves amplitude:amplitude grid:gridSize_ duration:duration_]; - return copy; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Waves - -@implementation CCWaves - -@synthesize amplitude; -@synthesize amplitudeRate; - -+(id)actionWithWaves:(int)wav amplitude:(float)amp horizontal:(BOOL)h vertical:(BOOL)v grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithWaves:wav amplitude:amp horizontal:h vertical:v grid:gridSize duration:d] autorelease]; -} - --(id)initWithWaves:(int)wav amplitude:(float)amp horizontal:(BOOL)h vertical:(BOOL)v grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - waves = wav; - amplitude = amp; - amplitudeRate = 1.0f; - horizontal = h; - vertical = v; - } - - return self; -} - --(void)update:(ccTime)time -{ - int i, j; - - for( i = 0; i < (gridSize_.x+1); i++ ) - { - for( j = 0; j < (gridSize_.y+1); j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - - if ( vertical ) - v.x = (v.x + (sinf(time*(CGFloat)M_PI*waves*2 + v.y * .01f) * amplitude * amplitudeRate)); - - if ( horizontal ) - v.y = (v.y + (sinf(time*(CGFloat)M_PI*waves*2 + v.x * .01f) * amplitude * amplitudeRate)); - - [self setVertex:ccg(i,j) vertex:v]; - } - } -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithWaves:waves amplitude:amplitude horizontal:horizontal vertical:vertical grid:gridSize_ duration:duration_]; - return copy; -} - -@end - -//////////////////////////////////////////////////////////// - -#pragma mark - -#pragma mark Twirl - -@implementation CCTwirl - -@synthesize amplitude = amplitude_; -@synthesize amplitudeRate = amplitudeRate_; - -+(id)actionWithPosition:(CGPoint)pos twirls:(int)t amplitude:(float)amp grid:(ccGridSize)gridSize duration:(ccTime)d -{ - return [[[self alloc] initWithPosition:pos twirls:t amplitude:amp grid:gridSize duration:d] autorelease]; -} - --(id)initWithPosition:(CGPoint)pos twirls:(int)t amplitude:(float)amp grid:(ccGridSize)gSize duration:(ccTime)d -{ - if ( (self = [super initWithSize:gSize duration:d]) ) - { - self.position = pos; - twirls_ = t; - amplitude_ = amp; - amplitudeRate_ = 1.0f; - } - - return self; -} - --(void) setPosition:(CGPoint)pos -{ - position_ = pos; - positionInPixels_.x = pos.x * CC_CONTENT_SCALE_FACTOR(); - positionInPixels_.y = pos.y * CC_CONTENT_SCALE_FACTOR(); -} - --(CGPoint) position -{ - return position_; -} - --(void)update:(ccTime)time -{ - int i, j; - CGPoint c = positionInPixels_; - - for( i = 0; i < (gridSize_.x+1); i++ ) - { - for( j = 0; j < (gridSize_.y+1); j++ ) - { - ccVertex3F v = [self originalVertex:ccg(i,j)]; - - CGPoint avg = ccp(i-(gridSize_.x/2.0f), j-(gridSize_.y/2.0f)); - CGFloat r = ccpLength( avg ); - - CGFloat amp = 0.1f * amplitude_ * amplitudeRate_; - CGFloat a = r * cosf( (CGFloat)M_PI/2.0f + time * (CGFloat)M_PI * twirls_ * 2 ) * amp; - - float cosA = cosf(a); - float sinA = sinf(a); - - CGPoint d = { - sinA * (v.y-c.y) + cosA * (v.x-c.x), - cosA * (v.y-c.y) - sinA * (v.x-c.x) - }; - - v.x = c.x + d.x; - v.y = c.y + d.y; - - [self setVertex:ccg(i,j) vertex:v]; - } - } -} - --(id) copyWithZone: (NSZone*) zone -{ - CCGridAction *copy = [[[self class] allocWithZone:zone] initWithPosition:position_ - twirls:twirls_ - amplitude:amplitude_ - grid:gridSize_ - duration:duration_]; - return copy; -} - - -@end diff --git a/Classes/cocos2d/CCActionInstant.h b/Classes/cocos2d/CCActionInstant.h deleted file mode 100644 index 40eb15f..0000000 --- a/Classes/cocos2d/CCActionInstant.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCAction.h" - -/** Instant actions are immediate actions. They don't have a duration like - the CCIntervalAction actions. -*/ -@interface CCActionInstant : CCFiniteTimeAction -{ -} -@end - -/** Show the node - */ - @interface CCShow : CCActionInstant -{ -} -@end - -/** Hide the node - */ -@interface CCHide : CCActionInstant -{ -} -@end - -/** Toggles the visibility of a node - */ -@interface CCToggleVisibility : CCActionInstant -{ -} -@end - -/** Flips the sprite horizontally - @since v0.99.0 - */ -@interface CCFlipX : CCActionInstant -{ - BOOL flipX; -} -+(id) actionWithFlipX:(BOOL)x; --(id) initWithFlipX:(BOOL)x; -@end - -/** Flips the sprite vertically - @since v0.99.0 - */ -@interface CCFlipY : CCActionInstant -{ - BOOL flipY; -} -+(id) actionWithFlipY:(BOOL)y; --(id) initWithFlipY:(BOOL)y; -@end - -/** Places the node in a certain position - */ -@interface CCPlace : CCActionInstant -{ - CGPoint position; -} -/** creates a Place action with a position */ -+(id) actionWithPosition: (CGPoint) pos; -/** Initializes a Place action with a position */ --(id) initWithPosition: (CGPoint) pos; -@end - -/** Calls a 'callback' - */ -@interface CCCallFunc : CCActionInstant -{ - id targetCallback_; - SEL selector_; -} -/** creates the action with the callback */ -+(id) actionWithTarget: (id) t selector:(SEL) s; -/** initializes the action with the callback */ --(id) initWithTarget: (id) t selector:(SEL) s; -/** exeuctes the callback */ --(void) execute; -@end - -/** Calls a 'callback' with the node as the first argument. - N means Node - */ -@interface CCCallFuncN : CCCallFunc -{ -} -@end - -typedef void (*CC_CALLBACK_ND)(id, SEL, id, void *); -/** Calls a 'callback' with the node as the first argument and the 2nd argument is data. - * ND means: Node and Data. Data is void *, so it could be anything. - */ -@interface CCCallFuncND : CCCallFuncN -{ - void *data_; - CC_CALLBACK_ND callbackMethod_; -} - -/** Invocation object that has the target#selector and the parameters */ -@property (nonatomic,readwrite) CC_CALLBACK_ND callbackMethod; - -/** creates the action with the callback and the data to pass as an argument */ -+(id) actionWithTarget: (id) t selector:(SEL) s data:(void*)d; -/** initializes the action with the callback and the data to pass as an argument */ --(id) initWithTarget:(id) t selector:(SEL) s data:(void*) d; -@end - -/** Calls a 'callback' with an object as the first argument. - O means Object. - @since v0.99.5 - */ -@interface CCCallFuncO : CCCallFunc -{ - id object_; -} -/** creates the action with the callback and the object to pass as an argument */ -+(id) actionWithTarget: (id) t selector:(SEL) s object:(id)object; -/** initializes the action with the callback and the object to pass as an argument */ --(id) initWithTarget:(id) t selector:(SEL) s object:(id)object; - -@end - -#pragma mark Blocks Support - -#if NS_BLOCKS_AVAILABLE - -/** Executes a callback using a block. - */ -@interface CCCallBlock : CCActionInstant -{ - void (^block_)(); -} - -/** creates the action with the specified block, to be used as a callback. - The block will be "copied". - */ -+(id) actionWithBlock:(void(^)())block; - -/** initialized the action with the specified block, to be used as a callback. - The block will be "copied". - */ --(id) initWithBlock:(void(^)())block; - -/** executes the callback */ --(void) execute; -@end - -@class CCNode; - -/** Executes a callback using a block with a single CCNode parameter. - */ -@interface CCCallBlockN : CCActionInstant -{ - void (^block_)(CCNode *); -} - -/** creates the action with the specified block, to be used as a callback. - The block will be "copied". - */ -+(id) actionWithBlock:(void(^)(CCNode *node))block; - -/** initialized the action with the specified block, to be used as a callback. - The block will be "copied". - */ --(id) initWithBlock:(void(^)(CCNode *node))block; - -/** executes the callback */ --(void) execute; -@end - -#endif diff --git a/Classes/cocos2d/CCActionInstant.m b/Classes/cocos2d/CCActionInstant.m deleted file mode 100644 index 2b9072c..0000000 --- a/Classes/cocos2d/CCActionInstant.m +++ /dev/null @@ -1,472 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCBlockSupport.h" -#import "CCActionInstant.h" -#import "CCNode.h" -#import "CCSprite.h" - - -// -// InstantAction -// -#pragma mark CCActionInstant - -@implementation CCActionInstant - --(id) init -{ - if( (self=[super init]) ) - duration_ = 0; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] init]; - return copy; -} - -- (BOOL) isDone -{ - return YES; -} - --(void) step: (ccTime) dt -{ - [self update: 1]; -} - --(void) update: (ccTime) t -{ - // ignore -} - --(CCFiniteTimeAction*) reverse -{ - return [[self copy] autorelease]; -} -@end - -// -// Show -// -#pragma mark CCShow - -@implementation CCShow --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - ((CCNode *)target_).visible = YES; -} - --(CCFiniteTimeAction*) reverse -{ - return [CCHide action]; -} -@end - -// -// Hide -// -#pragma mark CCHide - -@implementation CCHide --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - ((CCNode *)target_).visible = NO; -} - --(CCFiniteTimeAction*) reverse -{ - return [CCShow action]; -} -@end - -// -// ToggleVisibility -// -#pragma mark CCToggleVisibility - -@implementation CCToggleVisibility --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - ((CCNode *)target_).visible = !((CCNode *)target_).visible; -} -@end - -// -// FlipX -// -#pragma mark CCFlipX - -@implementation CCFlipX -+(id) actionWithFlipX:(BOOL)x -{ - return [[[self alloc] initWithFlipX:x] autorelease]; -} - --(id) initWithFlipX:(BOOL)x -{ - if(( self=[super init])) - flipX = x; - - return self; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [(CCSprite*)aTarget setFlipX:flipX]; -} - --(CCFiniteTimeAction*) reverse -{ - return [CCFlipX actionWithFlipX:!flipX]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithFlipX:flipX]; - return copy; -} -@end - -// -// FlipY -// -#pragma mark CCFlipY - -@implementation CCFlipY -+(id) actionWithFlipY:(BOOL)y -{ - return [[[self alloc] initWithFlipY:y] autorelease]; -} - --(id) initWithFlipY:(BOOL)y -{ - if(( self=[super init])) - flipY = y; - - return self; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [(CCSprite*)aTarget setFlipY:flipY]; -} - --(CCFiniteTimeAction*) reverse -{ - return [CCFlipY actionWithFlipY:!flipY]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithFlipY:flipY]; - return copy; -} -@end - - -// -// Place -// -#pragma mark CCPlace - -@implementation CCPlace -+(id) actionWithPosition: (CGPoint) pos -{ - return [[[self alloc]initWithPosition:pos]autorelease]; -} - --(id) initWithPosition: (CGPoint) pos -{ - if( (self=[super init]) ) - position = pos; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithPosition: position]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - ((CCNode *)target_).position = position; -} - -@end - -// -// CallFunc -// -#pragma mark CCCallFunc - -@implementation CCCallFunc -+(id) actionWithTarget: (id) t selector:(SEL) s -{ - return [[[self alloc] initWithTarget: t selector: s] autorelease]; -} - --(id) initWithTarget: (id) t selector:(SEL) s -{ - if( (self=[super init]) ) { - targetCallback_ = [t retain]; - selector_ = s; - } - return self; -} - --(NSString*) description -{ - return [NSString stringWithFormat:@"<%@ = %08X | Tag = %i | target = %@ | selector = %@>", - [self class], - self, - tag_, - [targetCallback_ class], - NSStringFromSelector(selector_) - ]; -} - --(void) dealloc -{ - [targetCallback_ release]; - [super dealloc]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithTarget:targetCallback_ selector:selector_]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [self execute]; -} - --(void) execute -{ - [targetCallback_ performSelector:selector_]; -} -@end - -// -// CallFuncN -// -#pragma mark CCCallFuncN - -@implementation CCCallFuncN - --(void) execute -{ - [targetCallback_ performSelector:selector_ withObject:target_]; -} -@end - -// -// CallFuncND -// -#pragma mark CCCallFuncND - -@implementation CCCallFuncND - -@synthesize callbackMethod = callbackMethod_; - -+(id) actionWithTarget:(id)t selector:(SEL)s data:(void*)d -{ - return [[[self alloc] initWithTarget:t selector:s data:d] autorelease]; -} - --(id) initWithTarget:(id)t selector:(SEL)s data:(void*)d -{ - if( (self=[super initWithTarget:t selector:s]) ) { - data_ = d; - -#if COCOS2D_DEBUG - NSMethodSignature * sig = [t methodSignatureForSelector:s]; // added - NSAssert(sig !=0 , @"Signature not found for selector - does it have the following form? -(void)name:(id)sender data:(void*)data"); -#endif - callbackMethod_ = (CC_CALLBACK_ND) [t methodForSelector:s]; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithTarget:targetCallback_ selector:selector_ data:data_]; - return copy; -} - --(void) dealloc -{ - // nothing to dealloc really. Everything is dealloc on super (CCCallFuncN) - [super dealloc]; -} - --(void) execute -{ - callbackMethod_(targetCallback_,selector_,target_, data_); -} -@end - -@implementation CCCallFuncO - -+(id) actionWithTarget: (id) t selector:(SEL) s object:(id)object -{ - return [[[self alloc] initWithTarget:t selector:s object:object] autorelease]; -} - --(id) initWithTarget:(id) t selector:(SEL) s object:(id)object -{ - if( (self=[super initWithTarget:t selector:s] ) ) - object_ = [object retain]; - - return self; -} - -- (void) dealloc -{ - [object_ release]; - [super dealloc]; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithTarget:targetCallback_ selector:selector_ object:object_]; - return copy; -} - - --(void) execute -{ - [targetCallback_ performSelector:selector_ withObject:object_]; -} - -@end - - -#pragma mark - -#pragma mark Blocks - -#if NS_BLOCKS_AVAILABLE - -#pragma mark CCCallBlock - -@implementation CCCallBlock - -+(id) actionWithBlock:(void(^)())block -{ - return [[[self alloc] initWithBlock:block] autorelease]; -} - --(id) initWithBlock:(void(^)())block -{ - if ((self = [super init])) - block_ = [block copy]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithBlock:block_]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [self execute]; -} - --(void) execute -{ - block_(); -} - --(void) dealloc -{ - [block_ release]; - [super dealloc]; -} - -@end - -#pragma mark CCCallBlockN - -@implementation CCCallBlockN - -+(id) actionWithBlock:(void(^)(CCNode *node))block -{ - return [[[self alloc] initWithBlock:block] autorelease]; -} - --(id) initWithBlock:(void(^)(CCNode *node))block -{ - if ((self = [super init])) - block_ = [block copy]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCActionInstant *copy = [[[self class] allocWithZone: zone] initWithBlock:block_]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [self execute]; -} - --(void) execute -{ - block_(target_); -} - --(void) dealloc -{ - [block_ release]; - [super dealloc]; -} - -@end - - -#endif // NS_BLOCKS_AVAILABLE diff --git a/Classes/cocos2d/CCActionInterval.h b/Classes/cocos2d/CCActionInterval.h deleted file mode 100644 index 035bd50..0000000 --- a/Classes/cocos2d/CCActionInterval.h +++ /dev/null @@ -1,384 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCNode.h" -#import "CCAction.h" -#import "CCProtocols.h" - -#include - -/** An interval action is an action that takes place within a certain period of time. -It has an start time, and a finish time. The finish time is the parameter -duration plus the start time. - -These CCActionInterval actions have some interesting properties, like: - - They can run normally (default) - - They can run reversed with the reverse method - - They can run with the time altered with the Accelerate, AccelDeccel and Speed actions. - -For example, you can simulate a Ping Pong effect running the action normally and -then running it again in Reverse mode. - -Example: - - CCAction * pingPongAction = [CCSequence actions: action, [action reverse], nil]; -*/ -@interface CCActionInterval: CCFiniteTimeAction -{ - ccTime elapsed_; - BOOL firstTick_; -} - -/** how many seconds had elapsed since the actions started to run. */ -@property (nonatomic,readonly) ccTime elapsed; - -/** creates the action */ -+(id) actionWithDuration: (ccTime) d; -/** initializes the action */ --(id) initWithDuration: (ccTime) d; -/** returns YES if the action has finished */ --(BOOL) isDone; -/** returns a reversed action */ -- (CCActionInterval*) reverse; -@end - -/** Runs actions sequentially, one after another - */ -@interface CCSequence : CCActionInterval -{ - CCFiniteTimeAction *actions[2]; - ccTime split; - int last; -} -/** helper contructor to create an array of sequenceable actions */ -+(id) actions: (CCFiniteTimeAction*) action1, ... NS_REQUIRES_NIL_TERMINATION; -/** creates the action */ -+(id) actionOne:(CCFiniteTimeAction*)actionOne two:(CCFiniteTimeAction*)actionTwo; -/** initializes the action */ --(id) initOne:(CCFiniteTimeAction*)actionOne two:(CCFiniteTimeAction*)actionTwo; -@end - - -/** Repeats an action a number of times. - * To repeat an action forever use the CCRepeatForever action. - */ -@interface CCRepeat : CCActionInterval -{ - unsigned int times_; - unsigned int total_; - CCFiniteTimeAction *other_; -} -/** creates a CCRepeat action. Times is an unsigned integer between 1 and pow(2,30) */ -+(id) actionWithAction:(CCFiniteTimeAction*)action times: (unsigned int)times; -/** initializes a CCRepeat action. Times is an unsigned integer between 1 and pow(2,30) */ --(id) initWithAction:(CCFiniteTimeAction*)action times: (unsigned int)times; -@end - -/** Spawn a new action immediately - */ -@interface CCSpawn : CCActionInterval -{ - CCFiniteTimeAction *one; - CCFiniteTimeAction *two; -} -/** helper constructor to create an array of spawned actions */ -+(id) actions: (CCFiniteTimeAction*) action1, ... NS_REQUIRES_NIL_TERMINATION; -/** creates the Spawn action */ -+(id) actionOne: (CCFiniteTimeAction*) one two:(CCFiniteTimeAction*) two; -/** initializes the Spawn action with the 2 actions to spawn */ --(id) initOne: (CCFiniteTimeAction*) one two:(CCFiniteTimeAction*) two; -@end - -/** Rotates a CCNode object to a certain angle by modifying it's - rotation attribute. - The direction will be decided by the shortest angle. -*/ -@interface CCRotateTo : CCActionInterval -{ - float dstAngle; - float startAngle; - float diffAngle; -} -/** creates the action */ -+(id) actionWithDuration:(ccTime)duration angle:(float)angle; -/** initializes the action */ --(id) initWithDuration:(ccTime)duration angle:(float)angle; -@end - -/** Rotates a CCNode object clockwise a number of degrees by modiying it's rotation attribute. -*/ -@interface CCRotateBy : CCActionInterval -{ - float angle; - float startAngle; -} -/** creates the action */ -+(id) actionWithDuration:(ccTime)duration angle:(float)deltaAngle; -/** initializes the action */ --(id) initWithDuration:(ccTime)duration angle:(float)deltaAngle; -@end - -/** Moves a CCNode object to the position x,y. x and y are absolute coordinates by modifying it's position attribute. -*/ -@interface CCMoveTo : CCActionInterval -{ - CGPoint endPosition; - CGPoint startPosition; - CGPoint delta; -} -/** creates the action */ -+(id) actionWithDuration:(ccTime)duration position:(CGPoint)position; -/** initializes the action */ --(id) initWithDuration:(ccTime)duration position:(CGPoint)position; -@end - -/** Moves a CCNode object x,y pixels by modifying it's position attribute. - x and y are relative to the position of the object. - Duration is is seconds. -*/ -@interface CCMoveBy : CCMoveTo -{ -} -/** creates the action */ -+(id) actionWithDuration: (ccTime)duration position:(CGPoint)deltaPosition; -/** initializes the action */ --(id) initWithDuration: (ccTime)duration position:(CGPoint)deltaPosition; -@end - -/** Moves a CCNode object simulating a parabolic jump movement by modifying it's position attribute. -*/ - @interface CCJumpBy : CCActionInterval -{ - CGPoint startPosition; - CGPoint delta; - ccTime height; - int jumps; -} -/** creates the action */ -+(id) actionWithDuration: (ccTime)duration position:(CGPoint)position height:(ccTime)height jumps:(int)jumps; -/** initializes the action */ --(id) initWithDuration: (ccTime)duration position:(CGPoint)position height:(ccTime)height jumps:(int)jumps; -@end - -/** Moves a CCNode object to a parabolic position simulating a jump movement by modifying it's position attribute. -*/ - @interface CCJumpTo : CCJumpBy -{ -} -@end - -/** bezier configuration structure - */ -typedef struct _ccBezierConfig { - //! end position of the bezier - CGPoint endPosition; - //! Bezier control point 1 - CGPoint controlPoint_1; - //! Bezier control point 2 - CGPoint controlPoint_2; -} ccBezierConfig; - -/** An action that moves the target with a cubic Bezier curve by a certain distance. - */ -@interface CCBezierBy : CCActionInterval -{ - ccBezierConfig config; - CGPoint startPosition; -} - -/** creates the action with a duration and a bezier configuration */ -+(id) actionWithDuration: (ccTime) t bezier:(ccBezierConfig) c; - -/** initializes the action with a duration and a bezier configuration */ --(id) initWithDuration: (ccTime) t bezier:(ccBezierConfig) c; -@end - -/** An action that moves the target with a cubic Bezier curve to a destination point. - @since v0.8.2 - */ -@interface CCBezierTo : CCBezierBy -{ -} -@end - -/** Scales a CCNode object to a zoom factor by modifying it's scale attribute. - @warning This action doesn't support "reverse" - */ -@interface CCScaleTo : CCActionInterval -{ - float scaleX; - float scaleY; - float startScaleX; - float startScaleY; - float endScaleX; - float endScaleY; - float deltaX; - float deltaY; -} -/** creates the action with the same scale factor for X and Y */ -+(id) actionWithDuration: (ccTime)duration scale:(float) s; -/** initializes the action with the same scale factor for X and Y */ --(id) initWithDuration: (ccTime)duration scale:(float) s; -/** creates the action with and X factor and a Y factor */ -+(id) actionWithDuration: (ccTime)duration scaleX:(float) sx scaleY:(float)sy; -/** initializes the action with and X factor and a Y factor */ --(id) initWithDuration: (ccTime)duration scaleX:(float) sx scaleY:(float)sy; -@end - -/** Scales a CCNode object a zoom factor by modifying it's scale attribute. -*/ -@interface CCScaleBy : CCScaleTo -{ -} -@end - -/** Blinks a CCNode object by modifying it's visible attribute -*/ -@interface CCBlink : CCActionInterval -{ - int times; -} -/** creates the action */ -+(id) actionWithDuration: (ccTime)duration blinks:(unsigned int)blinks; -/** initilizes the action */ --(id) initWithDuration: (ccTime)duration blinks:(unsigned int)blinks; -@end - -/** Fades In an object that implements the CCRGBAProtocol protocol. It modifies the opacity from 0 to 255. - The "reverse" of this action is FadeOut - */ -@interface CCFadeIn : CCActionInterval -{ -} -@end - -/** Fades Out an object that implements the CCRGBAProtocol protocol. It modifies the opacity from 255 to 0. - The "reverse" of this action is FadeIn -*/ -@interface CCFadeOut : CCActionInterval -{ -} -@end - -/** Fades an object that implements the CCRGBAProtocol protocol. It modifies the opacity from the current value to a custom one. - @warning This action doesn't support "reverse" - */ -@interface CCFadeTo : CCActionInterval -{ - GLubyte toOpacity; - GLubyte fromOpacity; -} -/** creates an action with duration and opactiy */ -+(id) actionWithDuration:(ccTime)duration opacity:(GLubyte)opactiy; -/** initializes the action with duration and opacity */ --(id) initWithDuration:(ccTime)duration opacity:(GLubyte)opacity; -@end - -/** Tints a CCNode that implements the CCNodeRGB protocol from current tint to a custom one. - @warning This action doesn't support "reverse" - @since v0.7.2 -*/ -@interface CCTintTo : CCActionInterval -{ - ccColor3B to; - ccColor3B from; -} -/** creates an action with duration and color */ -+(id) actionWithDuration:(ccTime)duration red:(GLubyte)red green:(GLubyte)green blue:(GLubyte)blue; -/** initializes the action with duration and color */ --(id) initWithDuration:(ccTime)duration red:(GLubyte)red green:(GLubyte)green blue:(GLubyte)blue; -@end - -/** Tints a CCNode that implements the CCNodeRGB protocol from current tint to a custom one. - @since v0.7.2 - */ -@interface CCTintBy : CCActionInterval -{ - GLshort deltaR, deltaG, deltaB; - GLshort fromR, fromG, fromB; -} -/** creates an action with duration and color */ -+(id) actionWithDuration:(ccTime)duration red:(GLshort)deltaRed green:(GLshort)deltaGreen blue:(GLshort)deltaBlue; -/** initializes the action with duration and color */ --(id) initWithDuration:(ccTime)duration red:(GLshort)deltaRed green:(GLshort)deltaGreen blue:(GLshort)deltaBlue; -@end - -/** Delays the action a certain amount of seconds -*/ -@interface CCDelayTime : CCActionInterval -{ -} -@end - -/** Executes an action in reverse order, from time=duration to time=0 - - @warning Use this action carefully. This action is not - sequenceable. Use it as the default "reversed" method - of your own actions, but using it outside the "reversed" - scope is not recommended. -*/ -@interface CCReverseTime : CCActionInterval -{ - CCFiniteTimeAction * other; -} -/** creates the action */ -+(id) actionWithAction: (CCFiniteTimeAction*) action; -/** initializes the action */ --(id) initWithAction: (CCFiniteTimeAction*) action; -@end - - -@class CCAnimation; -@class CCTexture2D; -/** Animates a sprite given the name of an Animation */ -@interface CCAnimate : CCActionInterval -{ - CCAnimation *animation_; - id origFrame; - BOOL restoreOriginalFrame; -} -/** animation used for the animage */ -@property (readwrite,nonatomic,retain) CCAnimation * animation; - -/** creates the action with an Animation and will restore the original frame when the animation is over */ -+(id) actionWithAnimation:(CCAnimation*) a; -/** initializes the action with an Animation and will restore the original frame when the animtion is over */ --(id) initWithAnimation:(CCAnimation*) a; -/** creates the action with an Animation */ -+(id) actionWithAnimation:(CCAnimation*) a restoreOriginalFrame:(BOOL)b; -/** initializes the action with an Animation */ --(id) initWithAnimation:(CCAnimation*) a restoreOriginalFrame:(BOOL)b; -/** creates an action with a duration, animation and depending of the restoreOriginalFrame, it will restore the original frame or not. - The 'delay' parameter of the animation will be overrided by the duration parameter. - @since v0.99.0 - */ -+(id) actionWithDuration:(ccTime)duration animation:(CCAnimation*)animation restoreOriginalFrame:(BOOL)b; -/** initializes an action with a duration, animation and depending of the restoreOriginalFrame, it will restore the original frame or not. - The 'delay' parameter of the animation will be overrided by the duration parameter. - @since v0.99.0 - */ --(id) initWithDuration:(ccTime)duration animation:(CCAnimation*)animation restoreOriginalFrame:(BOOL)b; -@end \ No newline at end of file diff --git a/Classes/cocos2d/CCActionInterval.m b/Classes/cocos2d/CCActionInterval.m deleted file mode 100644 index 148bb0a..0000000 --- a/Classes/cocos2d/CCActionInterval.m +++ /dev/null @@ -1,1213 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - - -#import "CCActionInterval.h" -#import "CCSprite.h" -#import "CCSpriteFrame.h" -#import "CCAnimation.h" -#import "CCNode.h" -#import "Support/CGPointExtension.h" - -// -// IntervalAction -// -#pragma mark - -#pragma mark IntervalAction -@implementation CCActionInterval - -@synthesize elapsed = elapsed_; - --(id) init -{ - NSAssert(NO, @"IntervalActionInit: Init not supported. Use InitWithDuration"); - [self release]; - return nil; -} - -+(id) actionWithDuration: (ccTime) d -{ - return [[[self alloc] initWithDuration:d ] autorelease]; -} - --(id) initWithDuration: (ccTime) d -{ - if( (self=[super init]) ) { - duration_ = d; - - // prevent division by 0 - // This comparison could be in step:, but it might decrease the performance - // by 3% in heavy based action games. - if( duration_ == 0 ) - duration_ = FLT_EPSILON; - elapsed_ = 0; - firstTick_ = YES; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] ]; - return copy; -} - -- (BOOL) isDone -{ - return (elapsed_ >= duration_); -} - --(void) step: (ccTime) dt -{ - if( firstTick_ ) { - firstTick_ = NO; - elapsed_ = 0; - } else - elapsed_ += dt; - - [self update: MIN(1, elapsed_/duration_)]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - elapsed_ = 0.0f; - firstTick_ = YES; -} - -- (CCActionInterval*) reverse -{ - NSAssert(NO, @"CCIntervalAction: reverse not implemented."); - return nil; -} -@end - -// -// Sequence -// -#pragma mark - -#pragma mark Sequence -@implementation CCSequence -+(id) actionOne: (CCFiniteTimeAction*) one two: (CCFiniteTimeAction*) two -{ - return [[[self alloc] initOne:one two:two ] autorelease]; -} - -+(id) actions: (CCFiniteTimeAction*) action1, ... -{ - va_list params; - va_start(params,action1); - - CCFiniteTimeAction *now; - CCFiniteTimeAction *prev = action1; - - while( action1 ) { - now = va_arg(params,CCFiniteTimeAction*); - if ( now ) - prev = [self actionOne: prev two: now]; - else - break; - } - va_end(params); - return prev; -} - --(id) initOne: (CCFiniteTimeAction*) one_ two: (CCFiniteTimeAction*) two_ -{ - NSAssert( one_!=nil, @"Sequence: argument one must be non-nil"); - NSAssert( two_!=nil, @"Sequence: argument two must be non-nil"); - - CCFiniteTimeAction *one = one_; - CCFiniteTimeAction *two = two_; - - ccTime d = [one duration] + [two duration]; - [super initWithDuration: d]; - - actions[0] = [one retain]; - actions[1] = [two retain]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone:zone] initOne:[[actions[0] copy] autorelease] two:[[actions[1] copy] autorelease] ]; - return copy; -} - --(void) dealloc -{ - [actions[0] release]; - [actions[1] release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - split = [actions[0] duration] / duration_; - last = -1; -} - --(void) stop -{ - [actions[0] stop]; - [actions[1] stop]; - [super stop]; -} - --(void) update: (ccTime) t -{ - int found = 0; - ccTime new_t = 0.0f; - - if( t >= split ) { - found = 1; - if ( split == 1 ) - new_t = 1; - else - new_t = (t-split) / (1 - split ); - } else { - found = 0; - if( split != 0 ) - new_t = t / split; - else - new_t = 1; - } - - if (last == -1 && found==1) { - [actions[0] startWithTarget:target_]; - [actions[0] update:1.0f]; - [actions[0] stop]; - } - - if (last != found ) { - if( last != -1 ) { - [actions[last] update: 1.0f]; - [actions[last] stop]; - } - [actions[found] startWithTarget:target_]; - } - [actions[found] update: new_t]; - last = found; -} - -- (CCActionInterval *) reverse -{ - return [[self class] actionOne: [actions[1] reverse] two: [actions[0] reverse ] ]; -} -@end - -// -// Repeat -// -#pragma mark - -#pragma mark CCRepeat -@implementation CCRepeat -+(id) actionWithAction:(CCFiniteTimeAction*)action times:(unsigned int)times -{ - return [[[self alloc] initWithAction:action times:times] autorelease]; -} - --(id) initWithAction:(CCFiniteTimeAction*)action times:(unsigned int)times -{ - ccTime d = [action duration] * times; - - if( (self=[super initWithDuration: d ]) ) { - times_ = times; - other_ = [action retain]; - - total_ = 0; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone:zone] initWithAction:[[other_ copy] autorelease] times:times_]; - return copy; -} - --(void) dealloc -{ - [other_ release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - total_ = 0; - [super startWithTarget:aTarget]; - [other_ startWithTarget:aTarget]; -} - --(void) stop -{ - [other_ stop]; - [super stop]; -} - - -// issue #80. Instead of hooking step:, hook update: since it can be called by any -// container action like Repeat, Sequence, AccelDeccel, etc.. --(void) update:(ccTime) dt -{ - ccTime t = dt * times_; - if( t > total_+1 ) { - [other_ update:1.0f]; - total_++; - [other_ stop]; - [other_ startWithTarget:target_]; - - // repeat is over ? - if( total_== times_ ) - // so, set it in the original position - [other_ update:0]; - else { - // no ? start next repeat with the right update - // to prevent jerk (issue #390) - [other_ update: t-total_]; - } - - } else { - - float r = fmodf(t, 1.0f); - - // fix last repeat position - // else it could be 0. - if( dt== 1.0f) { - r = 1.0f; - total_++; // this is the added line - } - [other_ update: MIN(r,1)]; - } -} - --(BOOL) isDone -{ - return ( total_ == times_ ); -} - -- (CCActionInterval *) reverse -{ - return [[self class] actionWithAction:[other_ reverse] times:times_]; -} -@end - -// -// Spawn -// -#pragma mark - -#pragma mark Spawn - -@implementation CCSpawn -+(id) actions: (CCFiniteTimeAction*) action1, ... -{ - va_list params; - va_start(params,action1); - - CCFiniteTimeAction *now; - CCFiniteTimeAction *prev = action1; - - while( action1 ) { - now = va_arg(params,CCFiniteTimeAction*); - if ( now ) - prev = [self actionOne: prev two: now]; - else - break; - } - va_end(params); - return prev; -} - -+(id) actionOne: (CCFiniteTimeAction*) one two: (CCFiniteTimeAction*) two -{ - return [[[self alloc] initOne:one two:two ] autorelease]; -} - --(id) initOne: (CCFiniteTimeAction*) one_ two: (CCFiniteTimeAction*) two_ -{ - NSAssert( one_!=nil, @"Spawn: argument one must be non-nil"); - NSAssert( two_!=nil, @"Spawn: argument two must be non-nil"); - - ccTime d1 = [one_ duration]; - ccTime d2 = [two_ duration]; - - [super initWithDuration: fmaxf(d1,d2)]; - - one = one_; - two = two_; - - if( d1 > d2 ) - two = [CCSequence actionOne: two_ two:[CCDelayTime actionWithDuration: (d1-d2)] ]; - else if( d1 < d2) - one = [CCSequence actionOne: one_ two: [CCDelayTime actionWithDuration: (d2-d1)] ]; - - [one retain]; - [two retain]; - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initOne: [[one copy] autorelease] two: [[two copy] autorelease] ]; - return copy; -} - --(void) dealloc -{ - [one release]; - [two release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [one startWithTarget:target_]; - [two startWithTarget:target_]; -} - --(void) stop -{ - [one stop]; - [two stop]; - [super stop]; -} - --(void) update: (ccTime) t -{ - [one update:t]; - [two update:t]; -} - -- (CCActionInterval *) reverse -{ - return [[self class] actionOne: [one reverse] two: [two reverse ] ]; -} -@end - -// -// RotateTo -// -#pragma mark - -#pragma mark RotateTo - -@implementation CCRotateTo -+(id) actionWithDuration: (ccTime) t angle:(float) a -{ - return [[[self alloc] initWithDuration:t angle:a ] autorelease]; -} - --(id) initWithDuration: (ccTime) t angle:(float) a -{ - if( (self=[super initWithDuration: t]) ) - dstAngle = a; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration:[self duration] angle: dstAngle]; - return copy; -} - --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - - startAngle = [target_ rotation]; - if (startAngle > 0) - startAngle = fmodf(startAngle, 360.0f); - else - startAngle = fmodf(startAngle, -360.0f); - - diffAngle = dstAngle - startAngle; - if (diffAngle > 180) - diffAngle -= 360; - if (diffAngle < -180) - diffAngle += 360; -} --(void) update: (ccTime) t -{ - [target_ setRotation: startAngle + diffAngle * t]; -} -@end - - -// -// RotateBy -// -#pragma mark - -#pragma mark RotateBy - -@implementation CCRotateBy -+(id) actionWithDuration: (ccTime) t angle:(float) a -{ - return [[[self alloc] initWithDuration:t angle:a ] autorelease]; -} - --(id) initWithDuration: (ccTime) t angle:(float) a -{ - if( (self=[super initWithDuration: t]) ) - angle = a; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] angle: angle]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - startAngle = [target_ rotation]; -} - --(void) update: (ccTime) t -{ - // XXX: shall I add % 360 - [target_ setRotation: (startAngle + angle * t )]; -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithDuration:duration_ angle:-angle]; -} - -@end - -// -// MoveTo -// -#pragma mark - -#pragma mark MoveTo - -@implementation CCMoveTo -+(id) actionWithDuration: (ccTime) t position: (CGPoint) p -{ - return [[[self alloc] initWithDuration:t position:p ] autorelease]; -} - --(id) initWithDuration: (ccTime) t position: (CGPoint) p -{ - if( (self=[super initWithDuration: t]) ) - endPosition = p; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] position: endPosition]; - return copy; -} - --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - startPosition = [(CCNode*)target_ position]; - delta = ccpSub( endPosition, startPosition ); -} - --(void) update: (ccTime) t -{ - [target_ setPosition: ccp( (startPosition.x + delta.x * t ), (startPosition.y + delta.y * t ) )]; -} -@end - -// -// MoveBy -// -#pragma mark - -#pragma mark MoveBy - -@implementation CCMoveBy -+(id) actionWithDuration: (ccTime) t position: (CGPoint) p -{ - return [[[self alloc] initWithDuration:t position:p ] autorelease]; -} - --(id) initWithDuration: (ccTime) t position: (CGPoint) p -{ - if( (self=[super initWithDuration: t]) ) - delta = p; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] position: delta]; - return copy; -} - --(void) startWithTarget:(CCNode *)aTarget -{ - CGPoint dTmp = delta; - [super startWithTarget:aTarget]; - delta = dTmp; -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithDuration:duration_ position:ccp( -delta.x, -delta.y)]; -} -@end - -// -// JumpBy -// -#pragma mark - -#pragma mark JumpBy - -@implementation CCJumpBy -+(id) actionWithDuration: (ccTime) t position: (CGPoint) pos height: (ccTime) h jumps:(int)j -{ - return [[[self alloc] initWithDuration: t position: pos height: h jumps:j] autorelease]; -} - --(id) initWithDuration: (ccTime) t position: (CGPoint) pos height: (ccTime) h jumps:(int)j -{ - if( (self=[super initWithDuration:t]) ) { - delta = pos; - height = h; - jumps = j; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] position: delta height:height jumps:jumps]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - startPosition = [(CCNode*)target_ position]; -} - --(void) update: (ccTime) t -{ - // Sin jump. Less realistic -// ccTime y = height * fabsf( sinf(t * (CGFloat)M_PI * jumps ) ); -// y += delta.y * t; -// ccTime x = delta.x * t; -// [target setPosition: ccp( startPosition.x + x, startPosition.y + y )]; - - // parabolic jump (since v0.8.2) - ccTime frac = fmodf( t * jumps, 1.0f ); - ccTime y = height * 4 * frac * (1 - frac); - y += delta.y * t; - ccTime x = delta.x * t; - [target_ setPosition: ccp( startPosition.x + x, startPosition.y + y )]; - -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithDuration:duration_ position: ccp(-delta.x,-delta.y) height: height jumps:jumps]; -} -@end - -// -// JumpTo -// -#pragma mark - -#pragma mark JumpTo - -@implementation CCJumpTo --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - delta = ccp( delta.x - startPosition.x, delta.y - startPosition.y ); -} -@end - - -#pragma mark - -#pragma mark BezierBy - -// Bezier cubic formula: -// ((1 - t) + t)3 = 1 -// Expands to… -// (1 - t)3 + 3t(1-t)2 + 3t2(1 - t) + t3 = 1 -static inline float bezierat( float a, float b, float c, float d, ccTime t ) -{ - return (powf(1-t,3) * a + - 3*t*(powf(1-t,2))*b + - 3*powf(t,2)*(1-t)*c + - powf(t,3)*d ); -} - -// -// BezierBy -// -@implementation CCBezierBy -+(id) actionWithDuration: (ccTime) t bezier:(ccBezierConfig) c -{ - return [[[self alloc] initWithDuration:t bezier:c ] autorelease]; -} - --(id) initWithDuration: (ccTime) t bezier:(ccBezierConfig) c -{ - if( (self=[super initWithDuration: t]) ) { - config = c; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] bezier: config]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - startPosition = [(CCNode*)target_ position]; -} - --(void) update: (ccTime) t -{ - float xa = 0; - float xb = config.controlPoint_1.x; - float xc = config.controlPoint_2.x; - float xd = config.endPosition.x; - - float ya = 0; - float yb = config.controlPoint_1.y; - float yc = config.controlPoint_2.y; - float yd = config.endPosition.y; - - float x = bezierat(xa, xb, xc, xd, t); - float y = bezierat(ya, yb, yc, yd, t); - [target_ setPosition: ccpAdd( startPosition, ccp(x,y))]; -} - -- (CCActionInterval*) reverse -{ - ccBezierConfig r; - - r.endPosition = ccpNeg(config.endPosition); - r.controlPoint_1 = ccpAdd(config.controlPoint_2, ccpNeg(config.endPosition)); - r.controlPoint_2 = ccpAdd(config.controlPoint_1, ccpNeg(config.endPosition)); - - CCBezierBy *action = [[self class] actionWithDuration:[self duration] bezier:r]; - return action; -} -@end - -// -// BezierTo -// -#pragma mark - -#pragma mark BezierTo -@implementation CCBezierTo --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - config.controlPoint_1 = ccpSub(config.controlPoint_1, startPosition); - config.controlPoint_2 = ccpSub(config.controlPoint_2, startPosition); - config.endPosition = ccpSub(config.endPosition, startPosition); -} -@end - - -// -// ScaleTo -// -#pragma mark - -#pragma mark ScaleTo -@implementation CCScaleTo -+(id) actionWithDuration: (ccTime) t scale:(float) s -{ - return [[[self alloc] initWithDuration: t scale:s] autorelease]; -} - --(id) initWithDuration: (ccTime) t scale:(float) s -{ - if( (self=[super initWithDuration: t]) ) { - endScaleX = s; - endScaleY = s; - } - return self; -} - -+(id) actionWithDuration: (ccTime) t scaleX:(float)sx scaleY:(float)sy -{ - return [[[self alloc] initWithDuration: t scaleX:sx scaleY:sy] autorelease]; -} - --(id) initWithDuration: (ccTime) t scaleX:(float)sx scaleY:(float)sy -{ - if( (self=[super initWithDuration: t]) ) { - endScaleX = sx; - endScaleY = sy; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] scaleX:endScaleX scaleY:endScaleY]; - return copy; -} - --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - startScaleX = [target_ scaleX]; - startScaleY = [target_ scaleY]; - deltaX = endScaleX - startScaleX; - deltaY = endScaleY - startScaleY; -} - --(void) update: (ccTime) t -{ - [target_ setScaleX: (startScaleX + deltaX * t ) ]; - [target_ setScaleY: (startScaleY + deltaY * t ) ]; -} -@end - -// -// ScaleBy -// -#pragma mark - -#pragma mark ScaleBy -@implementation CCScaleBy --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - deltaX = startScaleX * endScaleX - startScaleX; - deltaY = startScaleY * endScaleY - startScaleY; -} - --(CCActionInterval*) reverse -{ - return [[self class] actionWithDuration:duration_ scaleX: 1/endScaleX scaleY:1/endScaleY]; -} -@end - -// -// Blink -// -#pragma mark - -#pragma mark Blink -@implementation CCBlink -+(id) actionWithDuration: (ccTime) t blinks: (unsigned int) b -{ - return [[[ self alloc] initWithDuration: t blinks: b] autorelease]; -} - --(id) initWithDuration: (ccTime) t blinks: (unsigned int) b -{ - if( (self=[super initWithDuration: t] ) ) - times = b; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] blinks: times]; - return copy; -} - --(void) update: (ccTime) t -{ - if( ! [self isDone] ) { - ccTime slice = 1.0f / times; - ccTime m = fmodf(t, slice); - [target_ setVisible: (m > slice/2) ? YES : NO]; - } -} - --(CCActionInterval*) reverse -{ - // return 'self' - return [[self class] actionWithDuration:duration_ blinks: times]; -} -@end - -// -// FadeIn -// -#pragma mark - -#pragma mark FadeIn -@implementation CCFadeIn --(void) update: (ccTime) t -{ - [(id) target_ setOpacity: 255 *t]; -} - --(CCActionInterval*) reverse -{ - return [CCFadeOut actionWithDuration:duration_]; -} -@end - -// -// FadeOut -// -#pragma mark - -#pragma mark FadeOut -@implementation CCFadeOut --(void) update: (ccTime) t -{ - [(id) target_ setOpacity: 255 *(1-t)]; -} - --(CCActionInterval*) reverse -{ - return [CCFadeIn actionWithDuration:duration_]; -} -@end - -// -// FadeTo -// -#pragma mark - -#pragma mark FadeTo -@implementation CCFadeTo -+(id) actionWithDuration: (ccTime) t opacity: (GLubyte) o -{ - return [[[ self alloc] initWithDuration: t opacity: o] autorelease]; -} - --(id) initWithDuration: (ccTime) t opacity: (GLubyte) o -{ - if( (self=[super initWithDuration: t] ) ) - toOpacity = o; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [[[self class] allocWithZone: zone] initWithDuration: [self duration] opacity: toOpacity]; - return copy; -} - --(void) startWithTarget:(CCNode *)aTarget -{ - [super startWithTarget:aTarget]; - fromOpacity = [(id)target_ opacity]; -} - --(void) update: (ccTime) t -{ - [(id)target_ setOpacity: fromOpacity + ( toOpacity - fromOpacity ) * t]; -} -@end - -// -// TintTo -// -#pragma mark - -#pragma mark TintTo -@implementation CCTintTo -+(id) actionWithDuration:(ccTime)t red:(GLubyte)r green:(GLubyte)g blue:(GLubyte)b -{ - return [[(CCTintTo*)[ self alloc] initWithDuration:t red:r green:g blue:b] autorelease]; -} - --(id) initWithDuration: (ccTime) t red:(GLubyte)r green:(GLubyte)g blue:(GLubyte)b -{ - if( (self=[super initWithDuration: t] ) ) - to = ccc3(r,g,b); - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - CCAction *copy = [(CCTintTo*)[[self class] allocWithZone: zone] initWithDuration: [self duration] red:to.r green:to.g blue:to.b]; - return copy; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - - id tn = (id) target_; - from = [tn color]; -} - --(void) update: (ccTime) t -{ - id tn = (id) target_; - [tn setColor:ccc3(from.r + (to.r - from.r) * t, from.g + (to.g - from.g) * t, from.b + (to.b - from.b) * t)]; -} -@end - -// -// TintBy -// -#pragma mark - -#pragma mark TintBy -@implementation CCTintBy -+(id) actionWithDuration:(ccTime)t red:(GLshort)r green:(GLshort)g blue:(GLshort)b -{ - return [[(CCTintBy*)[ self alloc] initWithDuration:t red:r green:g blue:b] autorelease]; -} - --(id) initWithDuration:(ccTime)t red:(GLshort)r green:(GLshort)g blue:(GLshort)b -{ - if( (self=[super initWithDuration: t] ) ) { - deltaR = r; - deltaG = g; - deltaB = b; - } - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - return[(CCTintBy*)[[self class] allocWithZone: zone] initWithDuration: [self duration] red:deltaR green:deltaG blue:deltaB]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - - id tn = (id) target_; - ccColor3B color = [tn color]; - fromR = color.r; - fromG = color.g; - fromB = color.b; -} - --(void) update: (ccTime) t -{ - id tn = (id) target_; - [tn setColor:ccc3( fromR + deltaR * t, fromG + deltaG * t, fromB + deltaB * t)]; -} - -- (CCActionInterval*) reverse -{ - return [CCTintBy actionWithDuration:duration_ red:-deltaR green:-deltaG blue:-deltaB]; -} -@end - -// -// DelayTime -// -#pragma mark - -#pragma mark DelayTime -@implementation CCDelayTime --(void) update: (ccTime) t -{ - return; -} - --(id)reverse -{ - return [[self class] actionWithDuration:duration_]; -} -@end - -// -// ReverseTime -// -#pragma mark - -#pragma mark ReverseTime -@implementation CCReverseTime -+(id) actionWithAction: (CCFiniteTimeAction*) action -{ - // casting to prevent warnings - CCReverseTime *a = [super alloc]; - return [[a initWithAction:action] autorelease]; -} - --(id) initWithAction: (CCFiniteTimeAction*) action -{ - if( (self=[super initWithDuration: [action duration]]) ) - other = [action retain]; - - return self; -} - --(id) copyWithZone: (NSZone*) zone -{ - return [[[self class] allocWithZone: zone] initWithAction:[[other copy] autorelease] ]; -} - --(void) dealloc -{ - [other release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - [other startWithTarget:target_]; -} - --(void) stop -{ - [other stop]; - [super stop]; -} - --(void) update:(ccTime)t -{ - [other update:1-t]; -} - --(CCActionInterval*) reverse -{ - return [[other copy] autorelease]; -} -@end - -// -// Animate -// - -#pragma mark - -#pragma mark Animate -@implementation CCAnimate - -@synthesize animation = animation_; - -+(id) actionWithAnimation: (CCAnimation*)anim -{ - return [[[self alloc] initWithAnimation:anim restoreOriginalFrame:YES] autorelease]; -} - -+(id) actionWithAnimation: (CCAnimation*)anim restoreOriginalFrame:(BOOL)b -{ - return [[[self alloc] initWithAnimation:anim restoreOriginalFrame:b] autorelease]; -} - -+(id) actionWithDuration:(ccTime)duration animation: (CCAnimation*)anim restoreOriginalFrame:(BOOL)b -{ - return [[[self alloc] initWithDuration:duration animation:anim restoreOriginalFrame:b] autorelease]; -} - --(id) initWithAnimation: (CCAnimation*)anim -{ - NSAssert( anim!=nil, @"Animate: argument Animation must be non-nil"); - return [self initWithAnimation:anim restoreOriginalFrame:YES]; -} - --(id) initWithAnimation: (CCAnimation*)anim restoreOriginalFrame:(BOOL) b -{ - NSAssert( anim!=nil, @"Animate: argument Animation must be non-nil"); - - if( (self=[super initWithDuration: [[anim frames] count] * [anim delay]]) ) { - - restoreOriginalFrame = b; - self.animation = anim; - origFrame = nil; - } - return self; -} - --(id) initWithDuration:(ccTime)aDuration animation: (CCAnimation*)anim restoreOriginalFrame:(BOOL) b -{ - NSAssert( anim!=nil, @"Animate: argument Animation must be non-nil"); - - if( (self=[super initWithDuration:aDuration] ) ) { - - restoreOriginalFrame = b; - self.animation = anim; - origFrame = nil; - } - return self; -} - - --(id) copyWithZone: (NSZone*) zone -{ - return [[[self class] allocWithZone: zone] initWithDuration:duration_ animation:animation_ restoreOriginalFrame:restoreOriginalFrame]; -} - --(void) dealloc -{ - [animation_ release]; - [origFrame release]; - [super dealloc]; -} - --(void) startWithTarget:(id)aTarget -{ - [super startWithTarget:aTarget]; - CCSprite *sprite = target_; - - [origFrame release]; - - if( restoreOriginalFrame ) - origFrame = [[sprite displayedFrame] retain]; -} - --(void) stop -{ - if( restoreOriginalFrame ) { - CCSprite *sprite = target_; - [sprite setDisplayFrame:origFrame]; - } - - [super stop]; -} - --(void) update: (ccTime) t -{ - NSArray *frames = [animation_ frames]; - NSUInteger numberOfFrames = [frames count]; - - NSUInteger idx = t * numberOfFrames; - - if( idx >= numberOfFrames ) - idx = numberOfFrames -1; - - CCSprite *sprite = target_; - if (! [sprite isFrameDisplayed: [frames objectAtIndex: idx]] ) - [sprite setDisplayFrame: [frames objectAtIndex:idx]]; -} - -- (CCActionInterval *) reverse -{ - NSArray *oldArray = [animation_ frames]; - NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[oldArray count]]; - NSEnumerator *enumerator = [oldArray reverseObjectEnumerator]; - for (id element in enumerator) - [newArray addObject:[[element copy] autorelease]]; - - CCAnimation *newAnim = [CCAnimation animationWithFrames:newArray delay:animation_.delay]; - return [[self class] actionWithDuration:duration_ animation:newAnim restoreOriginalFrame:restoreOriginalFrame]; -} - -@end diff --git a/Classes/cocos2d/CCActionManager.h b/Classes/cocos2d/CCActionManager.h deleted file mode 100644 index 476390b..0000000 --- a/Classes/cocos2d/CCActionManager.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * Copyright (c) 2009 Valentin Milea - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCAction.h" -#import "Support/ccCArray.h" -#import "Support/uthash.h" - -typedef struct _hashElement -{ - struct ccArray *actions; - id target; - unsigned int actionIndex; - CCAction *currentAction; - BOOL currentActionSalvaged; - BOOL paused; - UT_hash_handle hh; -} tHashElement; - - -/** CCActionManager is a singleton that manages all the actions. - Normally you won't need to use this singleton directly. 99% of the cases you will use the CCNode interface, - which uses this singleton. - But there are some cases where you might need to use this singleton. - Examples: - - When you want to run an action where the target is different from a CCNode. - - When you want to pause / resume the actions - - @since v0.8 - */ -@interface CCActionManager : NSObject -{ - tHashElement *targets; - tHashElement *currentTarget; - BOOL currentTargetSalvaged; -} - -/** returns a shared instance of the CCActionManager */ -+ (CCActionManager *)sharedManager; - -/** purges the shared action manager. It releases the retained instance. - @since v0.99.0 - */ -+(void)purgeSharedManager; - -// actions - -/** Adds an action with a target. - If the target is already present, then the action will be added to the existing target. - If the target is not present, a new instance of this target will be created either paused or paused, and the action will be added to the newly created target. - When the target is paused, the queued actions won't be 'ticked'. - */ --(void) addAction: (CCAction*) action target:(id)target paused:(BOOL)paused; -/** Removes all actions from all the targers. - */ --(void) removeAllActions; - -/** Removes all actions from a certain target. - All the actions that belongs to the target will be removed. - */ --(void) removeAllActionsFromTarget:(id)target; -/** Removes an action given an action reference. - */ --(void) removeAction: (CCAction*) action; -/** Removes an action given its tag and the target */ --(void) removeActionByTag:(int)tag target:(id)target; -/** Gets an action given its tag an a target - @return the Action the with the given tag - */ --(CCAction*) getActionByTag:(int) tag target:(id)target; -/** Returns the numbers of actions that are running in a certain target - * Composable actions are counted as 1 action. Example: - * If you are running 1 Sequence of 7 actions, it will return 1. - * If you are running 7 Sequences of 2 actions, it will return 7. - */ --(int) numberOfRunningActionsInTarget:(id)target; - -/** Pauses the target: all running actions and newly added actions will be paused. - */ --(void) pauseTarget:(id)target; -/** Resumes the target. All queued actions will be resumed. - */ --(void) resumeTarget:(id)target; - -/** Resumes the target. All queued actions will be resumed. - @deprecated Use resumeTarget: instead. Will be removed in v1.0. - */ --(void) resumeAllActionsForTarget:(id)target DEPRECATED_ATTRIBUTE; -/** Pauses the target: all running actions and newly added actions will be paused. - */ --(void) pauseAllActionsForTarget:(id)target DEPRECATED_ATTRIBUTE; - - -@end - diff --git a/Classes/cocos2d/CCActionManager.m b/Classes/cocos2d/CCActionManager.m deleted file mode 100644 index 9a6376f..0000000 --- a/Classes/cocos2d/CCActionManager.m +++ /dev/null @@ -1,356 +0,0 @@ -/* - * cocos2d for iPhone: http://www.cocos2d-iphone.org - * - * Copyright (c) 2008-2010 Ricardo Quesada - * Copyright (c) 2009 Valentin Milea - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - - -#import "CCActionManager.h" -#import "CCScheduler.h" -#import "ccMacros.h" - - -// -// singleton stuff -// -static CCActionManager *sharedManager_ = nil; - -@interface CCActionManager (Private) --(void) removeActionAtIndex:(NSUInteger)index hashElement:(tHashElement*)element; --(void) deleteHashElement:(tHashElement*)element; --(void) actionAllocWithHashElement:(tHashElement*)element; -@end - - -@implementation CCActionManager - -#pragma mark ActionManager - init -+ (CCActionManager *)sharedManager -{ - if (!sharedManager_) - sharedManager_ = [[self alloc] init]; - - return sharedManager_; -} - -+(id)alloc -{ - NSAssert(sharedManager_ == nil, @"Attempted to allocate a second instance of a singleton."); - return [super alloc]; -} - -+(void)purgeSharedManager -{ - [[CCScheduler sharedScheduler] unscheduleUpdateForTarget:self]; - [sharedManager_ release]; - sharedManager_ = nil; -} - --(id) init -{ - if ((self=[super init]) ) { - [[CCScheduler sharedScheduler] scheduleUpdateForTarget:self priority:0 paused:NO]; - targets = NULL; - } - - return self; -} - -- (void) dealloc -{ - CCLOGINFO( @"cocos2d: deallocing %@", self); - - [self removeAllActions]; - - sharedManager_ = nil; - - [super dealloc]; -} - -#pragma mark ActionManager - Private - --(void) deleteHashElement:(tHashElement*)element -{ - ccArrayFree(element->actions); - HASH_DEL(targets, element); -// CCLOG(@"cocos2d: ---- buckets: %d/%d - %@", targets->entries, targets->size, element->target); - [element->target release]; - free(element); -} - --(void) actionAllocWithHashElement:(tHashElement*)element -{ - // 4 actions per Node by default - if( element->actions == nil ) - element->actions = ccArrayNew(4); - else if( element->actions->num == element->actions->max ) - ccArrayDoubleCapacity(element->actions); -} - --(void) removeActionAtIndex:(NSUInteger)index hashElement:(tHashElement*)element -{ - id action = element->actions->arr[index]; - - if( action == element->currentAction && !element->currentActionSalvaged ) { - [element->currentAction retain]; - element->currentActionSalvaged = YES; - } - - ccArrayRemoveObjectAtIndex(element->actions, index); - - // update actionIndex in case we are in tick:, looping over the actions - if( element->actionIndex >= index ) - element->actionIndex--; - - if( element->actions->num == 0 ) { - if( currentTarget == element ) - currentTargetSalvaged = YES; - else - [self deleteHashElement: element]; - } -} - -#pragma mark ActionManager - Pause / Resume - -// XXX DEPRECATED. REMOVE IN 1.0 --(void) pauseAllActionsForTarget:(id)target -{ - [self pauseTarget:target]; -} - --(void) pauseTarget:(id)target -{ - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - if( element ) - element->paused = YES; -// else -// CCLOG(@"cocos2d: pauseAllActions: Target not found"); -} - -// XXX DEPRECATED. REMOVE IN 1.0 --(void) resumeAllActionsForTarget:(id)target -{ - [self resumeTarget:target]; -} - --(void) resumeTarget:(id)target -{ - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - if( element ) - element->paused = NO; -// else -// CCLOG(@"cocos2d: resumeAllActions: Target not found"); -} - -#pragma mark ActionManager - run - --(void) addAction:(CCAction*)action target:(id)target paused:(BOOL)paused -{ - NSAssert( action != nil, @"Argument action must be non-nil"); - NSAssert( target != nil, @"Argument target must be non-nil"); - - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - if( ! element ) { - element = calloc( sizeof( *element ), 1 ); - element->paused = paused; - element->target = [target retain]; - HASH_ADD_INT(targets, target, element); -// CCLOG(@"cocos2d: ---- buckets: %d/%d - %@", targets->entries, targets->size, element->target); - - } - - [self actionAllocWithHashElement:element]; - - NSAssert( !ccArrayContainsObject(element->actions, action), @"runAction: Action already running"); - ccArrayAppendObject(element->actions, action); - - [action startWithTarget:target]; -} - -#pragma mark ActionManager - remove - --(void) removeAllActions -{ - for(tHashElement *element=targets; element != NULL; ) { - id target = element->target; - element = element->hh.next; - [self removeAllActionsFromTarget:target]; - } -} --(void) removeAllActionsFromTarget:(id)target -{ - // explicit nil handling - if( target == nil ) - return; - - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - if( element ) { - if( ccArrayContainsObject(element->actions, element->currentAction) && !element->currentActionSalvaged ) { - [element->currentAction retain]; - element->currentActionSalvaged = YES; - } - ccArrayRemoveAllObjects(element->actions); - if( currentTarget == element ) - currentTargetSalvaged = YES; - else - [self deleteHashElement:element]; - } -// else { -// CCLOG(@"cocos2d: removeAllActionsFromTarget: Target not found"); -// } -} - --(void) removeAction: (CCAction*) action -{ - // explicit nil handling - if (action == nil) - return; - - tHashElement *element = NULL; - id target = [action originalTarget]; - HASH_FIND_INT(targets, &target, element ); - if( element ) { - NSUInteger i = ccArrayGetIndexOfObject(element->actions, action); - if( i != NSNotFound ) - [self removeActionAtIndex:i hashElement:element]; - } -// else { -// CCLOG(@"cocos2d: removeAction: Target not found"); -// } -} - --(void) removeActionByTag:(int) aTag target:(id)target -{ - NSAssert( aTag != kCCActionTagInvalid, @"Invalid tag"); - NSAssert( target != nil, @"Target should be ! nil"); - - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - - if( element ) { - NSUInteger limit = element->actions->num; - for( NSUInteger i = 0; i < limit; i++) { - CCAction *a = element->actions->arr[i]; - - if( a.tag == aTag && [a originalTarget]==target) - return [self removeActionAtIndex:i hashElement:element]; - } -// CCLOG(@"cocos2d: removeActionByTag: Action not found!"); - } -// else { -// CCLOG(@"cocos2d: removeActionByTag: Target not found!"); -// } -} - -#pragma mark ActionManager - get - --(CCAction*) getActionByTag:(int)aTag target:(id)target -{ - NSAssert( aTag != kCCActionTagInvalid, @"Invalid tag"); - - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - - if( element ) { - if( element->actions != nil ) { - NSUInteger limit = element->actions->num; - for( NSUInteger i = 0; i < limit; i++) { - CCAction *a = element->actions->arr[i]; - - if( a.tag == aTag ) - return a; - } - } -// CCLOG(@"cocos2d: getActionByTag: Action not found"); - } -// else { -// CCLOG(@"cocos2d: getActionByTag: Target not found"); -// } - return nil; -} - --(int) numberOfRunningActionsInTarget:(id) target -{ - tHashElement *element = NULL; - HASH_FIND_INT(targets, &target, element); - if( element ) - return element->actions ? element->actions->num : 0; - -// CCLOG(@"cocos2d: numberOfRunningActionsInTarget: Target not found"); - return 0; -} - -#pragma mark ActionManager - main loop - --(void) update: (ccTime) dt -{ - for(tHashElement *elt = targets; elt != NULL; ) { - - currentTarget = elt; - currentTargetSalvaged = NO; - - if( ! currentTarget->paused ) { - - // The 'actions' ccArray may change while inside this loop. - for( currentTarget->actionIndex = 0; currentTarget->actionIndex < currentTarget->actions->num; currentTarget->actionIndex++) { - currentTarget->currentAction = currentTarget->actions->arr[currentTarget->actionIndex]; - currentTarget->currentActionSalvaged = NO; - - [currentTarget->currentAction step: dt]; - - if( currentTarget->currentActionSalvaged ) { - // The currentAction told the node to remove it. To prevent the action from - // accidentally deallocating itself before finishing its step, we retained - // it. Now that step is done, it's safe to release it. - [currentTarget->currentAction release]; - - } else if( [currentTarget->currentAction isDone] ) { - [currentTarget->currentAction stop]; - - CCAction *a = currentTarget->currentAction; - // Make currentAction nil to prevent removeAction from salvaging it. - currentTarget->currentAction = nil; - [self removeAction:a]; - } - - currentTarget->currentAction = nil; - } - } - - // elt, at this moment, is still valid - // so it is safe to ask this here (issue #490) - elt = elt->hh.next; - - // only delete currentTarget if no actions were scheduled during the cycle (issue #481) - if( currentTargetSalvaged && currentTarget->actions->num ==