package com.github.donkirkby.vograbulary.ultraghost;
import java.util.EnumSet;
import java.util.Set;
public enum WordResult {
//stopJesting
UNKNOWN,
NOT_A_WORD,
TOO_SHORT,
TOO_SOON,
SKIPPING,
VALID,
NOT_A_MATCH,
SHORTER(1),
EARLIER(2),
LONGER(3),
LATER(3),
NOT_IMPROVED(3),
SKIP_NOT_IMPROVED(1, "skipped"),
WORD_FOUND(-1), // Failed skip
IMPROVEMENT_NOT_A_WORD(3, "not a word"),
IMPROVEMENT_NOT_A_MATCH(3, "not a match"),
IMPROVEMENT_TOO_SHORT(3, "too short"),
IMPROVEMENT_TOO_SOON(3, "too soon"),
IMPROVED_SKIP_NOT_A_WORD(1, "not a word"),
IMPROVED_SKIP_NOT_A_MATCH(1, "not a match"),
IMPROVED_SKIP_TOO_SHORT(1, "too short"),
IMPROVED_SKIP_TOO_SOON(1, "too soon");
//resumeJesting
private int score;
private String name;
private static Set<WordResult> notSolved = EnumSet.of(
UNKNOWN,
NOT_A_MATCH,
NOT_A_WORD,
TOO_SHORT,
TOO_SOON);
private static Set<WordResult> improved = EnumSet.of(
SHORTER,
EARLIER,
WORD_FOUND);
private static Set<WordResult> completed = EnumSet.copyOf(improved);
static {
completed.add(SKIP_NOT_IMPROVED);
completed.add(NOT_IMPROVED);
}
private WordResult() {
this(0);
}
private WordResult(int score) {
this(score, null);
this.name = name().toLowerCase().replace('_', ' ');
}
private WordResult(int score, String name) {
this.score = score;
this.name = name;
}
@Override
public String toString() {
return name;
}
public int getScore() {
return score;
}
public boolean isValidSolution() {
return ! notSolved.contains(this);
}
public boolean isImproved() {
return improved.contains(this);
}
public boolean isCompleted() {
return completed.contains(this);
}
}