From 54e9ecdb5b7d536c829520eb0638862982c63e41 Mon Sep 17 00:00:00 2001 From: Andrew Lalis Date: Sun, 20 Jun 2021 16:04:30 +0200 Subject: [PATCH] Added icon, and some cleaner server behavior. --- .../andrewlalis/aos_client/view/GameFrame.java | 17 ++++++++++++++++- client/src/main/resources/icon.png | Bin 0 -> 43982 bytes .../java/nl/andrewlalis/aos_server/Server.java | 10 ++++++---- 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 client/src/main/resources/icon.png diff --git a/client/src/main/java/nl/andrewlalis/aos_client/view/GameFrame.java b/client/src/main/java/nl/andrewlalis/aos_client/view/GameFrame.java index 0c944d5..5a1e76a 100644 --- a/client/src/main/java/nl/andrewlalis/aos_client/view/GameFrame.java +++ b/client/src/main/java/nl/andrewlalis/aos_client/view/GameFrame.java @@ -4,17 +4,29 @@ import nl.andrewlalis.aos_client.Client; import nl.andrewlalis.aos_client.control.PlayerKeyListener; import nl.andrewlalis.aos_client.control.PlayerMouseListener; +import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.IOException; +import java.io.InputStream; public class GameFrame extends JFrame { public GameFrame(String title, Client client, GamePanel gamePanel) throws HeadlessException { super(title); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); - + InputStream iconInputStream = GameFrame.class.getClassLoader().getResourceAsStream("icon.png"); + if (iconInputStream != null) { + try { + this.setIconImage(ImageIO.read(iconInputStream)); + iconInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } this.setResizable(false); + gamePanel.setPreferredSize(new Dimension(800, 800)); this.setContentPane(gamePanel); gamePanel.setFocusable(true); @@ -24,6 +36,7 @@ public class GameFrame extends JFrame { gamePanel.addMouseListener(mouseListener); gamePanel.addMouseMotionListener(mouseListener); gamePanel.addMouseWheelListener(mouseListener); + this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { @@ -31,7 +44,9 @@ public class GameFrame extends JFrame { client.shutdown(); } }); + this.pack(); + gamePanel.requestFocusInWindow(); this.setLocationRelativeTo(null); } diff --git a/client/src/main/resources/icon.png b/client/src/main/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e13cd1c47da70ad4ecb7bfb636b7291c8caf8f1 GIT binary patch literal 43982 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 literal 0 HcmV?d00001 diff --git a/server/src/main/java/nl/andrewlalis/aos_server/Server.java b/server/src/main/java/nl/andrewlalis/aos_server/Server.java index 843ff86..39a7e45 100644 --- a/server/src/main/java/nl/andrewlalis/aos_server/Server.java +++ b/server/src/main/java/nl/andrewlalis/aos_server/Server.java @@ -36,8 +36,12 @@ public class Server { this.clientHandlers = new CopyOnWriteArrayList<>(); this.serverSocket = new ServerSocket(port); this.cli = new ServerCli(this); - this.world = new World(new Vec2(50, 70)); + this.initWorld(); + this.worldUpdater = new WorldUpdater(this, this.world); + } + + private void initWorld() { world.getBarricades().add(new Barricade(10, 10, 30, 5)); world.getBarricades().add(new Barricade(10, 55, 30, 5)); world.getBarricades().add(new Barricade(20, 30, 10, 10)); @@ -58,9 +62,6 @@ public class Server { new Vec2(world.getSize().x() - 15, world.getSize().y() - 3), new Vec2(0, -1) )); - - this.worldUpdater = new WorldUpdater(this, this.world); - System.out.println("Started AOS-Server TCP on port " + port); } public World getWorld() { @@ -208,6 +209,7 @@ public class Server { this.running = true; this.worldUpdater.start(); this.cli.start(); + System.out.println("Started AOS-Server TCP on port " + this.serverSocket.getLocalPort() + "; now accepting connections."); while (this.running) { this.acceptClientConnection(); }