From ec27a9bc100401267a71007c80b8e9871c41be20 Mon Sep 17 00:00:00 2001 From: Harrison Date: Mon, 27 Apr 2020 13:44:49 -0500 Subject: [PATCH] Fixed perfect chunk coordinates in utilities. Added respective tests to ensure this doesn't break. --- .../islandsurvivalcraft/Utilities.java | 6 ++++-- .../islandsurvivalcraft/UtilitiesTest.java | 20 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/Utilities.java b/src/main/java/ca/recrown/islandsurvivalcraft/Utilities.java index 2cad129..a9a9305 100644 --- a/src/main/java/ca/recrown/islandsurvivalcraft/Utilities.java +++ b/src/main/java/ca/recrown/islandsurvivalcraft/Utilities.java @@ -53,13 +53,15 @@ public class Utilities { public static Point2 worldToLocalChunkCoordinates(int x, int y) { int xRes = 0; if (x < 0) { - xRes = CHUNK_SIZE + (x % CHUNK_SIZE); + xRes = CHUNK_SIZE - 1 + (x % CHUNK_SIZE); + xRes %= CHUNK_SIZE - 1; } else { xRes = x % CHUNK_SIZE; } int yRes = 0; if (y < 0) { - yRes = CHUNK_SIZE + (y % CHUNK_SIZE); + yRes = CHUNK_SIZE - 1 + (y % CHUNK_SIZE); + yRes %= CHUNK_SIZE - 1; } else { yRes = y % CHUNK_SIZE; } diff --git a/src/test/java/ca/recrown/islandsurvivalcraft/UtilitiesTest.java b/src/test/java/ca/recrown/islandsurvivalcraft/UtilitiesTest.java index 8911167..46b7010 100644 --- a/src/test/java/ca/recrown/islandsurvivalcraft/UtilitiesTest.java +++ b/src/test/java/ca/recrown/islandsurvivalcraft/UtilitiesTest.java @@ -73,13 +73,25 @@ public class UtilitiesTest { @Test public void testWorldToLocalCoordinatesNegative() { - assertEquals(new Point2(2, 5), Utilities.worldToLocalChunkCoordinates(-62, -27)); - assertEquals(new Point2(2, 5), Utilities.worldToLocalChunkCoordinates(new Point2(-62, -27))); + assertEquals(new Point2(1, 4), Utilities.worldToLocalChunkCoordinates(-62, -27)); + assertEquals(new Point2(1, 4), Utilities.worldToLocalChunkCoordinates(new Point2(-62, -27))); + } + + @Test + public void testWorldToLocalCoordinatesNegativePerfect() { + assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(-128, -32)); + assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(new Point2(-256, -16))); } @Test public void testWorldToLocalCoordinatesPositive() { - assertEquals(new Point2(7, 3), Utilities.worldToLocalChunkCoordinates(39, 83)); - assertEquals(new Point2(7, 3), Utilities.worldToLocalChunkCoordinates(new Point2(39, 83))); + assertEquals(new Point2(6, 2), Utilities.worldToLocalChunkCoordinates(39, 83)); + assertEquals(new Point2(6, 2), Utilities.worldToLocalChunkCoordinates(new Point2(39, 83))); + } + + @Test + public void testWorldToLocalCoordinatesPositivePerfect() { + assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(1024, 32)); + assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(new Point2(16, 80))); } }