Reputation: 1199
I'm using libGDX's AssetManager, I have checked that my files have been loaded using the .update() method. Note that my boolean loaded is true once AssetManager.update() returns true (which means everything has been loaded).
if(loaded)
{
if(player == null && walls == null)
{
player = new Player(this);
walls = new WallList(this);
}
//unrelated stuff
}
My player object uses a texture and it works just fine. But my walls object also uses a texture but it crashes. Here's my setup (in my WallList constructor)
//unrelated stuff
this.colors = new HashMap<Color, String>();
this.spawningColor = Color.red;
colors.put(Color.red, "sqr_wall_red");
for(int i = 0; i < wallCountNeeded; i++)
{
this.add(new Wall(getTextureFromColor(spawningColor), i*wallWidth, 0));
}
In the code above, I make a HashMap and assign "sqr_wall_red" which is also the name of the png. I then call TextureFromColor to get the Texture from the AssetManager while using Color.Red as parameter.
private Texture getTextureFromColor(Color color)
{
return game.getAssetManager().get("data/Sprites/" + colors.get(color) + ".png", Texture.class);
}
And I get this error
Exception in thread "LWJGL Application" java.lang.NullPointerException at com.cedric.game.geometry.WallList.getTextureFromColor(WallList.java:45) at com.cedric.game.geometry.WallList.(WallList.java:39)
I'm pretty confident in the fact that the path is alright since I load it like this
assetManager.load("data/Sprites/sqr_wall_red.png", Texture.class);
and if I print the path I'm using for assetManager.get()
System.out.println("data/Sprites/" + colors.get(spawningColor) + ".png");
I get this as an output (which matches the exact input in the assetManager.load()
data/Sprites/sqr_wall_red.png
I think I have provided sufficient information in order to resolve my issue, but if you need more I will gladly show more.
Upvotes: 2
Views: 355
Reputation: 83527
return game.getAssetManager().get("data/Sprites/" + colors.get(color) + ".png", Texture.class);
There are 3 possible places in that line of code that can cause an NPE: game
, getAssetManager()
, and colors
. You need to determine which one it is.
Upvotes: 3