From 95a923fad314559f57ce7864a90e4ed85e0cb6b3 Mon Sep 17 00:00:00 2001 From: Nic0Nic0Nii Date: Tue, 24 May 2022 20:17:56 +0000 Subject: [PATCH] Incorporate tile drawing and partial sprite drawing functions Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 --- bin/RabiClone.jar | Bin 18206 -> 19408 bytes src/sig/DrawLoop.java | 22 +++++++++----- src/sig/RabiClone.java | 15 ++------- src/sig/engine/Object.java | 10 ++++++ src/sig/engine/Sprite.java | 1 + src/sig/engine/SpriteImage.java | 0 src/sig/map/Maps.java | 9 ++++++ src/sig/map/Tile.java | 2 +- src/sig/objects/LevelRenderer.java | 47 +++++++++++++++++++++++++++++ src/sig/objects/Player.java | 13 +------- 10 files changed, 86 insertions(+), 33 deletions(-) delete mode 100644 src/sig/engine/SpriteImage.java create mode 100644 src/sig/objects/LevelRenderer.java diff --git a/bin/RabiClone.jar b/bin/RabiClone.jar index 8224fbfcc1ec2b4896c890b033739a046654bf3b..6434a5696083616dff6b24413ef75c779c10da3f 100644 GIT binary patch delta 10100 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 QF}}T2-+mBFi9bjG2UquSNB{r; delta 8994 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 UdwOusrbYmV@~lDxnLkhe2U=`4b^rhX diff --git a/src/sig/DrawLoop.java b/src/sig/DrawLoop.java index 6b3dded..d28715c 100644 --- a/src/sig/DrawLoop.java +++ b/src/sig/DrawLoop.java @@ -11,7 +11,7 @@ public class DrawLoop { for (int y=0;y=p.length||p[index]==sprite.getBi_array()[Y*sprite.getWidth()+X]) { + for(int X=(int)xOffset;X<(int)(w+xOffset);X++){ + for(int Y=(int)yOffset;Y<(int)(h+yOffset);Y++){ + if (X+x-xOffset<0||Y+y-yOffset<0||X-xOffset+x>=RabiClone.BASE_WIDTH||Y-yOffset+y>=RabiClone.BASE_HEIGHT) { continue; } else { - Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],true); - //Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],false); + int index = (Y-(int)yOffset+(int)y)*RabiClone.BASE_WIDTH+X-(int)xOffset+(int)x; + if (index<0||index>=p.length||p[index]==sprite.getBi_array()[Y*sprite.getWidth()+X]) { + continue; + } else { + Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],true); + //Draw(p,index,sprite.getBi_array()[Y*sprite.getWidth()+X],false); + } } } } diff --git a/src/sig/RabiClone.java b/src/sig/RabiClone.java index 44ec568..7432bb0 100644 --- a/src/sig/RabiClone.java +++ b/src/sig/RabiClone.java @@ -6,9 +6,8 @@ import java.util.ArrayList; import java.util.List; import sig.engine.Panel; -import sig.map.Map; import sig.map.Maps; -import sig.map.Tile; +import sig.objects.LevelRenderer; import sig.objects.Player; import sig.engine.Object; import java.awt.Toolkit; @@ -44,19 +43,9 @@ public class RabiClone{ f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); + OBJ.add(new LevelRenderer(p)); OBJ.add(new Player(p)); - for (int i=0;i<12;i++) { - CURRENT_MAP.ModifyTile(0, i, Tile.WALL); - } - for (int i=0;i<36;i++) { - CURRENT_MAP.ModifyTile(i, 11, Tile.FLOOR); - } - for (int i=0;i<10;i++) { - CURRENT_MAP.ModifyTile(i+5, 8, Tile.PLATFORM_LEDGE); - } - Map.SaveMap(CURRENT_MAP); - p.render(); long lastGameTime = System.nanoTime(); diff --git a/src/sig/engine/Object.java b/src/sig/engine/Object.java index f0b3ef4..1a46f6b 100644 --- a/src/sig/engine/Object.java +++ b/src/sig/engine/Object.java @@ -1,5 +1,7 @@ package sig.engine; +import sig.DrawLoop; + public abstract class Object implements GameEntity{ double x,y; Sprite spr; @@ -45,6 +47,14 @@ public abstract class Object implements GameEntity{ this.spr = spr; } + protected void Draw_Sprite(double x, double y, Sprite sprite){ + DrawLoop.Draw_Sprite(x,y,sprite); + } + + protected void Draw_Sprite_Partial(double x, double y, double xOffset, double yOffset, double w, double h, Sprite sprite){ + DrawLoop.Draw_Sprite_Partial(x,y,xOffset,yOffset,w,h,sprite); + } + protected boolean KeyHeld(int key) { return panel.KEYS.getOrDefault(key,false); } diff --git a/src/sig/engine/Sprite.java b/src/sig/engine/Sprite.java index 2559803..218c2d5 100644 --- a/src/sig/engine/Sprite.java +++ b/src/sig/engine/Sprite.java @@ -10,6 +10,7 @@ public enum Sprite{ NANA(new File("..","3x.png")), NANA_SMALL(new File("..","1x.png")), + TILE_SHEET(new File("..","tiles.png")), ; diff --git a/src/sig/engine/SpriteImage.java b/src/sig/engine/SpriteImage.java deleted file mode 100644 index e69de29..0000000 diff --git a/src/sig/map/Maps.java b/src/sig/map/Maps.java index 0c7020a..bb52597 100644 --- a/src/sig/map/Maps.java +++ b/src/sig/map/Maps.java @@ -28,4 +28,13 @@ public enum Maps { map.ModifyTile(x, y, t); //System.out.println("Tile "+(y*MAP_WIDTH+x)+" is now "+tiles[y*MAP_WIDTH+x]+"."); } + + public Tile getTile(int x,int y) { + int index = y*Map.MAP_WIDTH+x; + if (index<0||index>=this.map.tiles.length) { + return Tile.VOID; + } else { + return Tile.values()[this.map.tiles[index]]; + } + } } diff --git a/src/sig/map/Tile.java b/src/sig/map/Tile.java index 15f3620..35ff1e1 100644 --- a/src/sig/map/Tile.java +++ b/src/sig/map/Tile.java @@ -5,7 +5,7 @@ public enum Tile { WALL(0,0), FLOOR(1,0), PLATFORM_LEDGE(2,0), - INVISIBLE_WALL(0,0,false), + INVISIBLE_WALL(0,0,true), ; final public static int TILE_WIDTH=32; diff --git a/src/sig/objects/LevelRenderer.java b/src/sig/objects/LevelRenderer.java new file mode 100644 index 0000000..230ba2d --- /dev/null +++ b/src/sig/objects/LevelRenderer.java @@ -0,0 +1,47 @@ +package sig.objects; + +import java.awt.event.KeyEvent; +import sig.RabiClone; +import sig.engine.Object; +import sig.engine.Panel; +import sig.engine.Sprite; +import sig.map.Tile; + +public class LevelRenderer extends Object{ + + public LevelRenderer(Panel panel) { + super(panel); + this.setSprite(Sprite.TILE_SHEET); + } + + @Override + public void update(double updateMult) { + int right = KeyHeld(KeyEvent.VK_RIGHT)?1:0; + int left = KeyHeld(KeyEvent.VK_LEFT)?1:0; + int up = KeyHeld(KeyEvent.VK_UP)?1:0; + int down = KeyHeld(KeyEvent.VK_DOWN)?1:0; + if (right-left!=0) { + setX(getX()+(right-left)*256*updateMult); + } + if (up-down!=0) { + setY(getY()+(down-up)*256*updateMult); + } + } + + @Override + public void draw(int[] p) { + for (int y=(int)(0+this.getY()/Tile.TILE_HEIGHT);y<(int)(RabiClone.BASE_HEIGHT/Tile.TILE_HEIGHT+this.getY()/Tile.TILE_HEIGHT+1);y++) { + for (int x=(int)(0+this.getX()/Tile.TILE_WIDTH);x<(int)(RabiClone.BASE_WIDTH/Tile.TILE_WIDTH+this.getX()/Tile.TILE_WIDTH+1);x++) { + if (RabiClone.CURRENT_MAP.getTile(x,y)!=Tile.VOID) { + DrawTile(x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),RabiClone.CURRENT_MAP.getTile(x,y)); + //System.out.println((x*Tile.TILE_WIDTH+(this.getX()%Tile.TILE_WIDTH) )+","+(y*Tile.TILE_HEIGHT+(this.getY()%Tile.TILE_HEIGHT))); + } + } + } + } + + private void DrawTile(double x, double y, Tile tile) { + Draw_Sprite_Partial(x,y, tile.getSpriteSheetX()*tile.getTileWidth(), tile.getSpriteSheetY()*tile.getTileHeight(), tile.getTileWidth(), tile.getTileHeight(), getSprite()); + } + +} diff --git a/src/sig/objects/Player.java b/src/sig/objects/Player.java index 523b1d2..26a7952 100644 --- a/src/sig/objects/Player.java +++ b/src/sig/objects/Player.java @@ -1,6 +1,5 @@ package sig.objects; -import sig.DrawLoop; import sig.RabiClone; import sig.engine.Object; import sig.engine.Panel; @@ -19,21 +18,11 @@ public class Player extends Object{ @Override public void update(double updateMult) { - int right = KeyHeld(KeyEvent.VK_RIGHT)?1:0; - int left = KeyHeld(KeyEvent.VK_LEFT)?1:0; - int up = KeyHeld(KeyEvent.VK_UP)?1:0; - int down = KeyHeld(KeyEvent.VK_DOWN)?1:0; - if (right-left!=0) { - setX(getX()+(right-left)*32*updateMult); - } - if (up-down!=0) { - setY(getY()+(down-up)*32*updateMult); - } } @Override public void draw(int[] p) { - DrawLoop.Draw_Sprite(this.getX(), this.getY(), this.getSprite()); + Draw_Sprite(this.getX(), this.getY(), this.getSprite()); } }