diff --git a/tests/test_world.py b/tests/test_world.py index 1e6adb5..744b850 100644 --- a/tests/test_world.py +++ b/tests/test_world.py @@ -83,5 +83,9 @@ def test_tick_all_calls_tick(world): def test_add_object_out_of_bounds(world): entity = DummyEntity(Position(x=1000, y=1000)) - with pytest.raises(ValueError): - world.add_object(entity) + + world.add_object(entity) + + entity = world.get_objects()[0] + + assert entity.position.x == 49 and entity.position.y == 49 diff --git a/world/render_objects.py b/world/render_objects.py index 9f47d41..897fa79 100644 --- a/world/render_objects.py +++ b/world/render_objects.py @@ -151,4 +151,4 @@ class FoodObject(BaseEntity): :return: String representation. """ - return f"FoodObject({self.position}, decay={self.decay:.0f}, decay_rate={self.decay_rate * (1 + (self.neighbors / 10))})" + return f"FoodObject({self.position}, decay={self.decay:.0f }, decay_rate={self.decay_rate * (1 + (self.neighbors / 10))})" diff --git a/world/world.py b/world/world.py index 63ef11a..dd3c38e 100644 --- a/world/world.py +++ b/world/world.py @@ -111,7 +111,9 @@ class World: # Ensure position is within world bounds, considering a center origin if position.x < -self.world_size[0] / 2 or position.x >= self.world_size[0] / 2 or position.y < - \ self.world_size[1] / 2 or position.y >= self.world_size[1] / 2: - raise ValueError(f"Position is out of world bounds. {position} is out of bounds.") + # force position to be within bounds + position.x = max(-self.world_size[0] / 2, min(position.x, self.world_size[0] / 2 - 1)) + position.y = max(-self.world_size[1] / 2, min(position.y, self.world_size[1] / 2 - 1)) return int(position.x // self.partition_size), int(position.y // self.partition_size)