package net.alcuria.umbracraft.editor.modules; import net.alcuria.umbracraft.definitions.anim.AnimationDefinition; import net.alcuria.umbracraft.definitions.anim.AnimationListDefinition; import net.alcuria.umbracraft.definitions.anim.BattleAnimationGroupDefinition; 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 battles. * @author Andrew Keturi */ public class BattleAnimationGroupListModule extends ListModule<BattleAnimationGroupDefinition> { @Override public void addListItem() { rootDefinition.add(new BattleAnimationGroupDefinition()); } @Override public void create(BattleAnimationGroupDefinition 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("idle", suggestionsStr); suggestions.put("attack", suggestionsStr); suggestions.put("hurt", suggestionsStr); suggestions.put("defend", suggestionsStr); suggestions.put("dead", suggestionsStr); suggestions.put("towards", suggestionsStr); suggestions.put("away", suggestionsStr); } config.cols = 1; config.textFieldWidth = 200; config.suggestions = suggestions; populate(content, BattleAnimationGroupDefinition.class, definition, config); } @Override public String getTitle() { return "BattleAnimationGroup"; } }