Skip to content

Commit 34e7489

Browse files
committed
2 parents 9954775 + 3c33fb8 commit 34e7489

File tree

8 files changed

+43
-39
lines changed

8 files changed

+43
-39
lines changed

draftsman/environment/script.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,10 @@ def main():
182182

183183
args: DraftsmanCommandArgs = parser.parse_args(namespace=DraftsmanCommandArgs())
184184

185-
if args.operation == "version":
185+
if not args.operation:
186+
parser.print_help()
187+
elif args.operation == "version":
186188
print("Draftsman {}".format(__version__))
187-
188189
elif args.operation == "factorio-version":
189190
if args.desired_version is None:
190191
# Grab and populate the repo, making sure its a git repo we expect

draftsman/prototypes/legacy_curved_rail.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424
_collision_set_rotation = {}
2525
_collision_set_rotation[Direction.NORTH] = _left_turn
2626
_collision_set_rotation[Direction.NORTHEAST] = _right_turn
27-
_collision_set_rotation[Direction.EAST] = _left_turn.rotate(2)
28-
_collision_set_rotation[Direction.SOUTHEAST] = _right_turn.rotate(2)
29-
_collision_set_rotation[Direction.SOUTH] = _left_turn.rotate(4)
30-
_collision_set_rotation[Direction.SOUTHWEST] = _right_turn.rotate(4)
31-
_collision_set_rotation[Direction.WEST] = _left_turn.rotate(6)
32-
_collision_set_rotation[Direction.NORTHWEST] = _right_turn.rotate(6)
27+
_collision_set_rotation[Direction.EAST] = _left_turn.rotate(4)
28+
_collision_set_rotation[Direction.SOUTHEAST] = _right_turn.rotate(4)
29+
_collision_set_rotation[Direction.SOUTH] = _left_turn.rotate(8)
30+
_collision_set_rotation[Direction.SOUTHWEST] = _right_turn.rotate(8)
31+
_collision_set_rotation[Direction.WEST] = _left_turn.rotate(12)
32+
_collision_set_rotation[Direction.NORTHWEST] = _right_turn.rotate(12)
3333

3434
_left_turn = CollisionSet(
3535
[AABB(0.25, 1.8, 1.75, 3.9), Rectangle((-0.375, -0.7175), 1.4, 5.45, -35)]
@@ -40,12 +40,12 @@
4040
_collision_set_rotation = {}
4141
_collision_set_rotation[Direction.NORTH] = _left_turn
4242
_collision_set_rotation[Direction.NORTHEAST] = _right_turn
43-
_collision_set_rotation[Direction.EAST] = _left_turn.rotate(2)
44-
_collision_set_rotation[Direction.SOUTHEAST] = _right_turn.rotate(2)
45-
_collision_set_rotation[Direction.SOUTH] = _left_turn.rotate(4)
46-
_collision_set_rotation[Direction.SOUTHWEST] = _right_turn.rotate(4)
47-
_collision_set_rotation[Direction.WEST] = _left_turn.rotate(6)
48-
_collision_set_rotation[Direction.NORTHWEST] = _right_turn.rotate(6)
43+
_collision_set_rotation[Direction.EAST] = _left_turn.rotate(4)
44+
_collision_set_rotation[Direction.SOUTHEAST] = _right_turn.rotate(4)
45+
_collision_set_rotation[Direction.SOUTH] = _left_turn.rotate(8)
46+
_collision_set_rotation[Direction.SOUTHWEST] = _right_turn.rotate(8)
47+
_collision_set_rotation[Direction.WEST] = _left_turn.rotate(12)
48+
_collision_set_rotation[Direction.NORTHWEST] = _right_turn.rotate(12)
4949

5050

5151
class LegacyCurvedRail(DoubleGridAlignedMixin, EightWayDirectionalMixin, Entity):

draftsman/prototypes/legacy_straight_rail.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,29 @@
1515
# TODO: currently hardcoded just for straight rail
1616
eps = 0.001
1717
_vertical_collision = CollisionSet([AABB(-0.75, -1.0 + eps, 0.75, 1.0 - eps)])
18-
_horizontal_collision = _vertical_collision.rotate(2)
18+
_horizontal_collision = _vertical_collision.rotate(4)
1919
_diagonal_collision = CollisionSet([Rectangle((-0.5, -0.5), 1.25, 1.40, 45)])
2020
_collision_set_rotation = {}
2121
_collision_set_rotation[Direction.NORTH] = _vertical_collision
22-
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(2)
22+
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(4)
2323
_collision_set_rotation[Direction.EAST] = _horizontal_collision
24-
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(4)
24+
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(8)
2525
_collision_set_rotation[Direction.SOUTH] = _vertical_collision
26-
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-2)
26+
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-4)
2727
_collision_set_rotation[Direction.WEST] = _horizontal_collision
2828
_collision_set_rotation[Direction.NORTHWEST] = _diagonal_collision
2929

3030
eps = 0.001
3131
_vertical_collision = CollisionSet([AABB(-0.75, -1.0 + eps, 0.75, 1.0 - eps)])
32-
_horizontal_collision = _vertical_collision.rotate(2)
32+
_horizontal_collision = _vertical_collision.rotate(4)
3333
_diagonal_collision = CollisionSet([Rectangle((-0.5, -0.5), 1.25, 1.40, 45)])
3434
_collision_set_rotation = {}
3535
_collision_set_rotation[Direction.NORTH] = _vertical_collision
36-
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(2)
36+
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(4)
3737
_collision_set_rotation[Direction.EAST] = _horizontal_collision
38-
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(4)
38+
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(8)
3939
_collision_set_rotation[Direction.SOUTH] = _vertical_collision
40-
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-2)
40+
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-4)
4141
_collision_set_rotation[Direction.WEST] = _horizontal_collision
4242
_collision_set_rotation[Direction.NORTHWEST] = _diagonal_collision
4343

