package uk.me.parabola.imgfmt.app.net;
/**
* The number style down one side of a side of a road.
*
* @author Steve Ratcliffe
*/
public enum NumberStyle {
NONE(0), // No numbers.
EVEN(1) {
public int round(int val, int direction) {
if ((val & 1) == 1) return val + direction;
return val;
}
}, // Numbers are even on this side of the road.
ODD(2) {
@Override
public int round(int val, int direction) {
if ((val & 1) == 0) return val + direction;
return val;
}
}, // Numbers are odd on this side of the road
BOTH(3), // Both odd and even numbers (can also be used for a range of a single number)
;
private final int val;
NumberStyle(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public int round(int val, int direction) {
return val;
}
public static NumberStyle fromInt(int n) {
switch (n) {
case 0: return NONE;
case 1: return EVEN;
case 2: return ODD;
case 3: return BOTH;
default: return NONE;
}
}
public String toString() {
return super.toString().substring(0, 1);
}
public static NumberStyle fromChar(String string) {
switch (string.charAt(0)) {
case 'N': return NONE;
case 'E': return EVEN;
case 'O': return ODD;
case 'B': return BOTH;
case '0':
System.err.println("zero instead of capital O in number spec");
return ODD;
default: return NONE;
}
}
}