Rev 4493 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package uk.me.parabola.imgfmt.app.net;
import uk.me.parabola.log.Logger;
/**
* The number style down one side of a side of a road.
*
* @author Steve Ratcliffe
*/
public enum NumberStyle
{
NONE
(0),
// No numbers.
EVEN
(1) {
@
Override
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
;
}
}
@
Override
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':
Logger.
defaultLogger.
error("zero instead of capital O in number spec");
return ODD
;
default:
return NONE
;
}
}
}