package net.alcuria.umbracraft.editor.modules;
import net.alcuria.umbracraft.definitions.anim.AnimationDefinition;
import net.alcuria.umbracraft.definitions.anim.AnimationGroupDefinition;
import net.alcuria.umbracraft.definitions.anim.AnimationListDefinition;
import net.alcuria.umbracraft.editor.Editor;
import net.alcuria.umbracraft.util.FileUtils;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.ObjectMap;
/** A module to handle groups of animations for the eight directions.
* @author Andrew Keturi */
public class AnimationGroupListModule extends ListModule<AnimationGroupDefinition> {
@Override
public void addListItem() {
rootDefinition.add(new AnimationGroupDefinition());
}
@Override
public void create(AnimationGroupDefinition definition, Table content) {
PopulateConfig config = new PopulateConfig();
ObjectMap<String, Array<String>> suggestions = new ObjectMap<String, Array<String>>();
final FileHandle handle = Gdx.files.external("umbracraft/animations.json");
if (handle.exists()) {
ObjectMap<String, AnimationDefinition> anims = new Json().fromJson(AnimationListDefinition.class, handle).animations;
Array<String> suggestionsStr = new Array<String>();
for (AnimationDefinition anim : anims.values()) {
suggestionsStr.add(anim.name);
}
suggestions.put("down", suggestionsStr);
suggestions.put("up", suggestionsStr);
suggestions.put("right", suggestionsStr);
suggestions.put("left", suggestionsStr);
suggestions.put("downLeft", suggestionsStr);
suggestions.put("downRight", suggestionsStr);
suggestions.put("upLeft", suggestionsStr);
suggestions.put("upRight", suggestionsStr);
suggestions.put("template", FileUtils.getFilesAt(Editor.db().config().projectPath + Editor.db().config().spritePath));
}
config.cols = 1;
config.textFieldWidth = 200;
config.suggestions = suggestions;
populate(content, AnimationGroupDefinition.class, definition, config);
}
@Override
public String getTitle() {
return "AnimationGroup";
}
}