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