Move loadFileAsync to js file
This commit is contained in:
		
							parent
							
								
									2c08238259
								
							
						
					
					
						commit
						27d55a776e
					
				
					 2 changed files with 44 additions and 43 deletions
				
			
		| 
						 | 
					@ -18,3 +18,46 @@ function _base64ToBytes(base64) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return bytes;
 | 
					    return bytes;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.loadFileAsync = function(fullPath, callback) {
 | 
				
			||||||
 | 
					    // Make cache object
 | 
				
			||||||
 | 
					    if (!window.fileAsyncCache) window.fileAsyncCache = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check if already loaded
 | 
				
			||||||
 | 
					    if (window.fileAsyncCache.hasOwnProperty(fullPath)) return callback();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Show spinner
 | 
				
			||||||
 | 
					    if (window.setBusy) window.setBusy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get mapping key
 | 
				
			||||||
 | 
					    const mappingKey = fullPath.toLowerCase().replace(new RegExp("\\.[^/.]+$"), "");
 | 
				
			||||||
 | 
					    const mappingValue = mapping[mappingKey];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check if this is a folder
 | 
				
			||||||
 | 
					    if (!mappingValue || mappingValue.endsWith("h=")) {
 | 
				
			||||||
 | 
					        console.error("Skipping loading", fullPath, mappingValue);
 | 
				
			||||||
 | 
					        return callback();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get target URL
 | 
				
			||||||
 | 
					    const iurl = "gameasync/" + mappingValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get path and filename
 | 
				
			||||||
 | 
					    const path = "/game/" + mappingValue.substring(0, mappingValue.lastIndexOf("/"));
 | 
				
			||||||
 | 
					    const filename = mappingValue.substring(mappingValue.lastIndexOf("/") + 1).split("?")[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Delete original file if existent
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        FS.unlink(path + "/" + filename);
 | 
				
			||||||
 | 
					    } catch (err) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get the new file
 | 
				
			||||||
 | 
					    getLazyAsset(iurl, filename, () => {
 | 
				
			||||||
 | 
					        FS.createPreloadedFile(path, filename, iurl, true, true, function() {
 | 
				
			||||||
 | 
					            window.fileAsyncCache[fullPath] = 1;
 | 
				
			||||||
 | 
					            if (window.setNotBusy) window.setNotBusy();
 | 
				
			||||||
 | 
					            if (window.fileLoadedAsync) window.fileLoadedAsync(fullPath);
 | 
				
			||||||
 | 
					            callback();
 | 
				
			||||||
 | 
					        }, console.error);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,49 +4,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EM_JS(void, load_file_async_js, (const char* fullPathC), {
 | 
					EM_JS(void, load_file_async_js, (const char* fullPathC), {
 | 
				
			||||||
	Asyncify.handleSleep(function(wakeUp) {
 | 
						Asyncify.handleSleep(function(wakeUp) {
 | 
				
			||||||
		// Get argument
 | 
					    	window.loadFileAsync(UTF8ToString(fullPathC), wakeUp);
 | 
				
			||||||
		const fullPath = UTF8ToString(fullPathC);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Make cache object
 | 
					 | 
				
			||||||
		if (!window.fileAsyncCache) window.fileAsyncCache = {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Check if already loaded
 | 
					 | 
				
			||||||
		if (window.fileAsyncCache.hasOwnProperty(fullPath)) return wakeUp();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Show spinner
 | 
					 | 
				
			||||||
		if (window.setBusy) window.setBusy();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Get mapping key
 | 
					 | 
				
			||||||
		const mappingKey = fullPath.toLowerCase().replace(new RegExp("\\\\.[^/.]+$"), "");
 | 
					 | 
				
			||||||
		const mappingValue = mapping[mappingKey];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Check if this is a folder
 | 
					 | 
				
			||||||
		if (!mappingValue || mappingValue.endsWith("h=")) {
 | 
					 | 
				
			||||||
			console.error("Skipping loading", fullPath, mappingValue);
 | 
					 | 
				
			||||||
			return wakeUp();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Get target URL
 | 
					 | 
				
			||||||
		const iurl = "gameasync/" + mappingValue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Get path and filename
 | 
					 | 
				
			||||||
		const path = "/game/" + mappingValue.substring(0, mappingValue.lastIndexOf("/"));
 | 
					 | 
				
			||||||
		const filename = mappingValue.substring(mappingValue.lastIndexOf("/") + 1).split("?")[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Delete original file if existent
 | 
					 | 
				
			||||||
		try {
 | 
					 | 
				
			||||||
			FS.unlink(path + "/" + filename);
 | 
					 | 
				
			||||||
		} catch (err) {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Get the new file
 | 
					 | 
				
			||||||
		getLazyAsset(iurl, filename, () => {
 | 
					 | 
				
			||||||
			FS.createPreloadedFile(path, filename, iurl, true, true, function() {
 | 
					 | 
				
			||||||
				window.fileAsyncCache[fullPath] = 1;
 | 
					 | 
				
			||||||
				if (window.setNotBusy) window.setNotBusy();
 | 
					 | 
				
			||||||
				if (window.fileLoadedAsync) window.fileLoadedAsync(fullPath);
 | 
					 | 
				
			||||||
				wakeUp();
 | 
					 | 
				
			||||||
			}, console.error);
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue