Helper class to handle file operations. More...
#include <CCFileUtils.h>
Public Member Functions | |
virtual long | getClassTypeInfo () |
Returns an unique ID for this class. More... | |
virtual | ~CCFileUtils () |
The destructor of CCFileUtils. More... | |
virtual void | purgeCachedEntries () |
Purges the file searching cache. More... | |
virtual unsigned char * | getFileData (const char *pszFileName, const char *pszMode, unsigned long *pSize) |
Gets resource file data. More... | |
virtual unsigned char * | getFileDataFromZip (const char *pszZipFilePath, const char *pszFileName, unsigned long *pSize) |
Gets resource file data from a zip file. More... | |
virtual std::string | fullPathForFilename (const char *pszFileName) |
Returns the fullpath for a given filename. More... | |
virtual void | loadFilenameLookupDictionaryFromFile (const char *filename) |
Loads the filenameLookup dictionary from the contents of a filename. More... | |
virtual void | setFilenameLookupDictionary (CCDictionary *pFilenameLookupDict) |
Sets the filenameLookup dictionary. More... | |
virtual const char * | fullPathFromRelativeFile (const char *pszFilename, const char *pszRelativeFile) |
Gets full path from a file name and the path of the reletive file. More... | |
virtual void | setSearchResolutionsOrder (const std::vector< std::string > &searchResolutionsOrder) |
Sets the array that contains the search order of the resources. More... | |
virtual void | addSearchResolutionsOrder (const char *order) |
Append search order of the resources. More... | |
virtual const std::vector < std::string > & | getSearchResolutionsOrder () |
Gets the array that contains the search order of the resources. More... | |
virtual void | setSearchPaths (const std::vector< std::string > &searchPaths) |
Sets the array of search paths. More... | |
virtual void | addSearchPath (const char *path) |
Adds a path to search paths. More... | |
virtual void | removeSearchPath (const char *path) |
Removes a path from search paths. More... | |
void | removeAllPaths () |
Removes all paths. More... | |
virtual const std::vector < std::string > & | getSearchPaths () |
Gets the array of search paths. More... | |
virtual std::string | getWritablePath ()=0 |
Gets the writable path. More... | |
virtual bool | isFileExist (const std::string &strFilePath)=0 |
Checks whether a file exists. More... | |
virtual bool | isAbsolutePath (const std::string &strPath) |
Checks whether the path is an absolute path. More... | |
virtual void | setPopupNotify (bool bNotify) |
Sets/Gets whether to pop-up a message box when failed to load an image. More... | |
virtual bool | isPopupNotify () |
Static Public Member Functions | |
static CCFileUtils * | sharedFileUtils () |
Gets the instance of CCFileUtils. More... | |
static void | purgeFileUtils () |
Destroys the instance of CCFileUtils. More... | |
Protected Member Functions | |
CCFileUtils () | |
The default constructor. More... | |
virtual bool | init () |
Initializes the instance of CCFileUtils. More... | |
virtual std::string | getNewFilename (const char *pszFileName) |
Gets the new filename from the filename lookup dictionary. More... | |
virtual std::string | getPathForFilename (const std::string &filename, const std::string &resolutionDirectory, const std::string &searchPath) |
Gets full path for filename, resolution directory and search path. More... | |
virtual std::string | getFullPathForDirectoryAndFilename (const std::string &strDirectory, const std::string &strFilename) |
Gets full path for the directory and the filename. More... | |
virtual CCDictionary * | createCCDictionaryWithContentsOfFile (const std::string &filename) |
Creates a dictionary by the contents of a file. More... | |
virtual bool | writeToFile (CCDictionary *dict, const std::string &fullPath) |
Write a dictionary to a plist file. More... | |
virtual CCArray * | createCCArrayWithContentsOfFile (const std::string &filename) |
Creates an array by the contents of a file. More... | |
Protected Attributes | |
CCDictionary * | m_pFilenameLookupDict |
Dictionary used to lookup filenames based on a key. More... | |
std::vector< std::string > | m_searchResolutionsOrderArray |
The vector contains resolution folders. More... | |
std::vector< std::string > | m_searchPathArray |
The vector contains search paths. More... | |
std::string | m_strDefaultResRootPath |
The default root path of resources. More... | |
std::map< std::string, std::string > | m_fullPathCache |
The full path cache. More... | |
Static Protected Attributes | |
static CCFileUtils * | s_sharedFileUtils |
The singleton pointer of CCFileUtils. More... | |
Friends | |
class | CCArray |
class | CCDictionary |
Helper class to handle file operations.
|
virtual |
The destructor of CCFileUtils.
|
protected |
The default constructor.
|
virtual |
|
virtual |
Append search order of the resources.
|
protectedvirtual |
Creates an array by the contents of a file.
Reimplemented in CCFileUtilsIOS, and CCFileUtilsMac.
|
protectedvirtual |
Creates a dictionary by the contents of a file.
Reimplemented in CCFileUtilsIOS, and CCFileUtilsMac.
|
virtual |
Returns the fullpath for a given filename.
First it will try to get a new filename from the "filenameLookup" dictionary. If a new filename can't be found on the dictionary, it will use the original filename. Then it will try to obtain the full path of the filename using the CCFileUtils search rules: resolutions, and search paths. The file search is based on the array element order of search paths and resolution directories.
For instance:
We set two elements("/mnt/sdcard/", "internal_dir/") to search paths vector by setSearchPaths, and set three elements("resources-ipadhd/", "resources-ipad/", "resources-iphonehd") to resolutions vector by setSearchResolutionsOrder. The "internal_dir" is relative to "Resources/".
If we have a file named 'sprite.png', the mapping in fileLookup dictionary contains key: sprite.png -> value: sprite.pvr.gz
. Firstly, it will replace 'sprite.png' with 'sprite.pvr.gz', then searching the file sprite.pvr.gz as follows:
/mnt/sdcard/resources-ipadhd/sprite.pvr.gz (if not found, search next) /mnt/sdcard/resources-ipad/sprite.pvr.gz (if not found, search next) /mnt/sdcard/resources-iphonehd/sprite.pvr.gz (if not found, search next) /mnt/sdcard/sprite.pvr.gz (if not found, search next) internal_dir/resources-ipadhd/sprite.pvr.gz (if not found, search next) internal_dir/resources-ipad/sprite.pvr.gz (if not found, search next) internal_dir/resources-iphonehd/sprite.pvr.gz (if not found, search next) internal_dir/sprite.pvr.gz (if not found, return "sprite.png")
If the filename contains relative path like "gamescene/uilayer/sprite.png", and the mapping in fileLookup dictionary contains key: gamescene/uilayer/sprite.png -> value: gamescene/uilayer/sprite.pvr.gz
. The file search order will be:
/mnt/sdcard/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz (if not found, search next) /mnt/sdcard/gamescene/uilayer/resources-ipad/sprite.pvr.gz (if not found, search next) /mnt/sdcard/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz (if not found, search next) /mnt/sdcard/gamescene/uilayer/sprite.pvr.gz (if not found, search next) internal_dir/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz (if not found, search next) internal_dir/gamescene/uilayer/resources-ipad/sprite.pvr.gz (if not found, search next) internal_dir/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz (if not found, search next) internal_dir/gamescene/uilayer/sprite.pvr.gz (if not found, return "gamescene/uilayer/sprite.png")
If the new file can't be found on the file system, it will return the parameter pszFileName directly.
This method was added to simplify multiplatform support. Whether you are using cocos2d-js or any cross-compilation toolchain like StellaSDK or Apportable, you might need to load different resources for a given file in the different platforms.
Reimplemented in CCFileUtilsWin32.
|
virtual |
Gets full path from a file name and the path of the reletive file.
pszFilename | The file name. |
pszRelativeFile | The path of the relative file. |
|
inlinevirtual |
Returns an unique ID for this class.
Implements TypeInfo.
|
virtual |
Gets resource file data.
[in] | pszFileName | The resource file name which contains the path. |
[in] | pszMode | The read mode of the file. |
[out] | pSize | If the file read operation succeeds, it will be the data size, otherwise 0. |
Reimplemented in CCFileUtilsAndroid, and CCFileUtilsMarmalade.
|
virtual |
Gets resource file data from a zip file.
[in] | pszFileName | The resource file name which contains the relative path of the zip file. |
[out] | pSize | If the file read operation succeeds, it will be the data size, otherwise 0. |
|
protectedvirtual |
Gets full path for the directory and the filename.
[[NSBundle mainBundle] pathForResource: ofType: inDirectory:]
to make a full path. Other platforms will use the default implementation of this method. strDirectory | The directory contains the file we are looking for. |
strFilename | The name of the file. |
Reimplemented in CCFileUtilsIOS, and CCFileUtilsMac.
|
protectedvirtual |
Gets the new filename from the filename lookup dictionary.
pszFileName | The original filename. |
|
protectedvirtual |
Gets full path for filename, resolution directory and search path.
filename | The file name. |
resolutionDirectory | The resolution directory. |
searchPath | The search path. |
Reimplemented in CCFileUtilsWin32.
|
virtual |
Gets the array of search paths.
|
virtual |
Gets the array that contains the search order of the resources.
|
pure virtual |
Gets the writable path.
Implemented in CCFileUtilsAndroid, CCFileUtilsTizen, CCFileUtilsLinux, CCFileUtilsWinRT, CCFileUtilsBlackberry, CCFileUtilsEmscripten, CCFileUtilsWin32, CCFileUtilsMarmalade, CCFileUtilsNaCl, CCFileUtilsIOS, and CCFileUtilsMac.
|
protectedvirtual |
Initializes the instance of CCFileUtils.
It will set m_searchPathArray and m_searchResolutionsOrderArray to default values.
Reimplemented in CCFileUtilsAndroid, CCFileUtilsTizen, CCFileUtilsLinux, CCFileUtilsWinRT, CCFileUtilsBlackberry, CCFileUtilsEmscripten, CCFileUtilsWin32, and CCFileUtilsNaCl.
|
virtual |
Checks whether the path is an absolute path.
strPath | The path that needs to be checked. |
Reimplemented in CCFileUtilsAndroid, CCFileUtilsWinRT, CCFileUtilsBlackberry, CCFileUtilsEmscripten, CCFileUtilsWin32, CCFileUtilsMarmalade, CCFileUtilsIOS, and CCFileUtilsMac.
|
pure virtual |
Checks whether a file exists.
strFilePath | The path of the file, it could be a relative or absolute path. |
Implemented in CCFileUtilsAndroid, CCFileUtilsTizen, CCFileUtilsLinux, CCFileUtilsWinRT, CCFileUtilsBlackberry, CCFileUtilsEmscripten, CCFileUtilsWin32, CCFileUtilsMarmalade, CCFileUtilsNaCl, CCFileUtilsIOS, and CCFileUtilsMac.
|
virtual |
|
virtual |
Loads the filenameLookup dictionary from the contents of a filename.
filename | The plist file name. |
|
virtual |
Purges the file searching cache.
|
static |
Destroys the instance of CCFileUtils.
void removeAllPaths | ( | ) |
Removes all paths.
|
virtual |
|
virtual |
Sets the filenameLookup dictionary.
pFilenameLookupDict | The dictionary for replacing filename. |
|
virtual |
Sets/Gets whether to pop-up a message box when failed to load an image.
|
virtual |
Sets the array of search paths.
You can use this array to modify the search path of the resources. If you want to use "themes" or search resources in the "cache", you can do it easily by adding new entries in this array.
searchPaths | The array contains search paths. |
|
virtual |
Sets the array that contains the search order of the resources.
searchResolutionsOrder | The source array that contains the search order of the resources. |
|
static |
Gets the instance of CCFileUtils.
|
protectedvirtual |
Write a dictionary to a plist file.
Reimplemented in CCFileUtilsIOS, and CCFileUtilsMac.
|
friend |
|
friend |
|
protected |
The full path cache.
When a file is found, it will be added into this cache. This variable is used for improving the performance of file search.
|
protected |
Dictionary used to lookup filenames based on a key.
It is used internally by the following methods:
std::string fullPathForFilename(const char*);
|
protected |
The vector contains search paths.
The lower index of the element in this vector, the higher priority for this search path.
|
protected |
The vector contains resolution folders.
The lower index of the element in this vector, the higher priority for this resolution directory.
|
protected |
The default root path of resources.
If the default root path of resources needs to be changed, do it in the init
method of CCFileUtils's subclass. For instance: On Android, the default root path of resources will be assigned with "assets/" in CCFileUtilsAndroid::init(). Similarly on Blackberry, we assign "app/native/Resources/" to this variable in CCFileUtilsBlackberry::init().
|
staticprotected |
The singleton pointer of CCFileUtils.