package net.fourbytes.shadow.mod;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap;
import net.fourbytes.shadow.Layer;
import net.fourbytes.shadow.Level;
import net.fourbytes.shadow.ParticleType;
import net.fourbytes.shadow.blocks.BlockType;
import net.fourbytes.shadow.network.Data;
import net.fourbytes.shadow.systems.ISystem;
import net.fourbytes.shadow.utils.backend.ModLoader;
/**
* ModManager just holds all mods loaded in the current
* Shadow Engine application and provides methods to
* both access them and to also load built-in, later
* on added mods. Mods are loaded by the backend
* dependant ModLoader found in the loader field.
*/
public final class ModManager {
private ModManager() {}
public static Array<IMod> mods = new Array<IMod>(IMod.class);
public static Array<ModFile> filesLoaded = new Array<ModFile>(ModFile.class);
public static Array<ModFile> filesIgnored = new Array<ModFile>(ModFile.class);
public static Array<ModFile> filesFailed = new Array<ModFile>(ModFile.class);
public static ObjectMap<IMod, ModFile> mapModFile = new ObjectMap<IMod, ModFile>();
public static ModLoader loader;
public static ObjectMap<String, IModAPI> apis = new ObjectMap<String, IModAPI>();
public static IModAPIStandard apiDefault = new ModAPIDefault();
public static void preTick(float delta) {
apiDefault.preTick(delta);
}
public static void postTick(float delta) {
apiDefault.postTick(delta);
}
public static void preRender(float delta) {
apiDefault.preRender(delta);
}
public static void postRender(float delta) {
apiDefault.postRender(delta);
}
public static BlockType getTypeBlock(String subtype, float x, float y, Layer layer) {
return apiDefault.getTypeBlock(subtype, x, y, layer);
}
public static boolean generateTile(Level genLevel, int xx, int x, int y, int ln) {
return apiDefault.generateTile(genLevel, xx, x, y, ln);
}
public static void create() {
apiDefault.create();
}
public static void dispose() {
apiDefault.dispose();
}
public static void initLevelSystems(Level level) {
apiDefault.initLevelSystems(level);
}
public static ISystem initLevelSystem(Level level, String name) {
return apiDefault.initLevelSystem(level, name);
}
public static ParticleType getParticleType(String typeName) {
return apiDefault.getParticleType(typeName);
}
public static boolean handleClient(Data data, Object target) {
return apiDefault.handleClient(data, target);
}
public static boolean handleServer(Data data, Object target) {
return apiDefault.handleServer(data, target);
}
}