Constants interface changed to class
This commit is contained in:
parent
6818df443a
commit
167ba12e50
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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<JComponent>
|
||||
implements Constants {
|
||||
public static class PlanetBackground extends javax.swing.plaf.LayerUI<JComponent> {
|
||||
|
||||
private final BufferedImage image;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user