diff options
Diffstat (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java')
| -rw-r--r-- | src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java new file mode 100644 index 0000000..796c3aa --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java @@ -0,0 +1,65 @@ +package com.arslaancodes.arslaansmagichax.modules.settings; + +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +public class ModeSetting extends Setting { + + private String mode; + private List<String> modes; + private int index; + + public ModeSetting(String name, String defaultMode, String... modes) { + super(name); + this.mode = defaultMode; + this.modes = Arrays.asList(modes); + this.index = this.mode.indexOf(defaultMode); + } + + public String getMode() { + return mode; + } + + public List<String> getModes() { + return modes; + } + + public void setMode(String mode) { + this.mode = mode; + this.index = modes.indexOf(mode); + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + this.mode = modes.get(index); + } + + public void cycle() { + if (index < modes.size() - 1) { + index++; + mode = modes.get(index); + } else if (index >= modes.size() - 1) { + index = 0; + mode = modes.get(0); + } + } + + public boolean isMode(String mode) { + return Objects.equals(this.mode, mode); + } + + @Override + public String getValueAsString() { + return mode; + } + + @Override + public void setValueFromString(String value) { + setMode(value); + } +} |
