| @@ -3,13 +3,17 @@ package edu.stuy.goldfish; | |||||
| import java.awt.Canvas; | import java.awt.Canvas; | ||||
| import java.awt.Dimension; | import java.awt.Dimension; | ||||
| import java.awt.Graphics; | import java.awt.Graphics; | ||||
| import java.awt.event.MouseEvent; | |||||
| import java.awt.event.MouseListener; | |||||
| import java.awt.event.MouseMotionListener; | |||||
| import java.awt.image.BufferStrategy; | import java.awt.image.BufferStrategy; | ||||
| import java.awt.image.BufferedImage; | import java.awt.image.BufferedImage; | ||||
| import java.awt.image.DataBufferInt; | import java.awt.image.DataBufferInt; | ||||
| import javax.swing.JFrame; | import javax.swing.JFrame; | ||||
| public class Render extends Canvas implements Runnable { | |||||
| public class Render extends Canvas implements Runnable, MouseListener, | |||||
| MouseMotionListener { | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| public static String title = "Goldfish"; | public static String title = "Goldfish"; | ||||
| @@ -25,12 +29,15 @@ public class Render extends Canvas implements Runnable { | |||||
| private long _last_tick; | private long _last_tick; | ||||
| public Render(int width, int height, Grid g) { | public Render(int width, int height, Grid g) { | ||||
| addMouseListener(this); | |||||
| addMouseMotionListener(this); | |||||
| Render.width = width; | Render.width = width; | ||||
| Render.height = height; | Render.height = height; | ||||
| setScale(); | setScale(); | ||||
| _grid = g; | _grid = g; | ||||
| _image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); | _image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); | ||||
| _pixels = ((DataBufferInt) _image.getRaster().getDataBuffer()).getData(); | |||||
| _pixels = ((DataBufferInt) _image.getRaster().getDataBuffer()) | |||||
| .getData(); | |||||
| _last_tick = 0; | _last_tick = 0; | ||||
| Dimension size = new Dimension(width * scale, height * scale); | Dimension size = new Dimension(width * scale, height * scale); | ||||
| setPreferredSize(size); | setPreferredSize(size); | ||||
| @@ -104,8 +111,7 @@ public class Render extends Canvas implements Runnable { | |||||
| if (since < 1000 / max_fps) { | if (since < 1000 / max_fps) { | ||||
| try { | try { | ||||
| Thread.sleep(1000 / max_fps - since); | Thread.sleep(1000 / max_fps - since); | ||||
| } | |||||
| catch (InterruptedException e) { | |||||
| } catch (InterruptedException e) { | |||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| @@ -119,4 +125,40 @@ public class Render extends Canvas implements Runnable { | |||||
| public void draw(int x, int y, int color) { | public void draw(int x, int y, int color) { | ||||
| _pixels[x + y * width] = color; | _pixels[x + y * width] = color; | ||||
| } | } | ||||
| @Override | |||||
| public void mouseDragged(MouseEvent e) { | |||||
| _grid.getPatch(e.getX() / scale, e.getY() / scale).setState(1); | |||||
| draw(e.getX() / scale, e.getY() / scale, 0xffffff); | |||||
| e.consume(); | |||||
| } | |||||
| @Override | |||||
| public void mouseClicked(MouseEvent e) { | |||||
| } | |||||
| @Override | |||||
| public void mouseEntered(MouseEvent e) { | |||||
| // TODO Auto-generated method stub | |||||
| } | |||||
| @Override | |||||
| public void mouseExited(MouseEvent e) { | |||||
| // TODO Auto-generated method stub | |||||
| } | |||||
| @Override | |||||
| public void mousePressed(MouseEvent e) { | |||||
| // TODO Auto-generated method stub | |||||
| } | |||||
| @Override | |||||
| public void mouseReleased(MouseEvent e) { | |||||
| // TODO Auto-generated method stub | |||||
| } | |||||
| @Override | |||||
| public void mouseMoved(MouseEvent e) { | |||||
| // TODO Auto-generated method stub | |||||
| } | |||||
| } | } | ||||