| @@ -1,5 +1,6 @@ | |||||
| package edu.stuy.goldfish; | package edu.stuy.goldfish; | ||||
| import java.util.Date; | |||||
| import java.awt.Canvas; | import java.awt.Canvas; | ||||
| import java.awt.Dimension; | import java.awt.Dimension; | ||||
| import java.awt.Graphics; | import java.awt.Graphics; | ||||
| @@ -12,18 +13,17 @@ import javax.swing.JFrame; | |||||
| public class Render extends Canvas implements Runnable { | public class Render extends Canvas implements Runnable { | ||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| public static String title = "Goldfish"; | |||||
| public static int width; | public static int width; | ||||
| public static int height; | public static int height; | ||||
| public static int scale; | public static int scale; | ||||
| private static int max_fps = 15; | |||||
| public String title = "Goldfish"; | |||||
| public static int max_fps = 15; | |||||
| private JFrame _frame; | private JFrame _frame; | ||||
| private BufferedImage _image; | private BufferedImage _image; | ||||
| private Grid _grid; | private Grid _grid; | ||||
| private int[] _pixels; | private int[] _pixels; | ||||
| private long _last_tick; | |||||
| public Render(int width, int height, Grid g) { | public Render(int width, int height, Grid g) { | ||||
| Render.width = width; | Render.width = width; | ||||
| @@ -32,6 +32,7 @@ public class Render extends Canvas implements Runnable { | |||||
| _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; | |||||
| Dimension size = new Dimension(width * scale, height * scale); | Dimension size = new Dimension(width * scale, height * scale); | ||||
| setPreferredSize(size); | setPreferredSize(size); | ||||
| setFrame(); | setFrame(); | ||||
| @@ -98,7 +99,16 @@ public class Render extends Canvas implements Runnable { | |||||
| } | } | ||||
| public void sleep() { | public void sleep() { | ||||
| long since = (new Date()).getTime() - _last_tick; | |||||
| if (since < 1000 / max_fps) { | |||||
| try { | |||||
| Thread.sleep(1000 / max_fps - since); | |||||
| } | |||||
| catch (InterruptedException e) { | |||||
| return; | |||||
| } | |||||
| } | |||||
| _last_tick = (new Date()).getTime(); | |||||
| } | } | ||||
| public void setGrid(Grid g) { | public void setGrid(Grid g) { | ||||