From ed96d4393559a54e555b5c60d9fea2264165d20a Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 11 Jun 2022 21:01:09 -0500 Subject: [PATCH] Tile modifying now modifies collision grid Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 --- src/sig/RabiClone.java | 4 +- src/sig/map/CollisionType.java | 3 +- src/sig/map/Map.java | 12 ++++++ src/sig/map/Tile.java | 18 ++++----- src/sig/objects/Player.java | 74 +++------------------------------- 5 files changed, 31 insertions(+), 80 deletions(-) diff --git a/src/sig/RabiClone.java b/src/sig/RabiClone.java index 68efa3e..dec4483 100644 --- a/src/sig/RabiClone.java +++ b/src/sig/RabiClone.java @@ -12,7 +12,9 @@ import java.util.List; import sig.engine.Panel; import sig.engine.Point; import sig.engine.objects.Object; +import sig.map.Map; import sig.map.Maps; +import sig.map.Tile; import sig.objects.ConfigureControls; import sig.objects.EditorRenderer; import sig.objects.LevelRenderer; @@ -58,7 +60,7 @@ public class RabiClone { static long lastReportedTime = System.currentTimeMillis(); public static long TIME = 0; - public static boolean COLLISION[] = new boolean[BASE_WIDTH*BASE_HEIGHT]; + public static boolean COLLISION[] = new boolean[(Tile.TILE_WIDTH*Map.MAP_WIDTH)*(Tile.TILE_HEIGHT*Map.MAP_HEIGHT)]; public static void main(String[] args) { System.setProperty("sun.java2d.transaccel", "True"); diff --git a/src/sig/map/CollisionType.java b/src/sig/map/CollisionType.java index 8e2812c..293bbb4 100644 --- a/src/sig/map/CollisionType.java +++ b/src/sig/map/CollisionType.java @@ -1,7 +1,6 @@ package sig.map; public enum CollisionType { - BLOCK, - SLOPE, + SOLID, NONE } diff --git a/src/sig/map/Map.java b/src/sig/map/Map.java index 6762ba1..39031ad 100644 --- a/src/sig/map/Map.java +++ b/src/sig/map/Map.java @@ -6,6 +6,8 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import sig.RabiClone; + public class Map { //Maps contain 512x288 tiles, allowing for 16384x9216 pixels of action per map. //Since a screen normally fits 16x9 tiles, you get 32x32 (1024) screens of gameplay per world. @@ -98,6 +100,16 @@ public class Map { } public void ModifyTile(int x,int y,Tile t) { + Tile prevTile = Tile.values()[tiles[y*Map.MAP_WIDTH+x]]; + boolean prevIsCollisionTile=prevTile.getCollision()==CollisionType.SOLID; + boolean newIsCollisionTile=t.getCollision()==CollisionType.SOLID; + if (prevIsCollisionTile!=newIsCollisionTile) { + for (int yy=0;yy=0&&index