Skip to content
This repository was archived by the owner on Jan 8, 2023. It is now read-only.

Commit acd4f81

Browse files
committed
Fix dir handling
1 parent 27313c9 commit acd4f81

File tree

3 files changed

+45
-59
lines changed

3 files changed

+45
-59
lines changed

src/main/java/io/github/spair/byond/dmi/SpriteDir.java

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,42 @@
22

33
public enum SpriteDir {
44

5-
SOUTH(2, "S"),
65
NORTH(1, "N"),
6+
SOUTH(2, "S"),
77
EAST(4, "E"),
88
WEST(8, "W"),
99

10-
SOUTHEAST(6, "SE"),
11-
SOUTHWEST(10, "SW"),
1210
NORTHEAST(5, "NE"),
13-
NORTHWEST(9, "NW");
11+
NORTHWEST(9, "NW"),
12+
SOUTHEAST(6, "SE"),
13+
SOUTHWEST(10, "SW");
1414

1515
/**
1616
* <p>BYOND representation of dir as int value.
1717
* <ul>
18-
* <li>SOUTH - 2</li>
19-
* <li>NORTH - 1</li>
20-
* <li>EAST - 4</li>
21-
* <li>WEST - 8</li>
22-
* <li>SOUTHEAST - 6</li>
23-
* <li>SOUTHWEST - 10</li>
24-
* <li>NORTHEAST - 5</li>
25-
* <li>NORTHWEST - 9</li>
18+
* <li>NORTH - 1</li>
19+
* <li>SOUTH - 2</li>
20+
* <li>EAST - 4</li>
21+
* <li>WEST - 8</li>
22+
* <li>NORTHEAST - 5</li>
23+
* <li>NORTHWEST - 9</li>
24+
* <li>SOUTHEAST - 6</li>
25+
* <li>SOUTHWEST - 10</li>
2626
* </ul>
2727
*/
2828
public final int dirValue;
2929

3030
/**
3131
* <p>Shorted string representation of constant values.
3232
* <ul>
33-
* <li>SOUTH - S</li>
34-
* <li>NORTH - N</li>
35-
* <li>EAST - E</li>
36-
* <li>WEST - W</li>
37-
* <li>SOUTHEAST - SE</li>
38-
* <li>SOUTHWEST - SW</li>
39-
* <li>NORTHEAST - NE</li>
40-
* <li>NORTHWEST - NW</li>
33+
* <li>NORTH - N</li>
34+
* <li>SOUTH - S</li>
35+
* <li>EAST - E</li>
36+
* <li>WEST - W</li>
37+
* <li>SOUTHEAST - SE</li>
38+
* <li>SOUTHWEST - SW</li>
39+
* <li>NORTHEAST - NE</li>
40+
* <li>NORTHWEST - NW</li>
4141
* </ul>
4242
*/
4343
public final String shortName;
@@ -48,53 +48,48 @@ public enum SpriteDir {
4848
}
4949

5050
/**
51-
* Returns {@link SpriteDir} equivalent to BYOND dir value. If method got value different from the list below,
51+
* Returns {@link SpriteDir} equivalent to BYOND dir value. If method got value lesser then 0 or bigger then 10,
5252
* {@link IllegalArgumentException} will be thrown.
5353
* <ul>
54-
* <li>0,1,3,7 - NORTH</li>
55-
* <li>2 - SOUTH</li>
56-
* <li>4 - EAST</li>
57-
* <li>8 - WEST</li>
58-
* <li>5 - NORTHEAST</li>
59-
* <li>6 - SOUTHEAST</li>
60-
* <li>9 - NORTHWEST</li>
61-
* <li>10 - SOUTHWEST</li>
54+
* <li>1 - NORTH</li>
55+
* <li>2 - SOUTH</li>
56+
* <li>4 - EAST</li>
57+
* <li>8 - WEST</li>
58+
* <li>5 - NORTHEAST</li>
59+
* <li>6 - SOUTHEAST</li>
60+
* <li>9 - NORTHWEST</li>
61+
* <li>10 - SOUTHWEST</li>
6262
* </ul>
6363
*
6464
* @param dirValue BYOND representation of dir
6565
* @return {@link SpriteDir} equivalent of BYOND dir value
6666
*/
6767
@SuppressWarnings("checkstyle:MagicNumber")
6868
public static SpriteDir valueOfByondDir(final int dirValue) {
69+
if (dirValue < 0 || dirValue > 10) {
70+
throw new IllegalArgumentException("Illegal value of BYOND dir. Dir value: " + dirValue);
71+
}
72+
73+
// Values below sorted in order in which dirs appears in `dmi` file.
6974
switch (dirValue) {
70-
case 0: case 1: case 3: case 7:
71-
return NORTH;
7275
case 2:
7376
return SOUTH;
77+
case 1:
78+
return NORTH;
7479
case 4:
7580
return EAST;
7681
case 8:
7782
return WEST;
7883
case 5:
7984
return NORTHEAST;
80-
case 6:
81-
return SOUTHEAST;
8285
case 9:
8386
return NORTHWEST;
87+
case 6:
88+
return SOUTHEAST;
8489
case 10:
8590
return SOUTHWEST;
8691
default:
87-
throw new IllegalArgumentException("Illegal value of BYOND dir. Dir value: " + dirValue);
92+
return SOUTH;
8893
}
8994
}
90-
91-
/**
92-
* Same as {@link #valueOfByondDir(int)}, but accept value as string instead of int.
93-
*
94-
* @param dirValue BYOND representation of dir
95-
* @return {@link SpriteDir} equivalent of BYOND dir value
96-
*/
97-
public static SpriteDir valueOfByondDir(final String dirValue) {
98-
return valueOfByondDir(Integer.parseInt(dirValue));
99-
}
10095
}

