| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package gui.simulator;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.Timer;
- import java.util.TimerTask;
- import javax.swing.BorderFactory;
- import javax.swing.JPanel;
- import agenda.Agenda;
- public class SimulatorPane extends JPanel{
-
- private Agenda agenda;
- private Terrain terrain;
- private Timer framestimer, updatetimer;
-
- //terrain type enums
- public enum Terrains{BEACH, GRASS, URBAN, UNDEFINED};
- //object type enums
- public enum Objects{STAGE, DRINK, SNACKBAR, RESTROOM, SUNGLAS, WAYPOINT, ENTRANCE, EXIT, BORDER, TREE1, PALMTREE1, FENCE};
- //time control enums
- public enum Time{STOP, PAUZE, PLAY, FASTER, FASTEST};
-
- public SimulatorPane(Agenda agenda, int length, int width, Terrains terrains){
- super.setLayout(new BorderLayout());
- this.agenda = agenda;
- this.setOpaque(true);
- this.setBackground(Color.WHITE);
- this.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
- this.terrain = new Terrain(length, width, terrains, this.agenda, this);
- this.add(this.terrain, BorderLayout.CENTER);
- framestimer = new Timer(1000/30, new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- terrain.repaint();
- }
- });
- updatetimer = new Timer(1000/100, new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- terrain.calculate();
- }
- });
-
- framestimer.start();
- //updatetimer.start();
- }
-
- public void changeSpeed(Time time){
- switch(time){
- case FASTEST:
- updatetimer.setDelay(1000/150); break;
- case FASTER:
- updatetimer.setDelay(1000/100); break;
- case PLAY:
- updatetimer.start(); updatetimer.setDelay(1000/50); break;
- case PAUZE:
- updatetimer.stop(); break;
- case STOP:
- updatetimer.stop(); terrain.clearVisitors(); break;
- default:
- break;
- }
- }
-
- }
|