Add preloading for non-anonymous classes.
This commit is contained in:
		
							parent
							
								
									189c526b67
								
							
						
					
					
						commit
						d59fbafd8c
					
				| @ -83,6 +83,11 @@ public class Loader { | ||||
| 		loadingScreen.initialize(0, elements.length); | ||||
| 		for(int i=0; i<elements.length; i++) { | ||||
| 			String e = elements[i]; | ||||
| 			if(e.endsWith(".class")) { | ||||
| 				if(GameConfig.DEBUG) | ||||
| 					System.out.println("Loading Class for: " + e); | ||||
| 				Loader.preloadClassByFilename(e); | ||||
| 			} | ||||
| 			if(e.endsWith(".png")) { | ||||
| 				if(GameConfig.DEBUG) | ||||
| 					System.out.println("Creating BufferedImage for: " + e); | ||||
| @ -97,6 +102,22 @@ public class Loader { | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Preload a given class by its filename using the ClassLoader. | ||||
| 	 * This way, we avoid reading out of a jar later. | ||||
| 	 */ | ||||
| 	private static void preloadClassByFilename(String classFilename) { | ||||
| 		if(classFilename.contains("$")) return; //skip anonymous classes | ||||
| 		String className = classFilename.replace(".class", "").replace(File.separator, "."); | ||||
| 		try { | ||||
| 			Class.forName(className); | ||||
| 		} catch (ClassNotFoundException e) { | ||||
| 			System.err.println("Error preloading class: " + classFilename); | ||||
| 			System.err.println("> Resulting class name: " + className); | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Load a BufferedImage by relative filename. | ||||
| 	 */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user