diff --git a/src/com/annimon/turrets/Background.java b/src/com/annimon/turrets/Background.java index 4ff8192..74df343 100644 --- a/src/com/annimon/turrets/Background.java +++ b/src/com/annimon/turrets/Background.java @@ -1,5 +1,7 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.HEIGHT; +import static com.annimon.turrets.Constants.WIDTH; import com.annimon.turrets.util.Util; import java.awt.Color; import java.awt.Graphics; @@ -8,7 +10,7 @@ import java.awt.Graphics; * * @author aNNiMON */ -public class Background implements Constants { +public class Background { private static final int STARS_COUNT = (int) Math.sqrt(WIDTH * HEIGHT); diff --git a/src/com/annimon/turrets/Constants.java b/src/com/annimon/turrets/Constants.java index 9441d2c..e3d4eb1 100644 --- a/src/com/annimon/turrets/Constants.java +++ b/src/com/annimon/turrets/Constants.java @@ -6,12 +6,12 @@ import java.awt.Dimension; * * @author aNNiMON */ -public interface Constants { +public final class Constants { // Screen public static final int WIDTH = 800, HEIGHT = 600; public static final boolean RESIZABLE = false; - public static final Dimension SCREEN_DIMENSION = new Dimension(Constants.WIDTH, Constants.HEIGHT); + public static final Dimension SCREEN_DIMENSION = new Dimension(WIDTH, HEIGHT); public static final String FONT_NAME = "Times New Roman"; // Parameters diff --git a/src/com/annimon/turrets/DoubleBufferedCanvas.java b/src/com/annimon/turrets/DoubleBufferedCanvas.java index 849d63f..f47ab1e 100644 --- a/src/com/annimon/turrets/DoubleBufferedCanvas.java +++ b/src/com/annimon/turrets/DoubleBufferedCanvas.java @@ -1,5 +1,6 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.SCREEN_DIMENSION; import java.awt.Canvas; import java.awt.Graphics; import java.awt.Graphics2D; @@ -22,7 +23,7 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen public DoubleBufferedCanvas() { setSize(Constants.WIDTH, Constants.HEIGHT); - setPreferredSize(Constants.SCREEN_DIMENSION); + setPreferredSize(SCREEN_DIMENSION); addMouseListener(DoubleBufferedCanvas.this); addMouseMotionListener(DoubleBufferedCanvas.this); diff --git a/src/com/annimon/turrets/GameCanvas.java b/src/com/annimon/turrets/GameCanvas.java index c77b7b9..7acc827 100644 --- a/src/com/annimon/turrets/GameCanvas.java +++ b/src/com/annimon/turrets/GameCanvas.java @@ -1,5 +1,7 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.FONT_NAME; +import static com.annimon.turrets.Constants.MAX_ROUNDS; import com.annimon.turrets.Turret.TurretInfo; import com.annimon.turrets.network.GameClient; import com.annimon.turrets.network.GameServer; @@ -42,7 +44,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB); initBackground(); - font = new Font(Constants.FONT_NAME, Font.PLAIN, 24); + font = new Font(FONT_NAME, Font.PLAIN, 24); wind = new Wind(); gameStarted = false; @@ -170,8 +172,8 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ if (serverWinRound) serverWinCount++; else clientWinCount++; - final boolean serverWin = (serverWinCount == Constants.MAX_ROUNDS); - final boolean clientWin = (clientWinCount == Constants.MAX_ROUNDS); + final boolean serverWin = (serverWinCount == MAX_ROUNDS); + final boolean clientWin = (clientWinCount == MAX_ROUNDS); if (serverWin || clientWin) { // Show winners. finishGame( (serverWin && serverInstance) || (clientWin && !serverInstance) ); @@ -183,21 +185,6 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ newRound(seed); socketHelper.sendNewRoundSeed(seed); } - - System.out.println(serverWinCount + " " + clientWinCount); - - if (serverWinCount == Constants.MAX_ROUNDS) finishGame(true); - else if (serverWinCount == -Constants.MAX_ROUNDS) finishGame(false); - else { - if (serverInstance) { - try { - Thread.sleep(200); - } catch (InterruptedException ex) { } - long seed = System.currentTimeMillis(); - newRound(seed); - socketHelper.sendNewRoundSeed(seed); - } - } } private void finishGame(boolean instanceWin) { diff --git a/src/com/annimon/turrets/Main.java b/src/com/annimon/turrets/Main.java index 3c91554..3ba6865 100644 --- a/src/com/annimon/turrets/Main.java +++ b/src/com/annimon/turrets/Main.java @@ -1,5 +1,6 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.RESIZABLE; import com.annimon.turrets.util.GuiUtil; import java.awt.Component; import javax.swing.JFrame; @@ -26,7 +27,7 @@ public class Main extends JFrame { public Main() { super("Turrets"); - setResizable(Constants.RESIZABLE); + setResizable(RESIZABLE); setLocationByPlatform(true); setDefaultCloseOperation(EXIT_ON_CLOSE); diff --git a/src/com/annimon/turrets/MenuPanel.java b/src/com/annimon/turrets/MenuPanel.java index ef3cdee..7bf2856 100644 --- a/src/com/annimon/turrets/MenuPanel.java +++ b/src/com/annimon/turrets/MenuPanel.java @@ -1,5 +1,6 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.SCREEN_DIMENSION; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; @@ -54,7 +55,7 @@ public class MenuPanel extends JPanel { titleLabel.setHorizontalAlignment(SwingConstants.CENTER); // Init panel - setPreferredSize(Constants.SCREEN_DIMENSION); + setPreferredSize(SCREEN_DIMENSION); setLayout(new BorderLayout()); setBackground(Color.BLACK); add(menuList, BorderLayout.SOUTH); diff --git a/src/com/annimon/turrets/ShootInfo.java b/src/com/annimon/turrets/ShootInfo.java index 1aca950..00adb73 100644 --- a/src/com/annimon/turrets/ShootInfo.java +++ b/src/com/annimon/turrets/ShootInfo.java @@ -1,5 +1,9 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.GRAVITATION_ACCELERATION; +import static com.annimon.turrets.Constants.HEIGHT; +import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT; +import static com.annimon.turrets.Constants.WIDTH; import java.awt.Color; import java.awt.Graphics2D; @@ -7,7 +11,7 @@ import java.awt.Graphics2D; * * @author aNNiMON */ -public class ShootInfo implements Constants { +public class ShootInfo { double x, y, speedX; double windSpeed, vsin, t; @@ -28,11 +32,11 @@ public class ShootInfo implements Constants { public void draw(Graphics2D g) { g.setColor(Color.WHITE); final int rad = 2; - g.fillArc((int) x - rad, Constants.HEIGHT - (int) y - rad, rad * 2, rad * 2, 0, 360); + g.fillArc((int) x - rad, HEIGHT - (int) y - rad, rad * 2, rad * 2, 0, 360); } public boolean isOver() { - return (x < 0) || (x >= Constants.WIDTH) || (y < 0); + return (x < 0) || (x >= WIDTH) || (y < 0); } public boolean isCollideOpponent(boolean server, Terrain tr) { diff --git a/src/com/annimon/turrets/Terrain.java b/src/com/annimon/turrets/Terrain.java index 70abfa0..fb7e660 100644 --- a/src/com/annimon/turrets/Terrain.java +++ b/src/com/annimon/turrets/Terrain.java @@ -1,16 +1,18 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.HEIGHT; +import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT; +import static com.annimon.turrets.Constants.WIDTH; import com.annimon.turrets.util.Util; import java.awt.Color; import java.awt.Graphics2D; import java.awt.LinearGradientPaint; -import java.util.Random; /** * Destructible terrain. * @author aNNiMON */ -public class Terrain implements Constants { +public class Terrain { private static final Color[] TERRAIN_COLOR = { new Color(0xFF33CE2B), new Color(0xFF1C7317) @@ -94,8 +96,8 @@ public class Terrain implements Constants { } gradientPaint = new LinearGradientPaint( - 0, Constants.HEIGHT - maxBlockHeight, - 0, Constants.HEIGHT, + 0, HEIGHT - maxBlockHeight, + 0, HEIGHT, new float[] {0f, 1f}, TERRAIN_COLOR); } } diff --git a/src/com/annimon/turrets/Turret.java b/src/com/annimon/turrets/Turret.java index 52af61e..d89d997 100644 --- a/src/com/annimon/turrets/Turret.java +++ b/src/com/annimon/turrets/Turret.java @@ -1,5 +1,10 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.DEBUG_MODE; +import static com.annimon.turrets.Constants.GRAVITATION_ACCELERATION; +import static com.annimon.turrets.Constants.HEIGHT; +import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT; +import static com.annimon.turrets.Constants.WIDTH; import java.awt.Color; import java.awt.Graphics2D; @@ -7,7 +12,7 @@ import java.awt.Graphics2D; * * @author aNNiMON */ -public class Turret implements Constants { +public class Turret { public static final boolean SERVER = true, CLIENT = false; @@ -34,10 +39,10 @@ public class Turret implements Constants { public Turret(boolean server, Terrain terrain, Wind wind) { this.server = server; - this.turretX = (server ? 5 : Constants.WIDTH - 5); + this.turretX = (server ? 5 : WIDTH - 5); this.terrain = terrain; this.wind = wind; - barrelRadius = Constants.WIDTH / 20; + barrelRadius = WIDTH / 20; shootInfo = new ShootInfo(); reinit(); } @@ -58,9 +63,9 @@ public class Turret implements Constants { public void draw(Graphics2D g) { g.setColor(Color.WHITE); - g.drawLine(turretX, Constants.HEIGHT - turretY, barrelX, Constants.HEIGHT - barrelY); + g.drawLine(turretX, HEIGHT - turretY, barrelX, HEIGHT - barrelY); g.setColor(server ? Color.BLUE : Color.RED); - g.fillArc(turretX - TURRET_WIDTH / 2, Constants.HEIGHT - turretY - TURRET_HEIGHT / 2, + g.fillArc(turretX - TURRET_WIDTH / 2, HEIGHT - turretY - TURRET_HEIGHT / 2, TURRET_WIDTH, TURRET_HEIGHT, 0, 180); if (shootState) { shootInfo.update(server); @@ -83,7 +88,7 @@ public class Turret implements Constants { g.setColor(Color.RED); double x = barrelX; double y = barrelY; - final double speed = shotPower * (Constants.WIDTH / 80d); + final double speed = shotPower * (WIDTH / 80d); final double windSpeed = wind.getSpeed(); final double speedX = speed * Math.cos(barrelAngle); final double vsin = speed * Math.sin(barrelAngle); @@ -98,8 +103,8 @@ public class Turret implements Constants { y += speedY; t += 0.01; - g.drawLine((int) x, Constants.HEIGHT - (int) y, (int) x, Constants.HEIGHT - (int) y); - isOver = (x < 0) || (x >= Constants.WIDTH) || (y < 0); + g.drawLine((int) x, HEIGHT - (int) y, (int) x, HEIGHT - (int) y); + isOver = (x < 0) || (x >= WIDTH) || (y < 0); } while (!isOver); } } @@ -111,8 +116,8 @@ public class Turret implements Constants { if (!server) angle = Math.PI - angle; if ( (0d <= angle) && (angle <= ANGLE_90) ) { barrelAngle = angle; - final int xlocal = (server ? x : Constants.WIDTH - x); - shotPower = Math.sqrt(xlocal*xlocal + y*y) / (double) Constants.WIDTH; + final int xlocal = (server ? x : WIDTH - x); + shotPower = Math.sqrt(xlocal*xlocal + y*y) / (double) WIDTH; calculateBarrelPosition(); } } @@ -140,7 +145,7 @@ public class Turret implements Constants { shootInfo.reset(); shootInfo.x = barrelX; shootInfo.y = barrelY; - final double speed = shotPower * (Constants.WIDTH / 80d); + final double speed = shotPower * (WIDTH / 80d); shootInfo.windSpeed = wind.getSpeed() * (server ? 1 : -1); shootInfo.speedX = speed * Math.cos(barrelAngle); shootInfo.vsin = speed * Math.sin(barrelAngle); diff --git a/src/com/annimon/turrets/Wind.java b/src/com/annimon/turrets/Wind.java index 5c11873..a39adb2 100644 --- a/src/com/annimon/turrets/Wind.java +++ b/src/com/annimon/turrets/Wind.java @@ -1,5 +1,7 @@ package com.annimon.turrets; +import static com.annimon.turrets.Constants.MAX_WIND_STRENGTH; +import static com.annimon.turrets.Constants.WIDTH; import com.annimon.turrets.util.Util; import java.awt.Color; import java.awt.FontMetrics; @@ -18,14 +20,14 @@ public class Wind { } public void change() { - speed = Util.rand(-Constants.MAX_WIND_STRENGTH, Constants.MAX_WIND_STRENGTH); + speed = Util.rand(-MAX_WIND_STRENGTH, MAX_WIND_STRENGTH); } public void drawInfo(Graphics2D g, FontMetrics metrics) { - final int speedPercent = (int) (Math.abs(speed) * 100d / Constants.MAX_WIND_STRENGTH); + final int speedPercent = (int) (Math.abs(speed) * 100d / MAX_WIND_STRENGTH); final String value = String.valueOf(speedPercent); final int valueWidth = metrics.stringWidth(value); - final int x = (Constants.WIDTH - valueWidth) / 2; + final int x = (WIDTH - valueWidth) / 2; final int y = metrics.getHeight(); g.setColor(Color.RED); diff --git a/src/com/annimon/turrets/network/GameClient.java b/src/com/annimon/turrets/network/GameClient.java index 3fb3fa4..728f9c9 100644 --- a/src/com/annimon/turrets/network/GameClient.java +++ b/src/com/annimon/turrets/network/GameClient.java @@ -1,6 +1,6 @@ package com.annimon.turrets.network; -import com.annimon.turrets.Constants; +import static com.annimon.turrets.Constants.PORT; import java.io.IOException; import java.net.Socket; @@ -8,7 +8,7 @@ import java.net.Socket; * * @author aNNiMON */ -public class GameClient implements Constants { +public class GameClient { private final SocketHelper helper; diff --git a/src/com/annimon/turrets/network/GameServer.java b/src/com/annimon/turrets/network/GameServer.java index 65cebe0..8ef6c0b 100644 --- a/src/com/annimon/turrets/network/GameServer.java +++ b/src/com/annimon/turrets/network/GameServer.java @@ -1,6 +1,6 @@ package com.annimon.turrets.network; -import com.annimon.turrets.Constants; +import static com.annimon.turrets.Constants.PORT; import java.io.IOException; import java.net.ServerSocket; @@ -8,7 +8,7 @@ import java.net.ServerSocket; * * @author aNNiMON */ -public class GameServer implements Constants { +public class GameServer { private final ServerSocket serverSocket; private final SocketHelper helper; diff --git a/src/com/annimon/turrets/util/GuiUtil.java b/src/com/annimon/turrets/util/GuiUtil.java index 3d6cc7d..342c5ac 100644 --- a/src/com/annimon/turrets/util/GuiUtil.java +++ b/src/com/annimon/turrets/util/GuiUtil.java @@ -1,7 +1,8 @@ package com.annimon.turrets.util; import com.annimon.turrets.Background; -import com.annimon.turrets.Constants; +import static com.annimon.turrets.Constants.HEIGHT; +import static com.annimon.turrets.Constants.WIDTH; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.GradientPaint; @@ -32,8 +33,7 @@ public class GuiUtil { } } - public static class PlanetBackground extends javax.swing.plaf.LayerUI - implements Constants { + public static class PlanetBackground extends javax.swing.plaf.LayerUI { private final BufferedImage image;