summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/modules/settings/ModeSetting.java
diff options
context:
space:
mode:
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.java65
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);
+ }
+}