diff options
author | mafaldo <mafaldo@heavyhammer.home> | 2018-11-18 22:29:05 +0100 |
---|---|---|
committer | mafaldo <mafaldo@heavyhammer.home> | 2018-11-18 22:29:05 +0100 |
commit | e2bcaecea59bdf3a4092efdc4b9624b3f83f6fec (patch) | |
tree | 90e70bb3954173c25e63b65bbc64bd78f8c854be /src/Scene.java | |
download | Subconscious-java-e2bcaecea59bdf3a4092efdc4b9624b3f83f6fec.tar.gz Subconscious-java-e2bcaecea59bdf3a4092efdc4b9624b3f83f6fec.zip |
initial commit
Diffstat (limited to '')
-rw-r--r-- | src/Scene.java | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/Scene.java b/src/Scene.java new file mode 100644 index 0000000..dcc3e5e --- /dev/null +++ b/src/Scene.java @@ -0,0 +1,104 @@ +import java.awt.Canvas; +import java.awt.Graphics2D; +import java.awt.Dimension; +import java.awt.BorderLayout; +import java.awt.event.KeyListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.awt.event.MouseWheelListener; +import java.awt.event.MouseWheelEvent; +import java.awt.image.BufferStrategy; +import javax.swing.JFrame; +import javax.swing.JPanel; + +public class Scene extends JPanel implements Runnable, KeyListener, MouseListener, MouseMotionListener, MouseWheelListener { + protected int WIDTH; + protected int HEIGHT; + protected BufferStrategy buffer; + protected long desiredFPS = 60; + protected long desiredDeltaLoop = (1000*1000*1000)/desiredFPS; + protected JFrame frame; + protected boolean running; + protected Canvas canvas; + protected int guiSize = 2; + + protected Scene(JFrame frame, Sub sub) { + this.frame = frame; + //getting window size + this.WIDTH = (int) this.frame.getSize().getWidth(); + this.HEIGHT = (int) this.frame.getSize().getHeight(); + + this.canvas = new Canvas(); + + this.canvas.setBounds(0, 0, this.WIDTH, this.HEIGHT); + this.canvas.setIgnoreRepaint(true); + + this.canvas.addKeyListener(this); + this.canvas.addMouseListener(this); + this.canvas.addMouseMotionListener(this); + this.canvas.addMouseWheelListener(this); + } + + public void start() { + this.canvas.createBufferStrategy(2); + this.buffer = this.canvas.getBufferStrategy(); + + this.canvas.requestFocus(); + this.running = true; + new Thread(this).start(); + } + + public void run() { + long beginLoopTime; + long endLoopTime; + long currentUpdateTime = System.nanoTime(); + long lastUpdateTime; + long deltaLoop; + + while (running) { + beginLoopTime = System.nanoTime(); + + //getting window size + this.WIDTH = (int) this.frame.getSize().getWidth(); + this.HEIGHT = (int) this.frame.getSize().getHeight(); + + this.render(); + + lastUpdateTime = currentUpdateTime; + currentUpdateTime = System.nanoTime(); + this.update((int) ((currentUpdateTime - lastUpdateTime)/(1000*1000))); + + endLoopTime = System.nanoTime(); + deltaLoop = endLoopTime - beginLoopTime; + + if (deltaLoop > this.desiredDeltaLoop) { + //late + } else { + try { + Thread.sleep((this.desiredDeltaLoop - deltaLoop)/(1000*1000)); + } catch (InterruptedException e ) { + + } + } + } + } + + protected void render() {} + protected void update(int deltaTime) {} + + @Override + public void keyTyped(KeyEvent e) {} + public void keyPressed(KeyEvent e) {} + public void keyReleased(KeyEvent e) {} + public void mouseClicked(MouseEvent e) {} + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) {} + public void mouseDragged(MouseEvent e) {} + public void mouseMoved(MouseEvent e) {} + public void mouseWheelMoved(MouseWheelEvent e) {} + +} |