24
24
import com .badlogic .gdx .maps .tiled .TiledMap ;
25
25
import com .badlogic .gdx .maps .tiled .TmxMapLoader ;
26
26
27
+ import java .util .HashMap ;
28
+ import java .util .Map ;
29
+
27
30
/**
28
31
* Singleton implementation of an asset manager
29
32
*
30
33
* @author Miguel Gonzalez Sanchez
31
34
* @version 1.0.0
32
35
* @since 1.0.0
33
36
*/
34
- public class SharedAssetManager extends AssetManager {
37
+ public class Asset {
35
38
36
39
public static FileHandleResolver fileHandleResolver = new InternalFileHandleResolver ();
37
40
private static AssetManager instance = null ;
41
+ private static Map <Class <?>, String > assetFolders = new HashMap <Class <?>, String >();
42
+ private static Map <String , Class <?>> assets = new HashMap <String , Class <?>>();
43
+
44
+ private Asset () {
45
+ }
38
46
39
- private SharedAssetManager () {
47
+ public static <T > T get (String relativePath , Class <T > assetClass ) {
48
+ AssetManager assetManager = getAssetManager ();
49
+ String path = assetFolders .containsKey (assetClass )
50
+ ? assetFolders .get (assetClass ) + "/" + relativePath
51
+ : relativePath ;
52
+ return assetManager .get (path , assetClass );
40
53
}
41
54
42
55
/**
43
56
* Provides the internal asset manager instance
44
57
*/
45
- public static AssetManager getInstance () {
46
-
58
+ private static AssetManager getAssetManager () {
47
59
if (instance == null )
48
60
loadInternal ();
49
61
50
62
return instance ;
51
63
}
52
64
65
+ public static void load (String key , Class <?> value ) {
66
+ if (!assetFolders .containsKey (value )) {
67
+ int lastIndex = key .lastIndexOf ("/" );
68
+ if (lastIndex == -1 ) {
69
+ lastIndex = key .lastIndexOf ("\\ " );
70
+ }
71
+ if (lastIndex != -1 ) {
72
+ String folder = key .substring (0 , lastIndex );
73
+ assetFolders .put (value , folder );
74
+ }
75
+ }
76
+ AssetManager assetManager = getAssetManager ();
77
+ assetManager .load (key , value );
78
+ assets .put (key , value );
79
+ }
80
+
53
81
public static void reload () {
54
82
if (instance != null ) {
55
83
instance .dispose ();
56
84
loadInternal ();
85
+ for (Map .Entry <String , Class <?>> entry : assets .entrySet ()) {
86
+ load (entry .getKey (), entry .getValue ());
87
+ }
57
88
}
58
89
}
59
90
@@ -66,4 +97,10 @@ private static void loadInternal() {
66
97
instance .setLoader (FreeTypeFontGenerator .class ,
67
98
new FreeTypeFontGeneratorLoader (fileHandleResolver ));
68
99
}
100
+
101
+ public static void finishLoading () {
102
+ if (instance != null ) {
103
+ instance .finishLoading ();
104
+ }
105
+ }
69
106
}
0 commit comments