package vooga.towerdefense.model; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import vooga.towerdefense.controller.Controller; /** * This class represents a game loop. It is responsible for starting, stopping, * and resuming the animation of the game. * * @author Erick Gonzalez */ public class GameLoop { // animate 25 times per second if possible private static final int FRAMES_PER_SECOND = 25; // better way to think about timed events (in milliseconds) private static final int ONE_SECOND = 1000; private static final int DEFAULT_DELAY = ONE_SECOND / FRAMES_PER_SECOND; private Controller myController; private Timer myTimer; /** * * @param controller * a controller */ public GameLoop(Controller controller) { // TODO: functions to construct model from file. Probably put that in myController = controller; initTimer(); } /** * Starts the game loop. */ public void start() { myTimer.start(); } public void stop() { myTimer.stop(); } private void initTimer() { myTimer = new Timer(DEFAULT_DELAY, new ActionListener() { public void actionPerformed(ActionEvent e) { myController.update(DEFAULT_DELAY); myController.displayMap(); } }); } }