diff --git a/pom.xml b/pom.xml
index 8c6e065..758f90e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.github.KrumSpace
StellarSystems
- 0.14
+ 0.15
UTF-8
diff --git a/src/test/java/baryGraphics/panels/ObserverDrawPanel.java b/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
index 8344c45..4477773 100644
--- a/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
+++ b/src/test/java/baryGraphics/panels/ObserverDrawPanel.java
@@ -5,6 +5,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
import baryGraphics.Observer;
//
diff --git a/src/test/java/commonGraphics/AbstractWindow.java b/src/test/java/commonGraphics/AbstractWindow.java
index ed062a6..c9ab0f8 100644
--- a/src/test/java/commonGraphics/AbstractWindow.java
+++ b/src/test/java/commonGraphics/AbstractWindow.java
@@ -1,9 +1,6 @@
package commonGraphics;
import java.util.Objects;
-import java.awt.Point;
-import java.awt.Dimension;
-import javax.swing.WindowConstants;
import javax.swing.JFrame;
import org.jetbrains.annotations.NotNull;
@@ -11,25 +8,19 @@
//
public abstract class AbstractWindow extends JFrame {
- private static final @NotNull Dimension DEFAULT_WINDOW_SIZE = new Dimension(1200, 850);
- private static final @NotNull Point DEFAULT_WINDOW_LOCATION = new Point(50, 50);
- private static final int DEFAULT_CLOSE_OPERATION = WindowConstants.EXIT_ON_CLOSE;
- private static final @NotNull String DEFAULT_WINDOW_TITLE = "An unnamed window";
-
//Creates a new window.
- public AbstractWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
+ public AbstractWindow(@Nullable WindowSettings windowSettings) {
super();
- setWindowConfig(size, location, title);
+ setWindowConfig(Objects.requireNonNullElse(windowSettings, new WindowSettings()));
setVisible(true);
}
- private void setWindowConfig(@Nullable Dimension desiredSize,
- @Nullable Point desiredLocation,
- @Nullable String desiredTitle) {
- setSize(Objects.requireNonNullElse(desiredSize, DEFAULT_WINDOW_SIZE));
- setLocation(Objects.requireNonNullElse(desiredLocation, DEFAULT_WINDOW_LOCATION));
- setDefaultCloseOperation(DEFAULT_CLOSE_OPERATION);
- setTitle(Objects.requireNonNullElse(desiredTitle, DEFAULT_WINDOW_TITLE));
+ @SuppressWarnings("MagicConstant")
+ private void setWindowConfig(@NotNull WindowSettings windowSettings) {
+ setSize(windowSettings.getWindowSize());
+ setLocation(windowSettings.getWindowLocation());
+ setDefaultCloseOperation(windowSettings.getCloseOperation());
+ setTitle(windowSettings.getWindowTitle());
}
//doesn't get called automatically by AbstractWindow
diff --git a/src/test/java/commonGraphics/ReadMe.md b/src/test/java/commonGraphics/ReadMe.md
index 3a1077c..2fa2cb5 100644
--- a/src/test/java/commonGraphics/ReadMe.md
+++ b/src/test/java/commonGraphics/ReadMe.md
@@ -115,3 +115,10 @@ _Check code for more info..._
Commonly used side panels
_Check code for more info..._
+
+
+## graphicalPanels
+
+Simple graphical panels.
+
+_Check code for more info..._
diff --git a/src/test/java/commonGraphics/UpdatingWindow.java b/src/test/java/commonGraphics/UpdatingWindow.java
index d538dc3..5055b87 100644
--- a/src/test/java/commonGraphics/UpdatingWindow.java
+++ b/src/test/java/commonGraphics/UpdatingWindow.java
@@ -1,8 +1,5 @@
package commonGraphics;
-import java.awt.Point;
-import java.awt.Dimension;
-
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -15,15 +12,14 @@ public abstract class UpdatingWindow extends AbstractWindow {
private final @NotNull WindowUpdater windowUpdater;
//with default frame rate
- public UpdatingWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
- super(size, location, title);
+ public UpdatingWindow(@Nullable WindowSettings windowSettings) {
+ super(windowSettings);
windowUpdater = new WindowUpdater(this);
}
//with custom frame rate
- public UpdatingWindow(@Nullable Dimension size, @Nullable Point location, @Nullable String title,
- long frameRate) {
- super(size, location, title);
+ public UpdatingWindow(@Nullable WindowSettings windowSettings, long frameRate) {
+ super(windowSettings);
windowUpdater = new WindowUpdater(this, frameRate);
}
diff --git a/src/test/java/commonGraphics/WindowSettings.java b/src/test/java/commonGraphics/WindowSettings.java
new file mode 100644
index 0000000..164a418
--- /dev/null
+++ b/src/test/java/commonGraphics/WindowSettings.java
@@ -0,0 +1,54 @@
+package commonGraphics;
+
+import java.util.Objects;
+import java.awt.Dimension;
+import java.awt.Point;
+import javax.swing.WindowConstants;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+//
+public class WindowSettings {
+ private static final @NotNull Dimension DEFAULT_WINDOW_SIZE = new Dimension(1200, 850);
+ private static final @NotNull Point DEFAULT_WINDOW_LOCATION = new Point(50, 50);
+ private static final int DEFAULT_CLOSE_OPERATION = WindowConstants.EXIT_ON_CLOSE;
+ private static final @NotNull String DEFAULT_WINDOW_TITLE = "An unnamed window";
+ private final @NotNull Dimension windowSize;
+ private final @NotNull Point windowLocation;
+ private final int closeOperation;
+ private final @NotNull String windowTitle;
+
+ //
+ public WindowSettings(@Nullable Dimension size, @Nullable Point location, @Nullable String title) {
+ windowSize = Objects.requireNonNullElse(size, DEFAULT_WINDOW_SIZE);
+ windowLocation = Objects.requireNonNullElse(location, DEFAULT_WINDOW_LOCATION);
+ closeOperation = DEFAULT_CLOSE_OPERATION;
+ windowTitle = Objects.requireNonNullElse(title, DEFAULT_WINDOW_TITLE);
+ }
+
+ //
+ public WindowSettings() {
+ this(null, null, null);
+ }
+
+ //
+ public final @NotNull Dimension getWindowSize() {
+ return windowSize;
+ }
+
+ //
+ public final @NotNull Point getWindowLocation() {
+ return windowLocation;
+ }
+
+ //
+ public final int getCloseOperation() {
+ return closeOperation;
+ }
+
+ //
+ public final @NotNull String getWindowTitle() {
+ return windowTitle;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/baryGraphics/panels/CenteredDrawPanel.java b/src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
similarity index 95%
rename from src/test/java/baryGraphics/panels/CenteredDrawPanel.java
rename to src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
index a00f701..baf055c 100644
--- a/src/test/java/baryGraphics/panels/CenteredDrawPanel.java
+++ b/src/test/java/commonGraphics/panels/graphicalPanels/CenteredDrawPanel.java
@@ -1,4 +1,4 @@
-package baryGraphics.panels;
+package commonGraphics.panels.graphicalPanels;
import java.awt.Color;
diff --git a/src/test/java/baryGraphics/panels/ScaledDrawInterface.java b/src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
similarity index 93%
rename from src/test/java/baryGraphics/panels/ScaledDrawInterface.java
rename to src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
index e8d178e..6fb9f56 100644
--- a/src/test/java/baryGraphics/panels/ScaledDrawInterface.java
+++ b/src/test/java/commonGraphics/panels/graphicalPanels/ScaledDrawInterface.java
@@ -1,4 +1,4 @@
-package baryGraphics.panels;
+package commonGraphics.panels.graphicalPanels;
import org.jetbrains.annotations.NotNull;
diff --git a/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java b/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
index f694ae3..ef0b268 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/AbstractSectionPanel.java
@@ -7,7 +7,7 @@
import static commonGraphics.ColorUtils.TRANSPARENT_BLACK;
import commonGraphics.panels.FixedHorizontalPanel;
-//
+//a horizontal section for a vertical side-panel
public abstract class AbstractSectionPanel extends FixedHorizontalPanel {
//
public AbstractSectionPanel(int height,
diff --git a/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java b/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
index b9259d8..5f23663 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/AbstractSidePanel.java
@@ -8,7 +8,7 @@
import commonGraphics.panels.FixedVerticalPanel;
-//
+//an abstract vertically-fixed side-panel, intended to be used in the main panel
public abstract class AbstractSidePanel extends FixedVerticalPanel implements SectionContainerInterface {
//
public AbstractSidePanel(int width, @Nullable Color background,
diff --git a/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java b/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
index 0d95de9..e535dba 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/SectionContainerInterface.java
@@ -1,6 +1,6 @@
package commonGraphics.panels.sidePanels;
-//
+//for panels that contain section-panels
public interface SectionContainerInterface {
void addSections();
}
\ No newline at end of file
diff --git a/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java b/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
index 765919b..fecc1c5 100644
--- a/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
+++ b/src/test/java/commonGraphics/panels/sidePanels/commonLeftSidePanel/CommonLeftSidePanel.java
@@ -10,7 +10,7 @@
import commonGraphics.panels.sidePanels.AbstractSidePanel;
import commonGraphics.UpdatingWindow;
-//
+//a common left side-panel
public abstract class CommonLeftSidePanel extends AbstractSidePanel {
private static final int DEFAULT_PANEL_WIDTH = 200;
private static final @Nullable Color DIAGONAL_COLOR = null;
diff --git a/src/test/java/demo/graphics/DemoWindow.java b/src/test/java/demo/graphics/DemoWindow.java
index ab2b513..2c6bbc9 100644
--- a/src/test/java/demo/graphics/DemoWindow.java
+++ b/src/test/java/demo/graphics/DemoWindow.java
@@ -1,7 +1,5 @@
package demo.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.Color;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -19,9 +17,6 @@
//A graphical window for demo.
public final class DemoWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(1200, 850);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Bary window!";
private static final long FRAME_RATE = 60;
private static final @NotNull Color
MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
@@ -32,7 +27,7 @@ public final class DemoWindow extends UpdatingWindow {
//Creates a new window.
public DemoWindow(@NotNull BaryUniverse universe) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE, FRAME_RATE);
+ super(new DemoWindowSettings(), FRAME_RATE);
this.universe = universe;
observer = new Observer();
addPanels();
diff --git a/src/test/java/demo/graphics/DemoWindowSettings.java b/src/test/java/demo/graphics/DemoWindowSettings.java
new file mode 100644
index 0000000..80305ab
--- /dev/null
+++ b/src/test/java/demo/graphics/DemoWindowSettings.java
@@ -0,0 +1,20 @@
+package demo.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+public class DemoWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(1200, 850);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Bary window!";
+
+ //
+ DemoWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/planetTest/graphics/TestWindow.java b/src/test/java/planetTest/graphics/TestWindow.java
index fdfd3be..3240ffb 100644
--- a/src/test/java/planetTest/graphics/TestWindow.java
+++ b/src/test/java/planetTest/graphics/TestWindow.java
@@ -1,7 +1,5 @@
package planetTest.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.Color;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -16,9 +14,6 @@
//A graphical window for planetary testing purposes.
public final class TestWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Planet test";
private static final @NotNull Color
MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
MAIN_PANEL_BORDER_COLOR = getGray(40, 255);
@@ -26,11 +21,11 @@ public final class TestWindow extends UpdatingWindow {
//
public TestWindow(@NotNull PlanetContainer planetContainer) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE); //default frame rate
+ super(new TestWindowSettings()); //default frame rate
this.planetContainer = planetContainer;
//observer = new Observer();
addPanels();
- //addKeyListener(new DemoKeyListener(observer));
+ //addKeyListener();
revalidate();
startUpdating();
}
diff --git a/src/test/java/planetTest/graphics/TestWindowSettings.java b/src/test/java/planetTest/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..5e82574
--- /dev/null
+++ b/src/test/java/planetTest/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package planetTest.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+public class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(700, 500);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Planet test";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/planetTest/graphics/panels/CentralPanel.java b/src/test/java/planetTest/graphics/panels/CentralPanel.java
index 1771c83..8fb8a7e 100644
--- a/src/test/java/planetTest/graphics/panels/CentralPanel.java
+++ b/src/test/java/planetTest/graphics/panels/CentralPanel.java
@@ -6,57 +6,28 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import baryGraphics.panels.CenteredDrawPanel;
-import baryGraphics.panels.ScaledDrawInterface;
-import planetTest.planetModel.Planet;
import planetTest.planetModel.PlanetContainer;
+import planetTest.planetGraphics.PlanetDrawPanel;
//
-public final class CentralPanel extends CenteredDrawPanel implements ScaledDrawInterface {
- private static final double DEFAULT_SCALE = 2.0;
- private static final @NotNull Color
- BACKGROUND = Color.black,
- TEXT_COLOR = Color.white;
- private double scale;
- private final @NotNull PlanetContainer planetContainer;
+public final class CentralPanel extends PlanetDrawPanel {
+ private static final @NotNull Color TEXT_COLOR = Color.white;
//
public CentralPanel(@NotNull PlanetContainer planetContainer,
@Nullable Color borderColor, @Nullable Color diagonalColor) {
super(
- BACKGROUND,
+ planetContainer,
borderColor, true,
diagonalColor, true);
- scale = DEFAULT_SCALE;
- this.planetContainer = planetContainer;
- }
-
- //
- @Override
- public double getScale() {
- return scale;
}
//
@Override
public void mainPaint(@NotNull Graphics g) {
- @Nullable Planet planet = planetContainer.getPlanet();
- if (planet != null) paintPlanet(g, planet);
+ super.mainPaint(g);
g.setColor(TEXT_COLOR);
g.drawString("A planet test", 100, 100);
- // paint more stuff here, if needed
- }
-
- private void paintPlanet(@NotNull Graphics g, @NotNull Planet planet) {
- g.setColor(planet.getColor());
- double scaledRadius = scaleValue(planet.getRadius());
- double @NotNull []
- relativeLocation = new double[2], // relative to yet non-implemented observer
- drawLocation = applyDrawCenterOffset(scaleLocation(relativeLocation));
- int scaledIntegerDiameter = (int) (scaledRadius * 2);
- g.fillOval(
- (int) (drawLocation[0] - scaledRadius),
- (int) (drawLocation[1] - scaledRadius),
- scaledIntegerDiameter, scaledIntegerDiameter);
+ // Paint more stuff here, if needed.
}
}
\ No newline at end of file
diff --git a/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java b/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
index cd2a8ff..7c6134d 100644
--- a/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
+++ b/src/test/java/planetTest/graphics/panels/leftSidePanel/ThirdSection.java
@@ -29,9 +29,9 @@ final class ThirdSection extends AbstractSectionPanel {
//
@Override
public void mainPaint(@NotNull Graphics g) {
- g.setColor(TEXT_COLOR);
- drawInfoLine(g, "Blank section", 1);
g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section", 1);
+ g.setColor(TEXT_COLOR);
drawInfoLine(g, "For future use", 2);
// Paint more stuff here, if needed.
}
diff --git a/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
new file mode 100644
index 0000000..a67a3e7
--- /dev/null
+++ b/src/test/java/planetTest/planetGraphics/PlanetDrawPanel.java
@@ -0,0 +1,82 @@
+package planetTest.planetGraphics;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
+import planetTest.planetModel.Planet;
+import planetTest.planetModel.PlanetContainer;
+
+public class PlanetDrawPanel extends CenteredDrawPanel implements ScaledDrawInterface {
+ private static final double DEFAULT_SCALE = 2.0;
+ private static final @NotNull Color
+ BACKGROUND = Color.black,
+ TEXT_COLOR = Color.white,
+ NULL_PLANET_COLOR = getGray(80, 255);
+ private static final double NULL_PLANET_DIAMETER_PROPORTION = 0.4;
+ @SuppressWarnings("FieldMayBeFinal")
+ private double scale;
+ private final @NotNull PlanetContainer planetContainer;
+
+ //
+ public PlanetDrawPanel(@NotNull PlanetContainer planetContainer,
+ @Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(
+ BACKGROUND,
+ borderColor, drawBorders,
+ diagonalColor, drawDiagonals);
+ scale = DEFAULT_SCALE;
+ this.planetContainer = planetContainer;
+ }
+
+ //
+ @Override
+ public double getScale() {
+ return scale;
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ @Nullable Planet planet = planetContainer.getPlanet();
+ if (planet == null) {
+ paintNullPlanet(g);
+ } else {
+ paintPlanet(g, planet);
+ }
+ // Paint more stuff here, if needed.
+ }
+
+ private void paintNullPlanet(@NotNull Graphics g) {
+ g.setColor(NULL_PLANET_COLOR);
+ double
+ minPanelSize = Math.min(getWidth(), getHeight()),
+ diameter = minPanelSize * NULL_PLANET_DIAMETER_PROPORTION,
+ radius = diameter / 2;
+ double @NotNull [] center = getPanelCenter();
+ g.drawOval((int) (center[0] - radius), (int) (center[1] - radius), (int) diameter, (int) diameter);
+
+ g.setColor(TEXT_COLOR);
+ int @NotNull [] textOffset = new int [] {-28, 5};
+ g.drawString("Null planet", (int) (center[0] + textOffset[0]), (int) (center[1] + textOffset[1]));
+ }
+
+ private void paintPlanet(@NotNull Graphics g, @NotNull Planet planet) {
+ g.setColor(planet.getColor());
+ double scaledRadius = scaleValue(planet.getRadius());
+ double @NotNull []
+ relativeLocation = new double[2], // relative to yet non-implemented observer
+ drawLocation = applyDrawCenterOffset(scaleLocation(relativeLocation));
+ int scaledIntegerDiameter = (int) (scaledRadius * 2);
+ g.fillOval(
+ (int) (drawLocation[0] - scaledRadius),
+ (int) (drawLocation[1] - scaledRadius),
+ scaledIntegerDiameter, scaledIntegerDiameter);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/PlayerTest.java b/src/test/java/playerTest/PlayerTest.java
new file mode 100644
index 0000000..e1edc1e
--- /dev/null
+++ b/src/test/java/playerTest/PlayerTest.java
@@ -0,0 +1,17 @@
+package playerTest;
+
+import graphicalTestAbstraction.GraphicalTest;
+import playerTest.graphics.TestWindow;
+
+//
+public class PlayerTest extends GraphicalTest {
+ //
+ public static void main(String[] args) {
+ new PlayerTest();
+ }
+
+ //
+ public PlayerTest() {
+ super(new TestWindow());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/TestWindow.java b/src/test/java/playerTest/graphics/TestWindow.java
new file mode 100644
index 0000000..a65fd63
--- /dev/null
+++ b/src/test/java/playerTest/graphics/TestWindow.java
@@ -0,0 +1,41 @@
+package playerTest.graphics;
+
+import java.awt.Color;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.NotNull;
+
+import static commonGraphics.ColorUtils.getGray;
+import commonGraphics.UpdatingWindow;
+import playerTest.graphics.panels.leftSidePanel.LeftSidePanel;
+import playerTest.graphics.panels.CentralPanel;
+import playerTest.graphics.panels.rightSidePanel.RightSidePanel;
+
+//
+public final class TestWindow extends UpdatingWindow {
+ private static final @NotNull Color
+ MAIN_PANEL_BACKGROUND_COLOR = getGray(50, 255),
+ MAIN_PANEL_BORDER_COLOR = getGray(40, 255);
+
+ //
+ public TestWindow() {
+ super(new TestWindowSettings());
+ //observer = new Observer();
+ addPanels();
+ //addKeyListener();
+ revalidate();
+ startUpdating();
+ }
+
+ //
+ @Override
+ public void addPanels() {
+ LayoutManager layout = new BoxLayout(getContentPane(), BoxLayout.X_AXIS);
+ getContentPane().setLayout(layout);
+ add(new LeftSidePanel(this, MAIN_PANEL_BACKGROUND_COLOR, MAIN_PANEL_BORDER_COLOR));
+ add(new CentralPanel(MAIN_PANEL_BORDER_COLOR, MAIN_PANEL_BORDER_COLOR));
+ add(new RightSidePanel(MAIN_PANEL_BACKGROUND_COLOR, MAIN_PANEL_BORDER_COLOR));
+ // Add more panels here, if needed.
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/TestWindowSettings.java b/src/test/java/playerTest/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..6be7b43
--- /dev/null
+++ b/src/test/java/playerTest/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package playerTest.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+final class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(900, 700);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Player test";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/CentralPanel.java b/src/test/java/playerTest/graphics/panels/CentralPanel.java
new file mode 100644
index 0000000..e5bfdf6
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/CentralPanel.java
@@ -0,0 +1,43 @@
+package playerTest.graphics.panels;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.graphicalPanels.CenteredDrawPanel;
+import commonGraphics.panels.graphicalPanels.ScaledDrawInterface;
+
+//
+public final class CentralPanel extends CenteredDrawPanel implements ScaledDrawInterface {
+ private static final double DEFAULT_SCALE = 2.0;
+ private static final @NotNull Color
+ BACKGROUND = Color.black,
+ TEXT_COLOR = Color.white;
+ @SuppressWarnings("FieldMayBeFinal")
+ private double scale;
+
+ //
+ public CentralPanel(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ BACKGROUND,
+ borderColor, false,
+ diagonalColor, true);
+ scale = DEFAULT_SCALE;
+ }
+
+ //
+ @Override
+ public double getScale() {
+ return scale;
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(TEXT_COLOR);
+ g.drawString("A player test", 100, 100);
+ // Paint more stuff here, if needed.
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java
new file mode 100644
index 0000000..9712410
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/FirstSection.java
@@ -0,0 +1,44 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class FirstSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ FirstSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "First section", 1);
+ //TODO: improve this
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java
new file mode 100644
index 0000000..7d6e44d
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/LeftSidePanel.java
@@ -0,0 +1,31 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.UpdatingWindow;
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonLeftSidePanel;
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonTopSection;
+
+//
+public final class LeftSidePanel extends CommonLeftSidePanel {
+ private static final @Nullable Color DIAGONAL_COLOR = null;
+
+ //uses default width
+ public LeftSidePanel(@NotNull UpdatingWindow window,
+ @Nullable Color background, @Nullable Color borderColor) {
+ super(
+ window, background,
+ borderColor, true, true,
+ DIAGONAL_COLOR, false, false);
+ addSections();
+ }
+
+ //
+ @Override
+ public @NotNull CommonTopSection getNewTopSection() {
+ return new TopSection(getSectionBorderColor(), getSectionDiagonalColor());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java
new file mode 100644
index 0000000..845c862
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/SecondSection.java
@@ -0,0 +1,44 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class SecondSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ SecondSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Second section", 1);
+ //TODO: improve this
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java
new file mode 100644
index 0000000..90dffec
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/ThirdSection.java
@@ -0,0 +1,42 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//a blank section for future use
+final class ThirdSection extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ ThirdSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(
+ PANEL_HEIGHT,
+ borderColor, true,
+ diagonalColor, false);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Third section", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java b/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java
new file mode 100644
index 0000000..10d8376
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/leftSidePanel/TopSection.java
@@ -0,0 +1,33 @@
+package playerTest.graphics.panels.leftSidePanel;
+
+import javax.swing.BoxLayout;
+import java.awt.Color;
+import java.awt.LayoutManager;
+
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.sidePanels.commonLeftSidePanel.CommonTopSection;
+
+//Necessary for bottom-fixed bottom section;
+final class TopSection extends CommonTopSection {
+ //
+ TopSection(@Nullable Color borderColor, @Nullable Color diagonalColor) {
+ super(borderColor, diagonalColor);
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ @Nullable Color
+ borderColor = getBorderColor(),
+ diagonalColor = getDiagonalColor();
+ add(new FirstSection(borderColor, diagonalColor));
+ add(new SecondSection(borderColor, diagonalColor));
+ add(new ThirdSection(borderColor, diagonalColor));
+ // Add more sections here, if needed.
+ revalidate();
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java
new file mode 100644
index 0000000..1112d6e
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/BottomSection.java
@@ -0,0 +1,51 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.TRANSPARENT_BLACK;
+import commonGraphics.panels.MinimalPanel;
+import commonGraphics.panels.sidePanels.SectionContainerInterface;
+
+//
+final class BottomSection extends MinimalPanel implements SectionContainerInterface {
+ private static final boolean
+ DRAW_PANEL_BORDERS = false,
+ DRAW_PANEL_DIAGONALS = false;
+ private final @Nullable Color sectionBorderColor, sectionDiagonalColor;
+ private final boolean drawSectionBorders, drawSectionDiagonals;
+
+ //
+ BottomSection(@Nullable Color borderColor, boolean drawSectionBorders,
+ @Nullable Color diagonalColor, boolean drawSectionDiagonals) {
+ super(TRANSPARENT_BLACK, borderColor, DRAW_PANEL_BORDERS, diagonalColor, DRAW_PANEL_DIAGONALS);
+ sectionBorderColor = borderColor;
+ this.drawSectionBorders = drawSectionBorders;
+ sectionDiagonalColor = diagonalColor;
+ this.drawSectionDiagonals = drawSectionDiagonals;
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ add(new Section1(
+ sectionBorderColor, drawSectionBorders,
+ sectionDiagonalColor, drawSectionDiagonals));
+ add(new Section2(
+ sectionBorderColor, drawSectionBorders,
+ sectionDiagonalColor, drawSectionDiagonals));
+ revalidate();
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {}
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java
new file mode 100644
index 0000000..0496b33
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/RightSidePanel.java
@@ -0,0 +1,49 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.LayoutManager;
+import javax.swing.BoxLayout;
+
+import org.jetbrains.annotations.Nullable;
+
+import commonGraphics.panels.sidePanels.AbstractSidePanel;
+
+//
+public class RightSidePanel extends AbstractSidePanel {
+ private static final int PANEL_WIDTH = 200;
+ private static final boolean
+ DRAW_SECTION_BORDERS = true,
+ DRAW_SECTION_DIAGONALS = true;
+ private final @Nullable Color sectionBorderColor, sectionDiagonalColor;
+
+ //
+ public RightSidePanel(@Nullable Color background, @Nullable Color borderColor) {
+ super(
+ PANEL_WIDTH, background,
+ borderColor, true,
+ null, false);
+ this.sectionBorderColor = borderColor;
+ this.sectionDiagonalColor = borderColor;
+ addSections();
+ }
+
+ //
+ @Override
+ public void addSections() {
+ LayoutManager layout = new BoxLayout(this, BoxLayout.Y_AXIS);
+ setLayout(layout);
+ add(new TopSection(
+ getTopSectionHeight(),
+ sectionBorderColor, DRAW_SECTION_BORDERS,
+ sectionDiagonalColor, DRAW_SECTION_DIAGONALS));
+ add(new BottomSection(
+ sectionBorderColor, DRAW_SECTION_BORDERS,
+ sectionDiagonalColor, DRAW_SECTION_DIAGONALS));
+ revalidate();
+ }
+
+ @SuppressWarnings("SuspiciousNameCombination")
+ private int getTopSectionHeight() {
+ return PANEL_WIDTH; //for a square panel
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java
new file mode 100644
index 0000000..577d448
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section1.java
@@ -0,0 +1,39 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class Section1 extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ Section1(@Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(PANEL_HEIGHT, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section 1", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java
new file mode 100644
index 0000000..64756a9
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/Section2.java
@@ -0,0 +1,39 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class Section2 extends AbstractSectionPanel {
+ private static final int PANEL_HEIGHT = 100;
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ Section2(@Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(PANEL_HEIGHT, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Blank section 2", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "For future use", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java b/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java
new file mode 100644
index 0000000..76a4841
--- /dev/null
+++ b/src/test/java/playerTest/graphics/panels/rightSidePanel/TopSection.java
@@ -0,0 +1,40 @@
+package playerTest.graphics.panels.rightSidePanel;
+
+import java.awt.Color;
+import java.awt.Graphics;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import static commonGraphics.ColorUtils.getGray;
+import static commonGraphics.StringUtils.drawNumberedString;
+import commonGraphics.panels.sidePanels.AbstractSectionPanel;
+
+//
+final class TopSection extends AbstractSectionPanel {
+ private static final int @NotNull [] TEXT_LOCATION = new int [] {10, 10};
+ private static final @NotNull Color
+ HEADING_COLOR = Color.white,
+ TEXT_COLOR = getGray(170, 255);
+
+ //
+ TopSection(int height,
+ @Nullable Color borderColor, boolean drawBorders,
+ @Nullable Color diagonalColor, boolean drawDiagonals) {
+ super(height, borderColor, drawBorders, diagonalColor, drawDiagonals);
+ }
+
+ //
+ @Override
+ public void mainPaint(@NotNull Graphics g) {
+ g.setColor(HEADING_COLOR);
+ drawInfoLine(g, "Top section", 1);
+ g.setColor(TEXT_COLOR);
+ drawInfoLine(g, "Coming soon...", 2);
+ // Paint more stuff here, if needed.
+ }
+
+ private void drawInfoLine(@NotNull Graphics g, @Nullable String line, int lineNumber) {
+ drawNumberedString(g, line, TEXT_LOCATION, lineNumber);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/playerTest/models/Character.java b/src/test/java/playerTest/models/Character.java
new file mode 100644
index 0000000..d8070d5
--- /dev/null
+++ b/src/test/java/playerTest/models/Character.java
@@ -0,0 +1,9 @@
+package playerTest.models;
+
+//a game character, a map entity
+public class Character {
+ //
+ Character() {
+ //
+ }
+}
diff --git a/src/test/java/playerTest/models/CharacterContainer.java b/src/test/java/playerTest/models/CharacterContainer.java
new file mode 100644
index 0000000..cc5b746
--- /dev/null
+++ b/src/test/java/playerTest/models/CharacterContainer.java
@@ -0,0 +1,24 @@
+package playerTest.models;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+//functions as a map
+public class CharacterContainer {
+ private final @NotNull List<@NotNull Character> characters;
+
+ //
+ CharacterContainer() {
+ characters = new ArrayList<>();
+ }
+
+ void add(@NotNull Character character) {
+ characters.add(character);
+ }
+
+ @NotNull List<@NotNull Character> getCharacters() {
+ return characters;
+ }
+}
diff --git a/src/test/java/playerTest/models/CharacterUpdater.java b/src/test/java/playerTest/models/CharacterUpdater.java
new file mode 100644
index 0000000..f412df1
--- /dev/null
+++ b/src/test/java/playerTest/models/CharacterUpdater.java
@@ -0,0 +1,38 @@
+package playerTest.models;
+
+import ThreadAbstraction.AbstractUpdater;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+//
+public final class CharacterUpdater extends AbstractUpdater {
+ private final @NotNull CharacterContainer characters;
+
+ //
+ CharacterUpdater(@NotNull CharacterContainer characters) {
+ this.characters = characters;
+ }
+
+ //
+ @Override
+ public void update() {
+ @NotNull List<@NotNull Character> characterList = characters.getCharacters();
+ for (@NotNull Character character : characterList) {
+ updateSingleCharacter(character);
+ }
+ }
+
+ private void updateSingleCharacter(@NotNull Character character) {
+ //TODO: update characters here
+ //semi-ordered below:
+
+ //analyze situation
+ //check AI or user input
+ //apply forces, accelerations, etc.
+
+ //precalculate trajectory
+ //check collisions
+ //apply coordinate, velocity etc. changes
+ }
+}
diff --git a/src/test/java/playerTest/models/Player.java b/src/test/java/playerTest/models/Player.java
new file mode 100644
index 0000000..8ce0a74
--- /dev/null
+++ b/src/test/java/playerTest/models/Player.java
@@ -0,0 +1,21 @@
+package playerTest.models;
+
+import org.jetbrains.annotations.Nullable;
+
+//
+public class Player {
+ private @Nullable Character character;
+
+ //
+ Player() {
+ //
+ }
+
+ public void setCharacter(@Nullable Character character) {
+ this.character = character;
+ }
+
+ public @Nullable Character getCharacter() {
+ return character;
+ }
+}
diff --git a/src/test/java/playerTest/models/PlayerUpdater.java b/src/test/java/playerTest/models/PlayerUpdater.java
new file mode 100644
index 0000000..6ad2289
--- /dev/null
+++ b/src/test/java/playerTest/models/PlayerUpdater.java
@@ -0,0 +1,20 @@
+package playerTest.models;
+
+import ThreadAbstraction.AbstractUpdater;
+import org.jetbrains.annotations.NotNull;
+
+//
+public final class PlayerUpdater extends AbstractUpdater {
+ private final @NotNull Player player;
+
+ //
+ PlayerUpdater(@NotNull Player player) {
+ this.player = player;
+ }
+
+ //
+ @Override
+ public void update() {
+ //TODO: update player here
+ }
+}
diff --git a/src/test/java/test2/graphics/TestWindow.java b/src/test/java/test2/graphics/TestWindow.java
index 99b13c4..ebe0a84 100644
--- a/src/test/java/test2/graphics/TestWindow.java
+++ b/src/test/java/test2/graphics/TestWindow.java
@@ -1,7 +1,5 @@
package test2.graphics;
-import java.awt.Point;
-import java.awt.Dimension;
import java.awt.LayoutManager;
import javax.swing.BoxLayout;
@@ -13,14 +11,11 @@
//A graphical window for testing purposes.
public final class TestWindow extends UpdatingWindow {
- private static final @NotNull Dimension WINDOW_SIZE = new Dimension(400, 300);
- private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
- private static final @NotNull String WINDOW_TITLE = "Test 2";
private final @NotNull BaryUniverse universe;
//
public TestWindow(@NotNull BaryUniverse universe) {
- super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE); //default frame rate
+ super(new TestWindowSettings()); //default frame rate
this.universe = universe;
//observer = new Observer();
addPanels();
diff --git a/src/test/java/test2/graphics/TestWindowSettings.java b/src/test/java/test2/graphics/TestWindowSettings.java
new file mode 100644
index 0000000..2d05a8f
--- /dev/null
+++ b/src/test/java/test2/graphics/TestWindowSettings.java
@@ -0,0 +1,20 @@
+package test2.graphics;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.jetbrains.annotations.NotNull;
+
+import commonGraphics.WindowSettings;
+
+//
+final class TestWindowSettings extends WindowSettings {
+ private static final @NotNull Dimension WINDOW_SIZE = new Dimension(400, 300);
+ private static final @NotNull Point WINDOW_LOCATION = new Point(50, 50);
+ private static final @NotNull String WINDOW_TITLE = "Test 2";
+
+ //
+ TestWindowSettings() {
+ super(WINDOW_SIZE, WINDOW_LOCATION, WINDOW_TITLE);
+ }
+}
\ No newline at end of file