Skip to content

Commit 8f872a7

Browse files
committed
Simplify asset lookup
1 parent 3b1dd69 commit 8f872a7

26 files changed

+98
-76
lines changed

Diff for: 2d/src/main/java/de/bitbrain/braingdx/context/GameContext2DImpl.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,11 @@
4949
import de.bitbrain.braingdx.physics.PhysicsManager;
5050
import de.bitbrain.braingdx.physics.PhysicsManagerImpl;
5151
import de.bitbrain.braingdx.screens.AbstractScreen;
52-
import de.bitbrain.braingdx.tmx.*;
52+
import de.bitbrain.braingdx.tmx.TiledMapContextFactory;
5353
import de.bitbrain.braingdx.tmx.TiledMapEvents.OnLoadGameObjectEvent;
54+
import de.bitbrain.braingdx.tmx.TiledMapInfoExtractor;
55+
import de.bitbrain.braingdx.tmx.TiledMapManager;
56+
import de.bitbrain.braingdx.tmx.TiledMapManagerImpl;
5457
import de.bitbrain.braingdx.tmx.events.TmxAudioConfigurer;
5558
import de.bitbrain.braingdx.tmx.events.TmxLightingConfigurer;
5659
import de.bitbrain.braingdx.util.ArgumentFactory;

Diff for: 2d/src/main/java/de/bitbrain/braingdx/graphics/VectorGameCamera.java

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import aurelienribon.tweenengine.Tween;
2020
import aurelienribon.tweenengine.TweenCallback;
2121
import aurelienribon.tweenengine.TweenEquations;
22-
import com.badlogic.gdx.Gdx;
2322
import com.badlogic.gdx.graphics.Camera;
2423
import com.badlogic.gdx.graphics.OrthographicCamera;
2524
import com.badlogic.gdx.math.Rectangle;

Diff for: 2d/src/main/java/de/bitbrain/braingdx/graphics/animation/AnimationSpriteSheet.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.badlogic.gdx.graphics.Texture;
44
import com.badlogic.gdx.graphics.g2d.TextureRegion;
5-
import de.bitbrain.braingdx.assets.SharedAssetManager;
5+
import de.bitbrain.braingdx.assets.Asset;
66

