| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package gui.simulator;
- import java.awt.BasicStroke;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics2D;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.Window;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.geom.GeneralPath;
- import java.awt.geom.Rectangle2D;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import javax.imageio.ImageIO;
- public class Topbar implements MouseListener {
- private int oldwidth, people;
- private GeneralPath background;
- BufferedImage t1,t2,t3,t4,t5;
- private GregorianCalendar time;
- private Rectangle[] buttons;
- private Terrain terrain;
-
- public Topbar(Terrain terrain){
- background = new GeneralPath();
- time = new GregorianCalendar();
- buttons = new Rectangle[5];
- this.terrain = terrain;
- try {
- t2 = ImageIO.read(Window.class.getResource("/topbar/play.png"));
- t1 = ImageIO.read(Window.class.getResource("/topbar/stop.png"));
- t3 = ImageIO.read(Window.class.getResource("/topbar/faster.png"));
- t4 = ImageIO.read(Window.class.getResource("/topbar/grid.png"));
- t5 = ImageIO.read(Window.class.getResource("/topbar/people.png"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void draw(Graphics2D g2, int screenwidth){
- screenwidth += 100;
- if(oldwidth != screenwidth){
- //only create a new general path when the window is resized
- background.reset();
- background.moveTo(screenwidth/4, 0);
- background.curveTo(screenwidth/4, 0, screenwidth/4 -20, 20, screenwidth/4 +30, 40);
- background.lineTo(screenwidth/4*3-30, 40);
- background.curveTo(screenwidth/4*3-30, 40, screenwidth/4*3 + 20, 20, screenwidth/4*3, 0);
- background.closePath();
- oldwidth = screenwidth;
- buttons[0] = new Rectangle(screenwidth/4+40,7,26,26);
- buttons[1] = new Rectangle(screenwidth/4+90,7,26,26);
- buttons[2] = new Rectangle(screenwidth/4+130,7,26,30);
- buttons[3] = new Rectangle(screenwidth/4*3-60,7,26,26);
- buttons[4] = new Rectangle(screenwidth/4*3-150,7,48,26);
- }
- g2.setColor(Color.GRAY);
- g2.fill(background);
- g2.setColor(Color.BLACK);
- g2.setStroke(new BasicStroke(2));
- g2.draw(background);
-
- g2.drawImage(t1, screenwidth/4 + 40, 7, null );
- g2.drawImage(t2, screenwidth/4 + 90, 7, null );
- g2.drawImage(t3, screenwidth/4 + 130, 7, null );
-
- g2.setFont(new Font("Sans-serif", Font.BOLD, 22));
- g2.drawString(time.get(Calendar.HOUR_OF_DAY) + ":" + time.get(Calendar.MINUTE), screenwidth/2-10 , 28);
- g2.drawImage(t4, screenwidth/4*3 -60, 7, null );
-
- g2.drawImage(t5, screenwidth/4*3 -150, 7, null );
- g2.setFont(new Font("Sans-serif", Font.PLAIN, 18));
- g2.drawString(people + "", screenwidth/4*3 - 120, 27);
- }
- public void setTime(GregorianCalendar t){
- time = t;
- }
- public void setPeople(int p){
- people = p;
- }
- public Rectangle[] getButtons(){
- return buttons;
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- int button = clickedButton(e.getPoint());
- if(button >=0){
- if(button == 3) terrain.toggleGrid();
- }
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- @Override
- public void mousePressed(MouseEvent e) {
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- public boolean containsMouse(Point point){
- if(clickedButton(point)>=0)
- return true;
- return false;
- }
- private int clickedButton(Point point){
- for(int i = 0; i < getButtons().length; i++){
- if(getButtons()[i].contains(point)){
- return i;
- }
- }
- return -1;
- }
- public GeneralPath getBackground() {
- return background;
- }
-
- }
|