package jnet.client.gui; import jnet.client.Client; import jnet.client.network.NettyClient; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.Timer; import jnet.lib.LogFile; import jnet.lib.object.Map; import jnet.lib.object.MapObject; public class MapView extends JPanel { public static List paintObjects = new ArrayList<>(); ; private static Map map; public MapView(Map map) { this.map = map; LogFile.printDebug("View map: " + map.getName()); paintObjects.clear(); loadObject(map.getId()); this.addMouseMotionListener(new MapViewAction(map)); this.addMouseListener(new MapViewAction(map)); // periodicke prekreslovani Timer timer = new Timer(100, (ActionEvent ae) -> { if (NettyClient.isConnected()) { this.setBackground(Color.white); } else { this.setBackground(Color.LIGHT_GRAY); } repaint(); }); timer.start(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g.create(); // vykresleni lock/unlock mapy try { BufferedImage image; if (map.isLock()) { image = ImageIO.read(new File("img/lock.png")); } else { image = ImageIO.read(new File("img/unlock.png")); } g.drawImage(image, 0, 0, this); } catch (IOException ex) { LogFile.printErr("File not found: " + ex); } // vykresleni objektu for (PaintObject paintObject : paintObjects) { paintObject.paint(g2); } } public static void updateMapView(Map map) { if (map.equals(MapView.map)) { // obnoveni objektu paintObjects.clear(); // nahrat objekty loadObject(map.getId()); } } public static void updateMapView(int mapId) { for (Map map : Client.maps) { if (map.equals(MapView.map)) { // obnoveni objektu paintObjects.clear(); // nahrat objekty loadObject(map.getId()); } } } private static void loadObject(int mapId) { for (MapObject obj : Client.mapObject) { if (obj.getMap() == mapId) { paintObjects.add(new PaintObject(obj)); } } } }