From 4ab26e5a48584cc6c7bd78dd3dfafb9f00cb321c Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Mon, 21 Jan 2013 01:18:20 -0500 Subject: [PATCH] Drawing patches should make more sense now. --- src/Render.java | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/Render.java b/src/Render.java index d72c495..54b1e8f 100644 --- a/src/Render.java +++ b/src/Render.java @@ -35,7 +35,7 @@ public class Render extends Canvas implements Runnable, MouseListener, private JFrame _frame; private JButton pauseButton; private Random random = new Random(); - private Patch _lastPatch; + private int _drawState; public Render(int width, int height, Grid g, String[] rules) { addMouseListener(this); @@ -47,16 +47,18 @@ public class Render extends Canvas implements Runnable, MouseListener, paused = false; reset = false; rule = rules[0]; + _flags = new AtomicBoolean[2]; for (int i = 0; i < _flags.length; i++) _flags[i] = new AtomicBoolean(); _turn = new AtomicInteger(); + _grid = g; _image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); _pixels = ((DataBufferInt) _image.getRaster().getDataBuffer()).getData(); _lastTick = 0; _rules = rules; - _lastPatch = null; + _drawState = -1; fps_now = 15; setFrame(); } @@ -252,19 +254,18 @@ public class Render extends Canvas implements Runnable, MouseListener, int states = Goldfish.getMaxStates(rule); if (e.getX() < 0 || e.getY() < 0 || e.getX() / scale >= width || e.getY() / scale >= height) return; - Patch p = _grid.getPatch(e.getX()/scale, e.getY()/scale); - if (_lastPatch != p) { - if (p.getState() != 0) { - p.setState(0); + Patch p = _grid.getPatch(e.getX() / scale, e.getY() / scale); + if (_drawState == -1) { + if (p.getState() == 0) { + if (SwingUtilities.isLeftMouseButton(e)) + _drawState = states - 1; + else if (SwingUtilities.isRightMouseButton(e)) + _drawState = 1; } else { - if (SwingUtilities.isLeftMouseButton(e)) { - p.setState(states - 1); - } else if (SwingUtilities.isRightMouseButton(e)) { - p.setState(1); - } + _drawState = 0; } - _lastPatch = p; } + p.setState(_drawState); e.consume(); } @@ -292,7 +293,7 @@ public class Render extends Canvas implements Runnable, MouseListener, @Override public void mouseReleased(MouseEvent e) { - _lastPatch = null; + _drawState = -1; } @Override