74 lines
1.7 KiB
Java
74 lines
1.7 KiB
Java
package dev.kske.chess.uci;
|
|
|
|
import java.util.*;
|
|
|
|
/**
|
|
* Project: <strong>Chess</strong><br>
|
|
* File: <strong>UCIOption.java</strong><br>
|
|
* Created: <strong>22.07.2019</strong><br>
|
|
*
|
|
* @since Chess v0.3-alpha
|
|
* @author Kai S. K. Engelbart
|
|
*/
|
|
public class UCIOption {
|
|
|
|
private String name, defaultVal, minVal, maxVal;
|
|
private GUIType type;
|
|
private List<String> varList;
|
|
|
|
public UCIOption(String line) {
|
|
varList = new ArrayList<>();
|
|
String[] tokens = line.split(" ");
|
|
|
|
for (int i = 0; i < tokens.length; i++)
|
|
switch (tokens[i]) {
|
|
case "name":
|
|
StringJoiner nameJoiner = new StringJoiner(" ");
|
|
while (
|
|
!Arrays.asList("type", "default", "min", "max", "var")
|
|
.contains(tokens[i + 1])
|
|
)
|
|
nameJoiner.add(tokens[++i]);
|
|
name = nameJoiner.toString();
|
|
break;
|
|
case "type":
|
|
type = GUIType.valueOf(tokens[++i].toUpperCase());
|
|
break;
|
|
case "default":
|
|
// Default string may be empty
|
|
defaultVal = i == tokens.length - 1 ? "" : tokens[++i];
|
|
break;
|
|
case "min":
|
|
minVal = tokens[++i];
|
|
break;
|
|
case "max":
|
|
maxVal = tokens[++i];
|
|
break;
|
|
case "var":
|
|
varList.add(tokens[++i]);
|
|
break;
|
|
default:
|
|
System.err.printf(
|
|
"Unknown parameter '%s' for command 'option' found!%n",
|
|
tokens[i]
|
|
);
|
|
}
|
|
}
|
|
|
|
public String getName() { return name; }
|
|
|
|
public String getDefaultVal() { return defaultVal; }
|
|
|
|
public String getMinVal() { return minVal; }
|
|
|
|
public String getMaxVal() { return maxVal; }
|
|
|
|
public GUIType getType() { return type; }
|
|
|
|
public List<String> getVarList() { return varList; }
|
|
|
|
public enum GUIType {
|
|
CHECK, SPIN, COMBO, BUTTON, STRING
|
|
}
|
|
}
|