class CCShakyTiles3D : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    static CCShakyTiles3D* create(int nRange, bool bShakeZ, ccGridSize gridSize, float duration);
};

class CCShatteredTiles3D : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    static CCShatteredTiles3D* create(int nRange, bool bShatterZ, ccGridSize gridSize, float duration);
};

class CCShuffleTiles : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    void shuffle(int *pArray, int nLen);
    ccGridSize getDelta(ccGridSize pos);
    void placeTile(ccGridSize pos, Tile *t);

    static CCShuffleTiles* create(int s, ccGridSize gridSize, float duration);
};

class CCFadeOutTRTiles : public CCTiledGrid3DAction
{
    void turnOnTile(ccGridSize pos);
    void turnOffTile(ccGridSize pos);
    void transformTile(ccGridSize pos, float distance);

    static CCFadeOutTRTiles* create(ccGridSize gridSize, float time);
};

class CCFadeOutBLTiles : public CCFadeOutTRTiles
{
    static CCFadeOutBLTiles* create(ccGridSize gridSize, float time);
};

class CCFadeOutUpTiles : public CCFadeOutTRTiles
{
	void transformTile(ccGridSize pos, float distance);

    static CCFadeOutUpTiles* create(ccGridSize gridSize, float time);
};

class CCFadeOutDownTiles : public CCFadeOutUpTiles
{
    static CCFadeOutDownTiles* create(ccGridSize gridSize, float time);
};

class CCTurnOffTiles : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    void shuffle(int *pArray, int nLen);
    void turnOnTile(ccGridSize pos);
    void turnOffTile(ccGridSize pos);

    static CCTurnOffTiles* create(ccGridSize size, float d);
    static CCTurnOffTiles* create(int s, ccGridSize gridSize, float duration);
};

class CCWavesTiles3D : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCWavesTiles3D* create(int wav, float amp, ccGridSize gridSize, float duration);
};

class CCJumpTiles3D : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    float getAmplitude(void);
    void setAmplitude(float fAmplitude);
    float getAmplitudeRate(void);
    void setAmplitudeRate(float fAmplitudeRate);

    static CCJumpTiles3D* create(int j, float amp, ccGridSize gridSize, float duration);
};

class CCSplitRows : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    static CCSplitRows* create(int nRows, float duration);
};

class CCSplitCols : public CCTiledGrid3DAction
{
	CCObject* copyWithZone(CCZone* pZone);

    static CCSplitCols* create(int nCols, float duration);
};