allow for relative file paths in TileMeshCollection JSON definition files

This commit is contained in:
Gered 2013-10-05 19:12:57 -04:00
parent 4471358605
commit 554c2c8bb8

View file

@ -12,13 +12,20 @@ import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonReader; import com.badlogic.gdx.utils.JsonReader;
import com.blarg.gdx.Bitfield; import com.blarg.gdx.Bitfield;
import com.blarg.gdx.graphics.atlas.TextureAtlas; import com.blarg.gdx.graphics.atlas.TextureAtlas;
import com.blarg.gdx.io.FileHelpers;
import sun.reflect.generics.reflectiveObjects.NotImplementedException; import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public final class TileMeshCollectionLoader { public final class TileMeshCollectionLoader {
public static TileMeshCollection load(String configFile, TextureAtlas atlas) {
return load(Gdx.files.internal(configFile), atlas);
}
public static TileMeshCollection load(FileHandle configFile, TextureAtlas atlas) { public static TileMeshCollection load(FileHandle configFile, TextureAtlas atlas) {
String path = FileHelpers.getPath(configFile);
if (atlas == null) if (atlas == null)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
@ -151,7 +158,7 @@ public final class TileMeshCollectionLoader {
} else if (tileDef.model != null) { } else if (tileDef.model != null) {
model = models.get(tileDef.model); model = models.get(tileDef.model);
if (model == null) { if (model == null) {
model = loader.loadModel(Gdx.files.internal(tileDef.model)); model = loader.loadModel(FileHelpers.open(configFile.type(), path + tileDef.model));
models.put(tileDef.model, model); models.put(tileDef.model, model);
} }
@ -161,7 +168,7 @@ public final class TileMeshCollectionLoader {
//override with a specific collision model //override with a specific collision model
collisionModel = models.get(tileDef.collisionModel); collisionModel = models.get(tileDef.collisionModel);
if (collisionModel == null) { if (collisionModel == null) {
collisionModel = loader.loadModel(Gdx.files.internal(tileDef.collisionModel)); collisionModel = loader.loadModel(FileHelpers.open(configFile.type(), path + tileDef.collisionModel));
models.put(tileDef.collisionModel, collisionModel); models.put(tileDef.collisionModel, collisionModel);
} }
} }
@ -184,7 +191,7 @@ public final class TileMeshCollectionLoader {
submodels[j] = models.get(subModelDef.submodel); submodels[j] = models.get(subModelDef.submodel);
if (model == null) { if (model == null) {
submodels[j] = loader.loadModel(Gdx.files.internal(subModelDef.submodel)); submodels[j] = loader.loadModel(FileHelpers.open(configFile.type(), path + subModelDef.submodel));
models.put(subModelDef.submodel, submodels[j]); models.put(subModelDef.submodel, submodels[j]);
} }
@ -203,7 +210,7 @@ public final class TileMeshCollectionLoader {
//override with a specific collision model //override with a specific collision model
collisionModel = models.get(tileDef.collisionModel); collisionModel = models.get(tileDef.collisionModel);
if (collisionModel == null) { if (collisionModel == null) {
collisionModel = loader.loadModel(Gdx.files.internal(tileDef.collisionModel)); collisionModel = loader.loadModel(FileHelpers.open(configFile.type(), path + tileDef.collisionModel));
models.put(tileDef.collisionModel, collisionModel); models.put(tileDef.collisionModel, collisionModel);
} }
} }