mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2024-12-26 11:48:29 +00:00
500 lines
21 KiB
TypeScript
500 lines
21 KiB
TypeScript
/**
|
||
* API for jsb module
|
||
* Author: haroel
|
||
* Homepage: https://github.com/haroel/creatorexDTS
|
||
*/
|
||
declare namespace jsb{
|
||
export module reflection{
|
||
/**
|
||
* https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html
|
||
* call OBJC/Java static methods
|
||
*
|
||
* @param className
|
||
* @param methodName
|
||
* @param methodSignature
|
||
* @param parameters
|
||
*/
|
||
export function callStaticMethod (className: string, methodName: string, methodSignature: string, ...parameters:any): any;
|
||
}
|
||
/**
|
||
* 下载任务对象
|
||
*/
|
||
export type DownloaderTask = { requestURL: string, storagePath: string, identifier: string };
|
||
|
||
/**
|
||
* Http file downloader for jsb!
|
||
*/
|
||
export class Downloader{
|
||
/**
|
||
* create a download task
|
||
* @param requestURL
|
||
* @param storagePath
|
||
* @param identifier
|
||
*/
|
||
createDownloadFileTask (requestURL:string, storagePath:string, identifier?:string): DownloaderTask;
|
||
|
||
setOnFileTaskSuccess (onSucceed: (task: DownloaderTask) => void): void;
|
||
|
||
setOnTaskProgress (onProgress: (task: DownloaderTask, bytesReceived: number, totalBytesReceived: number, totalBytesExpected: number) => void): void;
|
||
|
||
setOnTaskError (onError: (task: DownloaderTask, errorCode: number, errorCodeInternal: number, errorStr: string) => void): void;
|
||
|
||
}
|
||
|
||
export interface ManifestAsset {
|
||
md5: string;
|
||
path: string;
|
||
compressed: boolean;
|
||
size: number;
|
||
downloadState: number;
|
||
}
|
||
|
||
export class Manifest {
|
||
constructor (manifestUrl: string);
|
||
constructor (content: string, manifestRoot: string);
|
||
parseFile (manifestUrl: string): void;
|
||
parseJSONString (content: string, manifestRoot: string): void;
|
||
|
||
getManifestRoot (): string;
|
||
getManifestFileUrl (): string;
|
||
getVersionFileUrl (): string;
|
||
getSearchPaths (): [string];
|
||
getVersion (): string;
|
||
getPackageUrl (): boolean;
|
||
|
||
setUpdating (isUpdating: boolean): void;
|
||
isUpdating (): boolean;
|
||
isVersionLoaded (): boolean;
|
||
isLoaded (): boolean;
|
||
}
|
||
|
||
export class EventAssetsManager {
|
||
// EventCode
|
||
static ERROR_NO_LOCAL_MANIFEST: number;
|
||
static ERROR_DOWNLOAD_MANIFEST: number;
|
||
static ERROR_PARSE_MANIFEST: number;
|
||
static NEW_VERSION_FOUND: number;
|
||
static ALREADY_UP_TO_DATE: number;
|
||
static UPDATE_PROGRESSION: number;
|
||
static ASSET_UPDATED: number;
|
||
static ERROR_UPDATING: number;
|
||
static UPDATE_FINISHED: number;
|
||
static UPDATE_FAILED: number;
|
||
static ERROR_DECOMPRESS: number;
|
||
|
||
constructor (eventName: string, manager: AssetsManager, eventCode: number,
|
||
assetId?: string, message?: string, curleCode?: number, curlmCode?: number);
|
||
getAssetsManagerEx (): AssetsManager;
|
||
isResuming (): boolean;
|
||
|
||
getDownloadedFiles (): number;
|
||
getDownloadedBytes (): number;
|
||
getTotalFiles (): number;
|
||
getTotalBytes (): number;
|
||
getPercent (): number;
|
||
getPercentByFile (): number;
|
||
|
||
getEventCode (): number;
|
||
getMessage (): string;
|
||
getAssetId (): string;
|
||
getCURLECode (): number;
|
||
getCURLMCode (): number;
|
||
}
|
||
|
||
export module AssetsManager {
|
||
export enum State {
|
||
UNINITED,
|
||
UNCHECKED,
|
||
PREDOWNLOAD_VERSION,
|
||
DOWNLOADING_VERSION,
|
||
VERSION_LOADED,
|
||
PREDOWNLOAD_MANIFEST,
|
||
DOWNLOADING_MANIFEST,
|
||
MANIFEST_LOADED,
|
||
NEED_UPDATE,
|
||
READY_TO_UPDATE,
|
||
UPDATING,
|
||
UNZIPPING,
|
||
UP_TO_DATE,
|
||
FAIL_TO_UPDATE,
|
||
}
|
||
}
|
||
|
||
export class AssetsManager {
|
||
constructor (manifestUrl: string, storagePath: string, versionCompareHandle?: (versionA: string, versionB: string) => number);
|
||
static create (manifestUrl: string, storagePath: string): AssetsManager;
|
||
|
||
getState (): AssetsManager.State;
|
||
getStoragePath (): string
|
||
getMaxConcurrentTask (): number;
|
||
// setMaxConcurrentTask (max: number): void; // actually not supported
|
||
|
||
checkUpdate (): void;
|
||
prepareUpdate (): void;
|
||
update (): void;
|
||
isResuming (): boolean;
|
||
|
||
getDownloadedFiles (): number;
|
||
getDownloadedBytes (): number;
|
||
getTotalFiles (): number;
|
||
getTotalBytes (): number;
|
||
downloadFailedAssets (): void;
|
||
|
||
getLocalManifest (): Manifest;
|
||
loadLocalManifest (manifestUrl: string): boolean;
|
||
loadLocalManifest (localManifest: Manifest, storagePath: string): boolean;
|
||
getRemoteManifest (): Manifest;
|
||
loadRemoteManifest (remoteManifest: Manifest): boolean;
|
||
|
||
/**
|
||
* Setup your own version compare handler, versionA and B is versions in string.
|
||
* if the return value greater than 0, versionA is greater than B,
|
||
* if the return value equals 0, versionA equals to B,
|
||
* if the return value smaller than 0, versionA is smaller than B.
|
||
*/
|
||
setVersionCompareHandle (versionCompareHandle?: (versionA: string, versionB: string) => number): void;
|
||
/**
|
||
* Setup the verification callback, Return true if the verification passed, otherwise return false
|
||
*/
|
||
setVerifyCallback (verifyCallback: (path: string, asset: ManifestAsset) => boolean): void;
|
||
setEventCallback (eventCallback: (event: EventAssetsManager) => void): void;
|
||
}
|
||
|
||
/**
|
||
* FileUtils Helper class to handle file operations.
|
||
*/
|
||
export module fileUtils{
|
||
/**
|
||
* Checks whether the path is an absolute path.
|
||
*
|
||
* @note On Android, if the parameter passed in is relative to "@assets/", this method will treat it as an absolute path.
|
||
* Also on Blackberry, path starts with "app/native/Resources/" is treated as an absolute path.
|
||
*
|
||
* @param path The path that needs to be checked.
|
||
* @return True if it's an absolute path, false if not.
|
||
*/
|
||
export function isAbsolutePath (path:string):boolean;
|
||
/** 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 FileUtils 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 filename 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.
|
||
|
||
@since v2.1
|
||
*/
|
||
export function fullPathForFilename (filename:string):string;
|
||
/**
|
||
* Gets string from a file.
|
||
*/
|
||
export function getStringFromFile (filename:string):string;
|
||
/**
|
||
* Removes a file.
|
||
*
|
||
* @param filepath The full path of the file, it must be an absolute path.
|
||
* @return True if the file have been removed successfully, false if not.
|
||
*/
|
||
export function removeFile (filepath:string):boolean;
|
||
/**
|
||
* Checks whether the path is a directory.
|
||
*
|
||
* @param dirPath The path of the directory, it could be a relative or an absolute path.
|
||
* @return True if the directory exists, false if not.
|
||
*/
|
||
export function isDirectoryExist (dirPath:string):boolean;
|
||
/**
|
||
* Normalize: remove . and ..
|
||
* @param filepath
|
||
*/
|
||
export function normalizePath (filepath:string):string;
|
||
/**
|
||
* Get default resource root path.
|
||
*/
|
||
export function getDefaultResourceRootPath ():string;
|
||
/**
|
||
* Loads the filenameLookup dictionary from the contents of a filename.
|
||
*
|
||
* @note The plist file name should follow the format below:
|
||
*
|
||
* @code
|
||
* <?xml version="1.0" encoding="UTF-8"?>
|
||
* <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||
* <plist version="1.0">
|
||
* <dict>
|
||
* <key>filenames</key>
|
||
* <dict>
|
||
* <key>sounds/click.wav</key>
|
||
* <string>sounds/click.caf</string>
|
||
* <key>sounds/endgame.wav</key>
|
||
* <string>sounds/endgame.caf</string>
|
||
* <key>sounds/gem-0.wav</key>
|
||
* <string>sounds/gem-0.caf</string>
|
||
* </dict>
|
||
* <key>metadata</key>
|
||
* <dict>
|
||
* <key>version</key>
|
||
* <integer>1</integer>
|
||
* </dict>
|
||
* </dict>
|
||
* </plist>
|
||
* @endcode
|
||
* @param filename The plist file name.
|
||
*
|
||
@since v2.1
|
||
* @js loadFilenameLookup
|
||
* @lua loadFilenameLookup
|
||
*/
|
||
export function loadFilenameLookup (filepath:string):void;
|
||
/** Checks whether to pop up a message box when failed to load an image.
|
||
* @return True if pop up a message box when failed to load an image, false if not.
|
||
*/
|
||
export function isPopupNotify ():boolean;
|
||
/**
|
||
* Sets whether to pop-up a message box when failed to load an image.
|
||
*/
|
||
export function setPopupNotify (notify:boolean):void;
|
||
|
||
// Converts the contents of a file to a ValueVector.
|
||
// This method is used internally.
|
||
export function getValueVectorFromFile (filepath:string):Array<any>;
|
||
/**
|
||
* Gets the array of search paths.
|
||
*
|
||
* @return The array of search paths which may contain the prefix of default resource root path.
|
||
* @note In best practise, getter function should return the value of setter function passes in.
|
||
* But since we should not break the compatibility, we keep using the old logic.
|
||
* Therefore, If you want to get the original search paths, please call 'getOriginalSearchPaths()' instead.
|
||
* @see fullPathForFilename(const char*).
|
||
* @lua NA
|
||
*/
|
||
export function getSearchPaths ():Array<string>;
|
||
/**
|
||
*
|
||
* @param filepath
|
||
*/
|
||
export function getFileDir (filepath:string):string;
|
||
/**
|
||
* write a ValueMap into a plist file
|
||
*
|
||
*@param dict the ValueMap want to save (key,value)
|
||
*@param fullPath The full path to the file you want to save a string
|
||
*@return bool
|
||
*/
|
||
export function writeToFile ( valueMap:any ):boolean;
|
||
/**
|
||
* Gets the original search path array set by 'setSearchPaths' or 'addSearchPath'.
|
||
* @return The array of the original search paths
|
||
*/
|
||
export function getOriginalSearchPaths ():Array<string>;
|
||
/**
|
||
* List all files in a directory.
|
||
*
|
||
* @param dirPath The path of the directory, it could be a relative or an absolute path.
|
||
* @return File paths in a string vector
|
||
*/
|
||
export function listFiles (filepath:string):Array<string>;
|
||
/**
|
||
* Converts the contents of a file to a ValueMap.
|
||
* @param filename The filename of the file to gets content.
|
||
* @return ValueMap of the file contents.
|
||
* @note This method is used internally.
|
||
*/
|
||
export function getValueMapFromFile (filepath:string):any;
|
||
/**
|
||
* Retrieve the file size.
|
||
*
|
||
* @note If a relative path was passed in, it will be inserted a default root path at the beginning.
|
||
* @param filepath The path of the file, it could be a relative or absolute path.
|
||
* @return The file size.
|
||
*/
|
||
export function getFileSize (filepath:string):number;
|
||
|
||
/** Converts the contents of a file to a ValueMap.
|
||
* This method is used internally.
|
||
*/
|
||
export function getValueMapFromData (filedata:string,filesize:number):any;
|
||
/**
|
||
* Removes a directory.
|
||
*
|
||
* @param dirPath The full path of the directory, it must be an absolute path.
|
||
* @return True if the directory have been removed successfully, false if not.
|
||
*/
|
||
export function removeDirectory (dirPath:string):boolean;
|
||
/**
|
||
* 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.
|
||
*
|
||
* @note This method could access relative path and absolute path.
|
||
* If the relative path was passed to the vector, FileUtils will add the default resource directory before the relative path.
|
||
* For instance:
|
||
* On Android, the default resource root path is "@assets/".
|
||
* If "/mnt/sdcard/" and "resources-large" were set to the search paths vector,
|
||
* "resources-large" will be converted to "@assets/resources-large" since it was a relative path.
|
||
*
|
||
* @param searchPaths The array contains search paths.
|
||
* @see fullPathForFilename(const char*)
|
||
* @since v2.1
|
||
* In js:var setSearchPaths(var jsval);
|
||
* @lua NA
|
||
*/
|
||
export function setSearchPaths ( searchPath:Array<string>):void;
|
||
/**
|
||
* write a string into a file
|
||
*
|
||
* @param dataStr the string want to save
|
||
* @param fullPath The full path to the file you want to save a string
|
||
* @return bool True if write success
|
||
*/
|
||
export function writeStringToFile (dataStr:string,fullPath:string):boolean;
|
||
/**
|
||
* Sets the array that contains the search order of the resources.
|
||
*
|
||
* @param searchResolutionsOrder The source array that contains the search order of the resources.
|
||
* @see getSearchResolutionsOrder(), fullPathForFilename(const char*).
|
||
* @since v2.1
|
||
* In js:var setSearchResolutionsOrder(var jsval)
|
||
* @lua NA
|
||
*/
|
||
export function setSearchResolutionsOrder (searchResolutionsOrder:Array<string>):void;
|
||
/**
|
||
* Append search order of the resources.
|
||
*
|
||
* @see setSearchResolutionsOrder(), fullPathForFilename().
|
||
* @since v2.1
|
||
*/
|
||
export function addSearchResolutionsOrder (order:string,front:boolean):void;
|
||
/**
|
||
* Add search path.
|
||
*
|
||
* @since v2.1
|
||
*/
|
||
export function addSearchPath (path:string,front:boolean):void;
|
||
/**
|
||
* write ValueVector into a plist file
|
||
*
|
||
*@param vecData the ValueVector want to save
|
||
*@param fullPath The full path to the file you want to save a string
|
||
*@return bool
|
||
*/
|
||
export function writeValueVectorToFile (vecData:Array<any>,fullPath:string):boolean;
|
||
/**
|
||
* Checks whether a file exists.
|
||
*
|
||
* @note If a relative path was passed in, it will be inserted a default root path at the beginning.
|
||
* @param filename The path of the file, it could be a relative or absolute path.
|
||
* @return True if the file exists, false if not.
|
||
*/
|
||
export function isFileExist (filename:string):boolean;
|
||
/**©∫
|
||
* Purges full path caches.
|
||
*/
|
||
export function purgeCachedEntries ():void;
|
||
/**
|
||
* Gets full path from a file name and the path of the relative file.
|
||
* @param filename The file name.
|
||
* @param relativeFile The path of the relative file.
|
||
* @return The full path.
|
||
* e.g. filename: hello.png, pszRelativeFile: /User/path1/path2/hello.plist
|
||
* Return: /User/path1/path2/hello.pvr (If there a a key(hello.png)-value(hello.pvr) in FilenameLookup dictionary. )
|
||
*
|
||
*/
|
||
export function fullPathFromRelativeFile (filename:string,relativeFile:string):string;
|
||
/**
|
||
* Windows fopen can't support UTF-8 filename
|
||
* Need convert all parameters fopen and other 3rd-party libs
|
||
*
|
||
* @param filenameUtf8 std::string name file for conversion from utf-8
|
||
* @return std::string ansi filename in current locale
|
||
*/
|
||
export function getSuitableFOpen (filenameUtf8:string):string;
|
||
/**
|
||
* write ValueMap into a plist file
|
||
*
|
||
*@param dict the ValueMap want to save
|
||
*@param fullPath The full path to the file you want to save a string
|
||
*@return bool
|
||
*/
|
||
export function writeValueMapToFile (dict:any,fullPath:string):string;
|
||
/**
|
||
* Gets filename extension is a suffix (separated from the base filename by a dot) in lower case.
|
||
* Examples of filename extensions are .png, .jpeg, .exe, .dmg and .txt.
|
||
* @param filePath The path of the file, it could be a relative or absolute path.
|
||
* @return suffix for filename in lower case or empty if a dot not found.
|
||
*/
|
||
export function getFileExtension (filePath:string):string;
|
||
/**
|
||
* Sets writable path.
|
||
*/
|
||
export function setWritablePath (writablePath:string):void;
|
||
/**
|
||
* Set default resource root path.
|
||
*/
|
||
export function setDefaultResourceRootPath (filepath:string):void;
|
||
|
||
/**
|
||
* Gets the array that contains the search order of the resources.
|
||
*
|
||
* @see setSearchResolutionsOrder(const std::vector<std::string>&), fullPathForFilename(const char*).
|
||
* @since v2.1
|
||
* @lua NA
|
||
*/
|
||
export function getSearchResolutionsOrder ():Array<string>;
|
||
/**
|
||
* Creates a directory.
|
||
*
|
||
* @param dirPath The path of the directory, it must be an absolute path.
|
||
* @return True if the directory have been created successfully, false if not.
|
||
*/
|
||
export function createDirectory (dirPath:string):string;
|
||
/**
|
||
* List all files recursively in a directory.
|
||
*
|
||
* @param dirPath The path of the directory, it could be a relative or an absolute path.
|
||
* @return File paths in a string vector
|
||
*/
|
||
export function listFilesRecursively (dirPath:string, files:Array<string>):void;
|
||
/**
|
||
* Gets the writable path.
|
||
* @return The path that can be write/read a file in
|
||
*/
|
||
export function getWritablePath ():string;
|
||
}
|
||
} |