package net.alcuria.umbracraft.editor.modules; import net.alcuria.umbracraft.definitions.Definition; import net.alcuria.umbracraft.definitions.ListDefinition; import net.alcuria.umbracraft.definitions.anim.AnimationCollectionDefinition; import net.alcuria.umbracraft.definitions.anim.AnimationGroupDefinition; 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 manage references to several {@link AnimationGroupDefinition} * objects for various types of poses (Walking, Jumping, etc.) These are grouped * together so an AnimationComponent can easily handle these in the engine. * @author Andrew Keturi */ public class AnimationCollectionListModule extends ListModule<AnimationCollectionDefinition> { @Override public void addListItem() { rootDefinition.add(new AnimationCollectionDefinition()); } @Override public void create(AnimationCollectionDefinition definition, Table content) { PopulateConfig config = new PopulateConfig(); ObjectMap<String, Array<String>> suggestions = new ObjectMap<String, Array<String>>(); final FileHandle handle = Gdx.files.external("umbracraft/animationgroup.json"); if (handle.exists()) { ListDefinition<?> anims = new Json().fromJson(ListDefinition.class, handle); Array<String> suggestionsStr = new Array<String>(); for (Definition anim : anims.items().values()) { suggestionsStr.add(anim.getName()); } suggestions.put("falling", suggestionsStr); suggestions.put("idle", suggestionsStr); suggestions.put("jumping", suggestionsStr); suggestions.put("running", suggestionsStr); suggestions.put("walking", suggestionsStr); suggestions.put("inspect", 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, AnimationCollectionDefinition.class, definition, config); } @Override public String getTitle() { return "AnimationCollection"; } }