From bdc22767f51e2b953f792928f7bf566e88d7613c Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 28 May 2022 13:33:35 -0500 Subject: [PATCH] Implement tile highlighting based on level renderer view Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com> Co-authored-by: sigonasr2 --- src/sig/RabiClone.java | 16 ++++++++---- src/sig/engine/Panel.java | 41 ++++++++++++++++++++---------- src/sig/engine/Point.java | 8 ++++++ src/sig/objects/LevelRenderer.java | 3 +++ src/sig/objects/Player.java | 1 - 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/sig/RabiClone.java b/src/sig/RabiClone.java index 7432bb0..090790d 100644 --- a/src/sig/RabiClone.java +++ b/src/sig/RabiClone.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import sig.engine.Panel; +import sig.engine.Point; import sig.map.Maps; import sig.objects.LevelRenderer; import sig.objects.Player; @@ -24,6 +25,10 @@ public class RabiClone{ public static int BASE_WIDTH=512; public static int BASE_HEIGHT=288; + public static int SIZE_MULTIPLIER=1; + public static Point MOUSE_POS; + + public static LevelRenderer level_renderer; public static Maps CURRENT_MAP = Maps.WORLD1; public static void main(String[] args) { @@ -34,6 +39,8 @@ public class RabiClone{ ChooseBestRatio(); p = new Panel(f); + + MOUSE_POS=p.mousePos; p.init(); @@ -43,7 +50,7 @@ public class RabiClone{ f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); - OBJ.add(new LevelRenderer(p)); + OBJ.add(level_renderer = new LevelRenderer(p)); OBJ.add(new Player(p)); p.render(); @@ -63,10 +70,9 @@ public class RabiClone{ } } private static void ChooseBestRatio() { - int multiplier=1; - while (f.getWidth()*(multiplier+1) KEYS = new HashMap<>(); public Panel(JFrame f) { @@ -52,16 +55,14 @@ public class Panel extends JPanel implements Runnable,KeyListener { this.addMouseListener(new MouseInputListener(){ @Override public void mouseClicked(MouseEvent e) { - // TODO Auto-generated method stub - } @Override public void mousePressed(MouseEvent e) { mouseHeld=true; - mousePos=e.getPoint(); - System.out.println(e.getX()+","+e.getY()); - System.out.println(MouseData()); + mousePos.set(e.getX()/RabiClone.SIZE_MULTIPLIER,e.getY()/RabiClone.SIZE_MULTIPLIER); + //System.out.println(e.getX()+","+e.getY()); + //System.out.println(MouseData()); } private String MouseData() { @@ -71,14 +72,12 @@ public class Panel extends JPanel implements Runnable,KeyListener { @Override public void mouseReleased(MouseEvent e) { mouseHeld=false; - mousePos=e.getPoint(); - System.out.println(MouseData()); + mousePos.set(e.getX()/RabiClone.SIZE_MULTIPLIER,e.getY()/RabiClone.SIZE_MULTIPLIER); + //System.out.println(MouseData()); } @Override public void mouseEntered(MouseEvent e) { - // TODO Auto-generated method stub - } @Override @@ -87,18 +86,34 @@ public class Panel extends JPanel implements Runnable,KeyListener { @Override public void mouseDragged(MouseEvent e) { - mousePos=e.getPoint(); - System.out.println(MouseData()); } - + @Override public void mouseMoved(MouseEvent e) { + } + }); + this.addMouseMotionListener(new MouseMotionListener(){ + + @Override + public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub } + + @Override + public void mouseMoved(MouseEvent e) { + mousePos.set(e.getX()/RabiClone.SIZE_MULTIPLIER,e.getY()/RabiClone.SIZE_MULTIPLIER); + UpdateHighlightedSquare(); + } }); } + private static void UpdateHighlightedSquare() { + RabiClone.p.highlightedSquare.setX((int)((RabiClone.level_renderer.getX()+RabiClone.MOUSE_POS.getX())/Tile.TILE_WIDTH)); + RabiClone.p.highlightedSquare.setY((int)((RabiClone.level_renderer.getY()+RabiClone.MOUSE_POS.getY())/Tile.TILE_HEIGHT)); + //System.out.println(RabiClone.p.highlightedSquare); + } + /** * Get Best Color model available for current screen. * @return color model diff --git a/src/sig/engine/Point.java b/src/sig/engine/Point.java index b848018..c12c76c 100644 --- a/src/sig/engine/Point.java +++ b/src/sig/engine/Point.java @@ -25,6 +25,14 @@ public class Point { this.y = y; } + public void set(int x,int y) { + setX(x);setY(y); + } + + public void update(int x,int y) { + set(x,y); + } + @Override public String toString() { return "Point(" + x + "," + y + ")"; diff --git a/src/sig/objects/LevelRenderer.java b/src/sig/objects/LevelRenderer.java index 230ba2d..abf5287 100644 --- a/src/sig/objects/LevelRenderer.java +++ b/src/sig/objects/LevelRenderer.java @@ -32,6 +32,9 @@ public class LevelRenderer extends Object{ 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 (x==RabiClone.p.highlightedSquare.getX()&&y==RabiClone.p.highlightedSquare.getY()) { + DrawTile(x*Tile.TILE_WIDTH-this.getX(),y*Tile.TILE_HEIGHT-this.getY(),Tile.WALL); + } 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))); diff --git a/src/sig/objects/Player.java b/src/sig/objects/Player.java index 26a7952..a83e7de 100644 --- a/src/sig/objects/Player.java +++ b/src/sig/objects/Player.java @@ -4,7 +4,6 @@ import sig.RabiClone; import sig.engine.Object; import sig.engine.Panel; import sig.engine.Sprite; -import java.awt.event.KeyEvent; public class Player extends Object{