package mage.choices; import mage.util.Copyable; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; /** * @author BetaSteward_at_googlemail.com, JayDi85 */ public interface Choice extends Serializable, Copyable { String getMessage(); void setMessage(String message); String getSubMessage(); void setSubMessage(String subMessage); void clearChoice(); boolean isChosen(); boolean isChosenSpecial(); boolean isRequired(); // special mode for all choices void setSpecial(boolean enabled, boolean canBeEmpty, String text, String hint); boolean isSpecialEnabled(); boolean isSpecialCanBeEmpty(); String getSpecialText(); String getSpecialHint(); ChoiceHintType getHintType(); boolean isManaColorChoice(); Choice setManaColorChoice(boolean manaColorChoice); // string choice void setChoices(Set choices); Set getChoices(); void setChoice(String choice, boolean isSpecial); String getChoice(); default void setChoice(String choice) { setChoice(choice, false); } // key-value choice boolean isKeyChoice(); void setKeyChoices(Map choices); Map getKeyChoices(); void setChoiceByKey(String choiceKey, boolean isSpecial); String getChoiceKey(); String getChoiceValue(); default void setChoiceByKey(String choiceKey) { setChoiceByKey(choiceKey, false); } // search boolean isSearchEnabled(); void setSearchEnabled(boolean isEnabled); void setSearchText(String searchText); String getSearchText(); // sorting boolean isSortEnabled(); void setSortData(Map sortData); Map getSortData(); // random choice (for AI usage) void setRandomChoice(); boolean setChoiceByAnswers(List answers, boolean removeSelectAnswerFromList); }