feat: added custiomized functions to ResourceManager
This commit is contained in:
parent
a1bc6aa095
commit
3f7254ffb8
|
@ -974,6 +974,100 @@ export default class ResourceManager {
|
||||||
/ this.loadonly_typesToLoad;
|
/ this.loadonly_typesToLoad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Customized funtions below
|
||||||
|
// These funtions are NOT well tested!!!
|
||||||
|
// Only used for shatted sword specific purpose!!!
|
||||||
|
// Use them carefully!!!
|
||||||
|
|
||||||
|
public loadSingleTilemap(key: string, tiledMap: TiledTilemapData, callbackIfLast: Function): void {
|
||||||
|
// We can parse the object later - it's much faster than loading
|
||||||
|
this.tilemaps.add(key, tiledMap);
|
||||||
|
let resource = new ResourceReference(key, ResourceType.TILEMAP);
|
||||||
|
|
||||||
|
// Grab the tileset images we need to load and add them to the imageloading queue
|
||||||
|
for (let tileset of tiledMap.tilesets) {
|
||||||
|
if (tileset.image) {
|
||||||
|
let key = tileset.image;
|
||||||
|
let path = key;
|
||||||
|
this.loadSingleImage(key, path, true , callbackIfLast);
|
||||||
|
|
||||||
|
// Add this image as a dependency to the tilemap
|
||||||
|
resource.addDependency(new ResourceReference(key, ResourceType.IMAGE));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the resource reference to the list of resource to unload
|
||||||
|
this.resourcesToUnload.push(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
private loadSingleSpritesheet(key: string, pathToSpritesheetJSON: string, callbackIfLast: Function): void {
|
||||||
|
this.loadTextFile(pathToSpritesheetJSON, (fileText: string) => {
|
||||||
|
let spritesheet = <Spritesheet>JSON.parse(fileText);
|
||||||
|
|
||||||
|
// We can parse the object later - it's much faster than loading
|
||||||
|
this.spritesheets.add(key, spritesheet);
|
||||||
|
|
||||||
|
let resource = new ResourceReference(key, ResourceType.SPRITESHEET);
|
||||||
|
|
||||||
|
// Grab the image we need to load and add it to the imageloading queue
|
||||||
|
let path = StringUtils.getPathFromFilePath(pathToSpritesheetJSON) + spritesheet.spriteSheetImage;
|
||||||
|
this.loadSingleImage(spritesheet.name, path, true, callbackIfLast);
|
||||||
|
|
||||||
|
resource.addDependency(new ResourceReference(spritesheet.name, ResourceType.IMAGE));
|
||||||
|
this.resourcesToUnload.push(resource);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public loadSingleImage(key: string, path: string, isDependency: boolean, callbackIfLast: Function): void {
|
||||||
|
var image = new Image();
|
||||||
|
|
||||||
|
image.onload = () => {
|
||||||
|
// Add to loaded images
|
||||||
|
this.images.add(key, image);
|
||||||
|
|
||||||
|
// If not a dependency, push it to the unload list. Otherwise it's managed by something else
|
||||||
|
if (!isDependency) {
|
||||||
|
this.resourcesToUnload.push(new ResourceReference(key, ResourceType.IMAGE));
|
||||||
|
}
|
||||||
|
|
||||||
|
// If WebGL is active, create a texture
|
||||||
|
if (this.gl_WebGLActive) {
|
||||||
|
this.createWebGLTexture(key, image);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finish image load
|
||||||
|
this.finishLoadingSingleObject(callbackIfLast);
|
||||||
|
}
|
||||||
|
|
||||||
|
image.src = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private loadSingleAudio(key: string, path: string, callbackIfLast: Function): void {
|
||||||
|
let audioCtx = AudioManager.getInstance().getAudioContext();
|
||||||
|
|
||||||
|
let request = new XMLHttpRequest();
|
||||||
|
request.open('GET', path, true);
|
||||||
|
request.responseType = 'arraybuffer';
|
||||||
|
|
||||||
|
request.onload = () => {
|
||||||
|
audioCtx.decodeAudioData(request.response, (buffer) => {
|
||||||
|
// Add to list of audio buffers
|
||||||
|
this.audioBuffers.add(key, buffer);
|
||||||
|
this.resourcesToUnload.push(new ResourceReference(key, ResourceType.AUDIO));
|
||||||
|
|
||||||
|
// Finish loading sound
|
||||||
|
this.finishLoadingSingleObject(callbackIfLast);
|
||||||
|
}, (error) => {
|
||||||
|
throw "Error loading sound";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
request.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
private finishLoadingSingleObject(callback: Function): void {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
|
||||||
update(deltaT: number): void {
|
update(deltaT: number): void {
|
||||||
if (this.loading) {
|
if (this.loading) {
|
||||||
if (this.onLoadProgress) {
|
if (this.onLoadProgress) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user