package org.flixel.system.gdx.loaders;
import java.util.HashMap;
import java.util.Map;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader;
import com.badlogic.gdx.assets.loaders.BitmapFontLoader;
import com.badlogic.gdx.assets.loaders.BitmapFontLoader.BitmapFontParameter;
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.utils.Array;
/**
* <code>AssetLoader</code> to create a <code>BitmapFont</code> from a ttf file.
* Passing a <code>BitmapFontParameter</code> to
* <code>AssetManager::load(String, Class, AssetLoaderParameters)</code> allows
* to specify whether the font should be flipped on the y-axis or not.
*
* @author Thomas Weston
*/
public class FontLoader extends AsynchronousAssetLoader<BitmapFont, BitmapFontParameter>
{
private Map<String, AsynchronousAssetLoader<BitmapFont, BitmapFontParameter>> _loaders;
public FontLoader(FileHandleResolver resolver)
{
super(resolver);
_loaders = new HashMap<String, AsynchronousAssetLoader<BitmapFont, BitmapFontParameter>>();
_loaders.put("ttf", new FreeTypeFontLoader(resolver));
_loaders.put("fnt", new BitmapFontLoader(resolver));
}
@Override
public BitmapFont loadSync(AssetManager manager, String fileName, FileHandle file, BitmapFontParameter parameter)
{
return getLoader(file).loadSync(manager, fileName, file, parameter);
}
@Override
public void loadAsync(AssetManager manager, String fileName, FileHandle file, BitmapFontParameter parameter)
{
getLoader(file).loadAsync(manager, fileName, file, parameter);
}
@SuppressWarnings("rawtypes")
@Override
public Array<AssetDescriptor> getDependencies(String fileName, FileHandle file, BitmapFontParameter parameter)
{
return getLoader(file).getDependencies(fileName, file, parameter);
}
private AsynchronousAssetLoader<BitmapFont, BitmapFontParameter> getLoader(FileHandle file)
{
AsynchronousAssetLoader<BitmapFont, BitmapFontParameter> loader = _loaders.get(file.extension().toLowerCase());
if(loader == null)
throw new RuntimeException("Unknown font type: " + file);
return loader;
}
}