package de.tobiyas.racesandclasses.standalonegui.data.option; import org.bukkit.Material; import org.bukkit.block.Biome; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigBiomeOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigBooleanOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigDoubleOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigIntOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigMaterialOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigOperatorOption; import de.tobiyas.racesandclasses.standalonegui.data.option.specific.TraitConfigStringOption; import de.tobiyas.racesandclasses.traitcontainer.interfaces.annotations.configuration.TraitConfigurationField; import de.tobiyas.racesandclasses.traitcontainer.traits.passive.Operator; public class ConfigOptionFactory { /** * Generates a TraitConfigOption from the passed TraitConfigurationField. * * @param field to parse. * * @return the parsed Field. */ public static TraitConfigOption generate(TraitConfigurationField field){ if(field == null) return null; boolean optional = field.optional(); String name = field.fieldName(); Class<?> clazz = field.classToExpect(); if(clazz == Integer.class) return new TraitConfigIntOption(name, optional); if(clazz == Double.class) return new TraitConfigDoubleOption(name, optional); if(clazz == String.class) return new TraitConfigStringOption(name, optional); if(clazz == Boolean.class) return new TraitConfigBooleanOption(name, optional); if(clazz == Biome.class) return new TraitConfigBiomeOption(name, optional); if(clazz == Material.class) return new TraitConfigMaterialOption(name, optional); if(clazz == Operator.class) return new TraitConfigOperatorOption(name, optional); System.out.println("Could not serialize class: " + clazz.getCanonicalName()); return null; } /** * Generates a TraitConfigOption from the passed TraitConfigurationField. * * @param field to parse. * * @return the parsed Field. */ public static TraitConfigOption generateOverride(TraitConfigurationField field, boolean overrideOptional){ if(field == null) return null; String name = field.fieldName(); Class<?> clazz = field.classToExpect(); if(clazz == Integer.class) return new TraitConfigIntOption(name, overrideOptional); if(clazz == Double.class) return new TraitConfigDoubleOption(name, overrideOptional); if(clazz == String.class) return new TraitConfigStringOption(name, overrideOptional); if(clazz == Boolean.class) return new TraitConfigBooleanOption(name, overrideOptional); if(clazz == Biome.class) return new TraitConfigBiomeOption(name, overrideOptional); if(clazz == Material.class) return new TraitConfigMaterialOption(name, overrideOptional); return null; } /** * Generates a Default Boolean value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, boolean defaultValue){ return new TraitConfigBooleanOption(field.fieldName(), field.optional(), defaultValue); } /** * Generates a Default Int value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, int defaultValue){ return new TraitConfigIntOption(field.fieldName(), field.optional(), defaultValue); } /** * Generates a Default Double value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, double defaultValue){ return new TraitConfigDoubleOption(field.fieldName(), field.optional(), defaultValue); } /** * Generates a Default String value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, String defaultValue){ return new TraitConfigStringOption(field.fieldName(), field.optional(), defaultValue); } /** * Generates a Default Material value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, Material defaultValue){ return new TraitConfigMaterialOption(field.fieldName(), field.optional(), defaultValue); } /** * Generates a Default Biome value. * * @param field to generate from * @param defaultValue to set. * * @return the generated Field. */ public static TraitConfigOption generate(TraitConfigurationField field, Biome defaultValue){ return new TraitConfigBiomeOption(field.fieldName(), field.optional(), defaultValue); } }