From a0c0adfc6e544d169333abfb7ee238a8cd9de11c Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Wed, 30 Nov 2022 23:04:29 -0600 Subject: [PATCH] Custom cursor implementation #7 Co-authored-by: sigonasr2 --- sprites/cursor.png | Bin 0 -> 7031 bytes src/sig/JavaProjectTemplate.java | 12 +++++++++++- src/sig/engine/Panel.java | 24 ++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 sprites/cursor.png diff --git a/sprites/cursor.png b/sprites/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..81bb272f691b39e112c3dbd1fe75633b65a08ec7 GIT binary patch literal 7031 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 literal 0 HcmV?d00001 diff --git a/src/sig/JavaProjectTemplate.java b/src/sig/JavaProjectTemplate.java index b282d8e..dddd1ba 100644 --- a/src/sig/JavaProjectTemplate.java +++ b/src/sig/JavaProjectTemplate.java @@ -32,8 +32,10 @@ public class JavaProjectTemplate { Player pl = new Player(); Sprite bookSpr = new Sprite("book.png"); - JavaProjectTemplate(){ + public void initializeGame(){ //Initialize your game here. + + game.Cursor_SetCursor(new Sprite("cursor.png"),0,0); } public void updateGame(double fElapsedTime) { @@ -66,6 +68,14 @@ public class JavaProjectTemplate { if (Mouse.mouseWheel==MouseScrollValue.DOWN) { System.out.println("Scroll down!"); } + + if (Mouse.isPressed(3)) { + if (game.Cursor_IsVisible()) { + game.Cursor_Hide(); + } else { + game.Cursor_Show(); + } + } } public void drawGame() { diff --git a/src/sig/engine/Panel.java b/src/sig/engine/Panel.java index 0714eab..b804a9b 100644 --- a/src/sig/engine/Panel.java +++ b/src/sig/engine/Panel.java @@ -25,6 +25,8 @@ import java.awt.event.KeyListener; import java.awt.Graphics2D; import java.awt.RenderingHints; +import java.awt.Cursor; + import sig.JavaProjectTemplate; public class Panel extends JPanel implements Runnable,KeyListener { @@ -61,6 +63,8 @@ public class Panel extends JPanel implements Runnable,KeyListener { public static Panel p; public static JFrame f; + static Cursor currentCursor = new Cursor(Cursor.DEFAULT_CURSOR); + public static void InitializeEngine(JavaProjectTemplate instance){ System.setProperty("sun.java2d.transaccel", "True"); System.setProperty("sun.java2d.d3d", "True"); @@ -89,6 +93,8 @@ public class Panel extends JPanel implements Runnable,KeyListener { p.render(); + gameInstance.initializeGame(); + long lastGameTime = System.nanoTime(); long dt = 0; while (true) { @@ -238,6 +244,24 @@ public class Panel extends JPanel implements Runnable,KeyListener { * pixel is your canvas! */ + public boolean Cursor_IsVisible(){ + return !f.getCursor().getName().equals("INVISIBLE"); + } + + public void Cursor_Hide(){ + f.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage(""), new java.awt.Point(0,0), "INVISIBLE")); + } + public void Cursor_Show(){ + f.setCursor(currentCursor); + } + public void Cursor_SetCursor(Sprite cursorimg,int x_origin,int y_origin){ + currentCursor=Toolkit.getDefaultToolkit().createCustomCursor(cursorimg.img, new java.awt.Point(x_origin,y_origin), "CUSTOM"); + f.setCursor(currentCursor); + } + public void Cursor_ResetCursor(){ + f.setCursor(Cursor.getDefaultCursor()); + } + public /* abstract */ void render(){ gameInstance.drawGame();