77
import java.util.HashMap;
88
import java.util.Map;
@@ -25,11 +25,11 @@ public class AnimationSpriteSheet {
2525
private final TextureRegion[][] textureRegions;
2626

2727
public AnimationSpriteSheet(String assetId, int tileSize) {
28-
this(SharedAssetManager.getInstance().get(assetId, Texture.class), tileSize);
28+
this(Asset.get(assetId, Texture.class), tileSize);
2929
}
3030

3131
public AnimationSpriteSheet(String assetId, int tileWidth, int tileHeight) {
32-
this(SharedAssetManager.getInstance().get(assetId, Texture.class), tileWidth, tileHeight);
32+
this(Asset.get(assetId, Texture.class), tileWidth, tileHeight);
3333
}
3434

3535
public AnimationSpriteSheet(Texture texture, int tileSize) {

Diff for: 2d/src/main/java/de/bitbrain/braingdx/graphics/lighting/LightBehavior.java

-4
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515

1616
package de.bitbrain.braingdx.graphics.lighting;
1717

18-
import box2dLight.Light;
19-
import de.bitbrain.braingdx.behavior.BehaviorAdapter;
20-
import de.bitbrain.braingdx.world.GameObject;
21-
2218
/**
2319
* Lighting behavior to attach lights to game objects
2420
*

Diff for: 2d/src/main/java/de/bitbrain/braingdx/graphics/particles/ParticleManagerImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool;
77
import com.badlogic.gdx.graphics.g2d.ParticleEmitter;
88
import com.badlogic.gdx.utils.Disposable;
9-
import de.bitbrain.braingdx.assets.SharedAssetManager;
9+
import de.bitbrain.braingdx.assets.Asset;
1010
import de.bitbrain.braingdx.behavior.BehaviorAdapter;
1111
import de.bitbrain.braingdx.behavior.BehaviorManager;
1212
import de.bitbrain.braingdx.graphics.GraphicsSettings;
@@ -102,7 +102,7 @@ public void dispose() {
102102
private InternalPooledEffect ensureEffect(String particleId) {
103103
ParticleEffectPool pool = pools.get(particleId);
104104
if (pool == null) {
105-
ParticleEffect effect = SharedAssetManager.getInstance().get(particleId, ParticleEffect.class);
105+
ParticleEffect effect = Asset.get(particleId, ParticleEffect.class);
106106
pool = new ParticleEffectPool(effect, 100, 500);
107107
pools.put(particleId, pool);
108108
}

Diff for: 2d/src/main/java/de/bitbrain/braingdx/graphics/renderer/SpriteRenderer.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515

1616
package de.bitbrain.braingdx.graphics.renderer;
1717

18-
import com.badlogic.gdx.assets.AssetManager;
1918
import com.badlogic.gdx.graphics.Texture;
2019
import com.badlogic.gdx.graphics.g2d.Batch;
2120
import com.badlogic.gdx.graphics.g2d.Sprite;
2221
import com.badlogic.gdx.math.Vector2;
23-
import de.bitbrain.braingdx.assets.SharedAssetManager;
22+
import de.bitbrain.braingdx.assets.Asset;
2423
import de.bitbrain.braingdx.world.GameObject;
2524

2625
/**
@@ -32,7 +31,6 @@
3231
*/
3332
public class SpriteRenderer extends GameObject2DRenderer {
3433

35-
private final AssetManager assets = SharedAssetManager.getInstance();
3634
private final Vector2 offset = new Vector2();
3735
private final Vector2 rotationalOffset = new Vector2();
3836
private final Vector2 size = new Vector2();
@@ -42,7 +40,7 @@ public class SpriteRenderer extends GameObject2DRenderer {
4240

4341
public SpriteRenderer(String textureId) {
4442
if (textureId != null) {
45-
texture = assets.get(textureId, Texture.class);
43+
texture = Asset.get(textureId, Texture.class);
4644
sprite = new Sprite(texture);
4745
}
4846
}

Diff for: 2d/src/main/java/de/bitbrain/braingdx/tmx/TiledMapContextImpl.java

-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import de.bitbrain.braingdx.world.GameObject;
1414
import de.bitbrain.braingdx.world.GameWorld;
1515

16-
import java.util.List;
17-
1816
public class TiledMapContextImpl implements TiledMapContext {
1917

2018
private final TiledMap tiledMap;

Diff for: 2d/src/main/java/de/bitbrain/braingdx/tmx/TiledMapManagerImpl.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.badlogic.gdx.maps.MapProperties;
66
import com.badlogic.gdx.maps.tiled.TiledMap;
77
import com.badlogic.gdx.utils.Disposable;
8-
import de.bitbrain.braingdx.assets.SharedAssetManager;
8+
import de.bitbrain.braingdx.assets.Asset;
99
import de.bitbrain.braingdx.event.GameEventManager;
1010
import de.bitbrain.braingdx.world.GameWorld;
1111
import de.bitbrain.braingdx.world.SimpleWorldBounds;
@@ -42,12 +42,12 @@ public TiledMapContext load(
4242

4343
@Override
4444
public TiledMapContext load(String path, Camera camera, TiledMapConfig config) throws TiledMapException {
45-
return load(SharedAssetManager.getInstance().get(path, TiledMap.class), camera, config);
45+
return load(Asset.get(path, TiledMap.class), camera, config);
4646
}
4747

4848
@Override
4949
public TiledMapContext load(String path, Camera camera) throws TiledMapException {
50-
return load(SharedAssetManager.getInstance().get(path, TiledMap.class), camera);
50+
return load(Asset.get(path, TiledMap.class), camera);
5151
}
5252

5353
@Override
@@ -91,7 +91,7 @@ public void unload(TiledMapContext context) {
9191

9292
@Override
9393
public void unload(String path) {
94-
unload(contextMap.get(SharedAssetManager.getInstance().get(path, TiledMap.class)));
94+
unload(contextMap.get(Asset.get(path, TiledMap.class)));
9595
}
9696

9797
@Override

Diff for: 2d/src/test/java/de/bitbrain/braingdx/graphics/lighting/LightingManagerTest.java

-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import box2dLight.PointLight;
44
import box2dLight.RayHandler;
5-
import com.badlogic.gdx.Application;
6-
import com.badlogic.gdx.Gdx;
75
import com.badlogic.gdx.graphics.Color;
86
import com.badlogic.gdx.math.Vector2;
97
import de.bitbrain.braingdx.graphics.lighting.LightingManagerImpl.LightFactory;
@@ -12,9 +10,7 @@
1210
import org.junit.runner.RunWith;
1311
import org.mockito.InjectMocks;
1412
import org.mockito.Mock;
15-
import org.mockito.invocation.InvocationOnMock;
1613
import org.mockito.runners.MockitoJUnitRunner;
17-
import org.mockito.stubbing.Answer;
1814

1915
import static de.bitbrain.braingdx.utils.GdxUtils.mockApplicationContext;
2016
import static org.mockito.Mockito.*;

Diff for: CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# Version 0.6.34
2+
3+
* rename `SharedAssetManager` into `Asset`
4+
15
# Version 0.6.33
26

37
* [[#224](https://github.com/bitbrain/braingdx/issues/224)] introduce `@AssetSource` annotation

Diff for: core/src/main/java/de/bitbrain/braingdx/BrainGdxGame.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@
1717

1818
import aurelienribon.tweenengine.Tween;
1919
import com.badlogic.gdx.Game;
20-
import com.badlogic.gdx.assets.AssetManager;
2120
import com.badlogic.gdx.graphics.Color;
2221
import com.badlogic.gdx.graphics.g2d.Sprite;
2322
import com.badlogic.gdx.math.Vector2;
2423
import com.badlogic.gdx.scenes.scene2d.Actor;
24+
import de.bitbrain.braingdx.assets.Asset;
2525
import de.bitbrain.braingdx.assets.GameAssetLoader;
26-
import de.bitbrain.braingdx.assets.SharedAssetManager;
2726
import de.bitbrain.braingdx.graphics.BitmapFontBaker;
2827
import de.bitbrain.braingdx.graphics.GameCamera;
2928
import de.bitbrain.braingdx.graphics.postprocessing.effects.*;
@@ -63,16 +62,15 @@ public void dispose() {
6362
protected abstract AbstractScreen<?, ?> getInitialScreen();
6463

6564
private void loadAssets() {
66-
final AssetManager assetManager = SharedAssetManager.getInstance();
6765
final GameAssetLoader loader = getAssetLoader();
6866
if (loader == null)
6967
throw new RuntimeException("No asset loader has been specified.");
7068
final HashMap<String, Class<?>> mapping = new HashMap<String, Class<?>>();
7169
loader.put(mapping);
7270
for (final Map.Entry<String, Class<?>> entry : mapping.entrySet()) {
73-
assetManager.load(entry.getKey(), entry.getValue());
71+
Asset.load(entry.getKey(), entry.getValue());
7472
}
75-
assetManager.finishLoading();
73+
Asset.finishLoading();
7674
}
7775

7876
private void initTweens() {

Diff for: core/src/main/java/de/bitbrain/braingdx/assets/SharedAssetManager.java renamed to core/src/main/java/de/bitbrain/braingdx/assets/Asset.java

+41-4
Original file line numberDiff line numberDiff line change
@@ -24,36 +24,67 @@
2424
import com.badlogic.gdx.maps.tiled.TiledMap;
2525
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
2626

27+
import java.util.HashMap;
28+
import java.util.Map;
29+
2730
/**
2831
* Singleton implementation of an asset manager
2932
*
3033
* @author Miguel Gonzalez Sanchez
3134
* @version 1.0.0
3235
* @since 1.0.0
3336
*/
34-
public class SharedAssetManager extends AssetManager {
37+
public class Asset {
3538

3639
public static FileHandleResolver fileHandleResolver = new InternalFileHandleResolver();
3740
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+
}
3846

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);
4053
}
4154

4255
/**
4356
* Provides the internal asset manager instance
4457
*/
45-
public static AssetManager getInstance() {
46-
58+
private static AssetManager getAssetManager() {
4759
if (instance == null)
4860
loadInternal();
4961

5062
return instance;
5163
}
5264

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+
5381
public static void reload() {
5482
if (instance != null) {
5583
instance.dispose();
5684
loadInternal();
85+
for (Map.Entry<String, Class<?>> entry : assets.entrySet()) {
86+
load(entry.getKey(), entry.getValue());
87+
}
5788
}
5889
}
5990

@@ -66,4 +97,10 @@ private static void loadInternal() {
6697
instance.setLoader(FreeTypeFontGenerator.class,
6798
new FreeTypeFontGeneratorLoader(fileHandleResolver));
6899
}
100+
101+
public static void finishLoading() {
102+
if (instance != null) {
103+
instance.finishLoading();
104+
}
105+
}
69106
}

Diff for: core/src/main/java/de/bitbrain/braingdx/assets/SmartAssetLoader.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ private void putMembers(Class<?> subclass, Map<String, Class<?>> assets, AssetSo
6565
Object path = field.get(null);
6666
if (path instanceof String) {
6767
assets.put(source.directory() + "/" + path, source.assetClass());
68-
Gdx.app.log("INFO", "Registering asset: path=" + path + ", class=" + source.assetClass().getName());
68+
Gdx.app.log("INFO", "Registering asset: path=" + source.directory() + "/" + path + ", class=" + source.assetClass().getName());
6969
} else {
7070
Gdx.app.log("WARN", "Invalid property type in '" + subclass.getName() + "::" + field.getName() + "! Only java.lang.String is allowed.");
7171
}

0 commit comments

Comments
 (0)