draftsman/prototypes/straight_rail.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,29 @@
1515
# TODO: currently hardcoded just for straight rail
1616
eps = 0.001
1717
_vertical_collision = CollisionSet([AABB(-0.75, -1.0 + eps, 0.75, 1.0 - eps)])
18-
_horizontal_collision = _vertical_collision.rotate(2)
18+
_horizontal_collision = _vertical_collision.rotate(4)
1919
_diagonal_collision = CollisionSet([Rectangle((-0.5, -0.5), 1.25, 1.40, 45)])
2020
_collision_set_rotation = {}
2121
_collision_set_rotation[Direction.NORTH] = _vertical_collision
22-
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(2)
22+
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(4)
2323
_collision_set_rotation[Direction.EAST] = _horizontal_collision
24-
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(4)
24+
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(8)
2525
_collision_set_rotation[Direction.SOUTH] = _vertical_collision
26-
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-2)
26+
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-4)
2727
_collision_set_rotation[Direction.WEST] = _horizontal_collision
2828
_collision_set_rotation[Direction.NORTHWEST] = _diagonal_collision
2929

3030
eps = 0.001
3131
_vertical_collision = CollisionSet([AABB(-0.75, -1.0 + eps, 0.75, 1.0 - eps)])
32-
_horizontal_collision = _vertical_collision.rotate(2)
32+
_horizontal_collision = _vertical_collision.rotate(4)
3333
_diagonal_collision = CollisionSet([Rectangle((-0.5, -0.5), 1.25, 1.40, 45)])
3434
_collision_set_rotation = {}
3535
_collision_set_rotation[Direction.NORTH] = _vertical_collision
36-
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(2)
36+
_collision_set_rotation[Direction.NORTHEAST] = _diagonal_collision.rotate(4)
3737
_collision_set_rotation[Direction.EAST] = _horizontal_collision
38-
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(4)
38+
_collision_set_rotation[Direction.SOUTHEAST] = _diagonal_collision.rotate(8)
3939
_collision_set_rotation[Direction.SOUTH] = _vertical_collision
40-
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-2)
40+
_collision_set_rotation[Direction.SOUTHWEST] = _diagonal_collision.rotate(-4)
4141
_collision_set_rotation[Direction.WEST] = _horizontal_collision
4242
_collision_set_rotation[Direction.NORTHWEST] = _diagonal_collision
4343

draftsman/utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,14 @@ def rotate(self, amt: int) -> "AABB":
199199
:param amt: The amount to rotate, expressed as an increments of 45
200200
degrees.
201201
"""
202-
if amt % 2 != 0:
203-
raise ValueError("Cannot rotate an AABB by 45 degree increments")
202+
if amt % 4 != 0:
203+
raise ValueError("Cannot rotate an AABB by anything other than 90 degree increments")
204204

205205
# TODO: do this routine with a lookup table instead of float math and
206206
# min/max
207207

208-
rot_top_left = rotate_point(self.top_left, math.radians(amt * 45))
209-
rot_bot_right = rotate_point(self.bot_right, math.radians(amt * 45))
208+
rot_top_left = rotate_point(self.top_left, math.radians(amt * 22.5))
209+
rot_bot_right = rotate_point(self.bot_right, math.radians(amt * 22.5))
210210

211211
# top_left = Vector(
212212
# min(rot_top_left.x, rot_bot_right.x), min(rot_top_left.y, rot_bot_right.y)
@@ -350,10 +350,10 @@ def rotate(self, amt: int) -> "Rectangle":
350350
degrees.
351351
"""
352352
return Rectangle(
353-
rotate_point(self.position, math.radians(amt * 45)),
353+
rotate_point(self.position, math.radians(amt * 22.5)),
354354
self.width,
355355
self.height,
356-
self.angle + amt * 45,
356+
self.angle + amt * 22.5,
357357
)
358358

359359
def __eq__(self, other: "Rectangle") -> bool:

test/test_entity.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,12 @@ def test_set_tags(self):
5151
with pytest.raises(DataFormatError):
5252
container.tags = "incorrect"
5353

54+
# @pytest.mark.xfail(reason="issue 134 https://github.com/redruin1/factorio-draftsman/issues/134")
5455
def test_get_world_bounding_box(self):
5556
combinator = DeciderCombinator(tile_position=[3, 3], direction=Direction.EAST)
56-
assert combinator.get_world_bounding_box() == AABB(3.65, 2.85, 4.35, 4.15)
57+
assert combinator.get_world_bounding_box() == AABB(3.35, 3.15, 4.65, 3.85)
58+
recycler = new_entity('recycler',tile_position=[3, 3], direction=Direction.EAST)
59+
assert recycler.get_world_bounding_box() == AABB(3,3, 3.3, 6.7, 4.7)
5760

5861
def test_set_name(self):
5962
iron_chest = Container("iron-chest")

test/test_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def test_get_bounding_box(self):
9090

9191
def test_rotate(self):
9292
aabb = utils.AABB(0, 0, 1, 1)
93-
rotated_aabb = aabb.rotate(2)
93+
rotated_aabb = aabb.rotate(4)
9494
assert round(abs(rotated_aabb.top_left[0] - -1), 7) == 0
9595
assert round(abs(rotated_aabb.top_left[1] - 0), 7) == 0
9696
assert round(abs(rotated_aabb.bot_right[0] - 0), 7) == 0

0 commit comments

Comments
 (0)