src/main/java/io/github/spair/byond/dmi/slurper/SpriteDirHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
@SuppressWarnings("checkstyle:MagicNumber")
66
final class SpriteDirHelper {
77

8-
// During DMI slurping all dirs are passed in `for(i = 0; i <= n; i++)` cycle.
8+
// During DMI slurping all dirs images parsed one by one.
99
// This method determines the order in which dirs are placed in `.dmi` file.
1010
static SpriteDir dirByIndex(final int dirCount) {
1111
switch (dirCount) {

src/test/java/io/github/spair/byond/dmi/SpriteDirTest.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ public class SpriteDirTest {
88

99
@Test
1010
public void testValueOfByondDir() {
11-
assertEquals(SpriteDir.NORTH, SpriteDir.valueOfByondDir(0));
1211
assertEquals(SpriteDir.NORTH, SpriteDir.valueOfByondDir(1));
13-
assertEquals(SpriteDir.NORTH, SpriteDir.valueOfByondDir(3));
14-
assertEquals(SpriteDir.NORTH, SpriteDir.valueOfByondDir(7));
12+
13+
assertEquals(SpriteDir.SOUTH, SpriteDir.valueOfByondDir(0));
1514
assertEquals(SpriteDir.SOUTH, SpriteDir.valueOfByondDir(2));
15+
assertEquals(SpriteDir.SOUTH, SpriteDir.valueOfByondDir(3));
16+
assertEquals(SpriteDir.SOUTH, SpriteDir.valueOfByondDir(7));
17+
1618
assertEquals(SpriteDir.EAST, SpriteDir.valueOfByondDir(4));
1719
assertEquals(SpriteDir.WEST, SpriteDir.valueOfByondDir(8));
1820

@@ -27,15 +29,4 @@ public void testValueOfByondDirWithIllegalValue() {
2729
//noinspection ResultOfMethodCallIgnored
2830
SpriteDir.valueOfByondDir(-1);
2931
}
30-
31-
@Test
32-
public void testValueOfByondDirWithString() {
33-
assertEquals(SpriteDir.NORTH, SpriteDir.valueOfByondDir("1"));
34-
assertEquals(SpriteDir.SOUTHWEST, SpriteDir.valueOfByondDir("10"));
35-
}
36-
37-
@Test(expected = IllegalArgumentException.class)
38-
public void testValueOfByondDirWithIllegalString() {
39-
SpriteDir.valueOfByondDir("85");
40-
}
4132
}

0 commit comments

Comments
 (0)