diff --git a/src/projlab/AsteroidObserver.java b/src/projlab/AsteroidObserver.java index 62490e4bfc5e29aa6cc10154e37b2b2801b21f24..f24000b75cabddbd270f2b1da6cc4635f7aef44f 100644 --- a/src/projlab/AsteroidObserver.java +++ b/src/projlab/AsteroidObserver.java @@ -5,17 +5,47 @@ package projlab; */ @Docs(changed = true) public abstract class AsteroidObserver { + /** + * Entitás odamozgáskor elsütött metódus. + * @param a melyik aszteroidára történt a mozgás + * @param e ki mozgott + */ void entityMovedTo(Asteroid a, Entity e){} + /** + * Entitás mozgásakor elsütött metódus. + * @param a melyik aszteroidáról történt a mozgás + * @param e ki mozgott + */ void entityMovedFrom(Asteroid a, Entity e){} + /** + * Aszteroida felrobbanásakor elsütött metódus. + * @param a melyik aszteroidával történt az esemény + */ void asteroidExploded(Asteroid a){} + /** + * Aszteroida megfúrásakor elsütött metódus. + * @param a melyik aszteroidával történt az esemény + */ void asteroidDrilled(Asteroid a){} + /** + * Aszteroida magjának megváltozásakor elsütött metódus. + * @param a melyik aszteroidával történt az esemény + */ void asteroidCoreChanged(Asteroid a){} + /** + * Aszteroida napközelségének megváltozásakor elsütött metódus. + * @param a melyik aszteroidával történt az esemény + */ void asteroidNearSunChanged(Asteroid a){} + /** + * Napszél esetén elsütött metódus. + * @param a melyik aszteroidával történt az esemény + */ void asteroidSolarFlared(Asteroid a){} } diff --git a/src/projlab/GUI.java b/src/projlab/GUI.java index 5880949aa62f6c8465e27ceeee799c8018ba9d5e..1bdaf38ca86bb23f4fb6913207815718b413198d 100644 --- a/src/projlab/GUI.java +++ b/src/projlab/GUI.java @@ -43,6 +43,10 @@ public class GUI extends Application { */ private Thread t; + /** + * Elindítja a játékot. + * @param primaryStage kezdőfázis + */ @Override public void start(Stage primaryStage) { primaryStage.setTitle("Projlab"); @@ -91,8 +95,14 @@ public class GUI extends Application { s1.setInventory(materialList); } - @Docs(uml = "GUI +-- GUI.MainRunnable") + /** + * A fő szál. + */ + @Docs(changed = true, uml = "GUI +-- GUI.MainRunnable") private static class MainRunnable implements Runnable { + /** + * Elindítja a fő szálat. + */ @Override public void run() { for (var run = true; run = Game.isRun();) { diff --git a/src/projlab/GameObserver.java b/src/projlab/GameObserver.java index cdadb417968da99fc35db4f75ee07b3030137755..e9f6611ec48f66e069528326c8f1ed1a0a997fb0 100644 --- a/src/projlab/GameObserver.java +++ b/src/projlab/GameObserver.java @@ -3,8 +3,15 @@ package projlab; /** * Az GUI működéséhez szükséges megfigyelők. */ +@Docs(changed = true) public abstract class GameObserver { + /** + * Vesztés esetén elsütött esemény. + */ void lose(){} + /** + * Győzelem esetén elsütött esemény. + */ void win(){} } diff --git a/src/projlab/InventoryChooserPanel.java b/src/projlab/InventoryChooserPanel.java index 4317ed75a50fba9c0d49a1bcf1102a48e824ec51..46e63b6547cb6132f9e629aa905f633fa2fac6ca 100644 --- a/src/projlab/InventoryChooserPanel.java +++ b/src/projlab/InventoryChooserPanel.java @@ -15,7 +15,12 @@ import java.util.Map; /** * A telepes tárolójának kiválasztására szolgáló GUI-s panel. */ +@Docs(changed = true) public class InventoryChooserPanel extends HBox { + + /** + * Aktuális fázis. + */ private Stage stage; /** @@ -40,16 +45,27 @@ public class InventoryChooserPanel extends HBox { /** * A nyersanyag kiválasztása után ellőt esemény. */ + @Docs(changed = true) public interface InventoryChosen { + /** + * Nyersanyag kiválasztásakor ellőtt esemény. + */ void chosen(Material material); } /** * A kiválasztást kezelő segédosztály. */ - @Docs(uml = "InventoryChooserPanel +-- InventoryChooserPanel.ChooseHandler") + @Docs(uml = "InventoryChooserPanel +-- InventoryChooserPanel.ChooseHandler", changed = true) public class ChooseHandler implements EventHandler<MouseEvent> { + /** + * Tárolóválasztó + */ private final InventoryChosen ch; + + /** + * Nyersanyag + */ private final Material mat; public ChooseHandler(Material m, InventoryChosen c) { @@ -57,6 +73,9 @@ public class InventoryChooserPanel extends HBox { ch = c; } + /** + * Egérkattintásra értesíti a fő ablakot a választott anyagról. + */ @Override public void handle(MouseEvent mouseEvent) { ch.chosen(mat); diff --git a/src/projlab/MainPanel.java b/src/projlab/MainPanel.java index 203849b47efcefdf2be5bebbde270a398542ba54..1dfd9879318d35c0a4e8261c1c9e45288484777d 100644 --- a/src/projlab/MainPanel.java +++ b/src/projlab/MainPanel.java @@ -18,14 +18,21 @@ import java.util.Map; /** * A GUI központi eleme, amin a játék történik. */ +@Docs(changed = true) public class MainPanel extends AnchorPane { /** * A meglátogatható objektumok, amelyek gombként jelennek meg. */ private final Map<Visitable, Button> visitables = new HashMap<>(); + /** + * Az aszteroidákat összekötő vonalak. + */ private final ArrayList<Line> lines = new ArrayList<>(); + /** + * A felhasználói felületre kirajzolja a vonalakat. + */ private void drawLines() { var children = getChildren(); for (var l: lines) { @@ -54,6 +61,9 @@ public class MainPanel extends AnchorPane { } } + /** + * Legenerált aszteroidák száma. + */ private final int astAmount = 10; /** @@ -73,6 +83,11 @@ public class MainPanel extends AnchorPane { Game.addObserver(obs); } + /** + * Megadja, hogy egy adott Visitable-nek hol kell elhelyezkednie a képernyőn, hogy esztétikus legyen a megjelenítés. + * @param v + * @return + */ private Coordinates getLocation(Visitable v) { var h = getHeight()-80; var w = getWidth()-80; @@ -81,6 +96,12 @@ public class MainPanel extends AnchorPane { return new Coordinates(x, y); } + /** + * Hozzáad egy GUI elemet az ablakhoz. + * @param n + * @param x + * @param y + */ private void add(Node n, double x, double y) { AnchorPane.setLeftAnchor(n, x); AnchorPane.setTopAnchor(n, y); @@ -207,7 +228,7 @@ public class MainPanel extends AnchorPane { /** * Látogatható objektum kattintás kezelése. */ - @Docs(uml = "MainPanel +-- MainPanel.VisitableClickedHandler") + @Docs(uml = "MainPanel +-- MainPanel.VisitableClickedHandler", changed = true) private class VisitableClickedHandler implements EventHandler<MouseEvent> { private final Visitable vis; public VisitableClickedHandler(Visitable v) { @@ -225,7 +246,7 @@ public class MainPanel extends AnchorPane { /** * A GUI változtatásához szükséges megfigyelő. */ - @Docs(uml = "MainPanel +-- MainPanel.AsteroidGUIObserver") + @Docs(uml = "MainPanel +-- MainPanel.AsteroidGUIObserver", changed = true) private class AsteroidGUIObserver extends AsteroidObserver { @Override @@ -276,9 +297,9 @@ public class MainPanel extends AnchorPane { } /** - * Segédosztály a telepes megváltoztatásához. + * A telepes megváltozásait figyelő osztály. */ - @Docs(uml = "MainPanel +-- MainPanel.SettlerChanged") + @Docs(uml = "MainPanel +-- MainPanel.SettlerChanged", changed = true) private class SettlerChanged extends SettlerObserver { @Override @@ -309,7 +330,7 @@ public class MainPanel extends AnchorPane { /** * Az GUI működéséhez szükséges megfigyelők. */ - @Docs(uml = "MainPanel +-- MainPanel.PortalGUIObserver") + @Docs(uml = "MainPanel +-- MainPanel.PortalGUIObserver", changed = true) private class PortalGUIObserver extends PortalObserver { @Override public void portalMoved(Visitable newAsteroid, Portal p) { @@ -332,7 +353,7 @@ public class MainPanel extends AnchorPane { /** * Az GUI működéséhez szükséges megfigyelők. */ - @Docs(uml = "MainPanel +-- MainPanel.WinLoseObserver") + @Docs(uml = "MainPanel +-- MainPanel.WinLoseObserver", changed = true) private class WinLoseObserver extends GameObserver { private void replaceAllWithTxt(String text) { Platform.runLater(() -> { diff --git a/src/projlab/PortalObserver.java b/src/projlab/PortalObserver.java index 705e4d238afc04dbf4ed96c1af36729f5054ac61..cba98f8a578b1cd0cfec628a9d69b22e78019fe6 100644 --- a/src/projlab/PortalObserver.java +++ b/src/projlab/PortalObserver.java @@ -3,10 +3,24 @@ package projlab; /** * Az GUI működéséhez szükséges megfigyelők. */ +@Docs(changed = true) public abstract class PortalObserver { + /** + * Kerge portál mozgásakor ellőtt esemény. + * @param newAsteroid + * @param p + */ void portalMoved(Visitable newAsteroid, Portal p){} + /** + * Portál megkergülésekor ellőtt esemény. + * @param p + */ void portalBecomeKerge(Portal p){} + /** + * Portál felrobbanásakor ellőtt esemény. + * @param p + */ void portalExploded(Portal p){} } diff --git a/src/projlab/SettlerControlPanel.java b/src/projlab/SettlerControlPanel.java index 8880997b9826289952636b0fdb958b1a173df5d1..eb4004478f2770e92932f27ba9b31a881f0456b2 100644 --- a/src/projlab/SettlerControlPanel.java +++ b/src/projlab/SettlerControlPanel.java @@ -12,6 +12,7 @@ import java.util.concurrent.locks.ReentrantLock; /** * A telepes irányításához szükséges vezérlőpanel. Ezen vannak a fúrás, bányászás stb. gombok. */ +@Docs(changed = true) public class SettlerControlPanel extends HBox { private final Button mine = new Button("mine"); private final Button drill = new Button("drill"); @@ -23,6 +24,9 @@ public class SettlerControlPanel extends HBox { private final ReentrantLock roundDone = new ReentrantLock(); + /** + * Éppen az a telepes, amelyiknek a körében tartunk. + */ private Settler settler = null; /** @@ -56,7 +60,7 @@ public class SettlerControlPanel extends HBox { /** * Bányászás gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.MineBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.MineBtnEvent", changed = true) private class MineBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -64,6 +68,9 @@ public class SettlerControlPanel extends HBox { } } + /** + * Fúrás gomb lenyomása. + */ public void pushedDrillBtn() { var success = settler.drill(); if (success) { @@ -74,7 +81,7 @@ public class SettlerControlPanel extends HBox { /** * Fúrás gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.DrillBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.DrillBtnEvent", changed = true) private class DrillBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -82,7 +89,7 @@ public class SettlerControlPanel extends HBox { } } - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.ChosenHandler") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.ChosenHandler", changed = true) private class ChosenHandler implements InventoryChooserPanel.InventoryChosen { @Override public void chosen(Material material) { @@ -105,7 +112,7 @@ public class SettlerControlPanel extends HBox { /** * Nyersanyag visszahelyezése gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.PutBackBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.PutBackBtnEvent", changed = true) private class PutBackBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -126,7 +133,7 @@ public class SettlerControlPanel extends HBox { /** * Robot építése gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.BuildRobotBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.BuildRobotBtnEvent", changed = true) private class BuildRobotBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -147,7 +154,7 @@ public class SettlerControlPanel extends HBox { /** * Teleportkapu építése gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.BuildPortalBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.BuildPortalBtnEvent", changed = true) private class BuildPortalBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -169,7 +176,7 @@ public class SettlerControlPanel extends HBox { /** * Teleportkapu lerakása gomb lenyomása. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.PlacePortalBtnEvent") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.PlacePortalBtnEvent", changed = true) private class PlacePortalBtnEvent implements EventHandler<MouseEvent> { @Override public void handle(MouseEvent mouseEvent) { @@ -194,6 +201,9 @@ public class SettlerControlPanel extends HBox { } catch (InterruptedException ignored) {} } + /** + * A telepes körében ellőtt esemény. + */ public void settlerTicked() { waitTick(); } @@ -201,7 +211,7 @@ public class SettlerControlPanel extends HBox { /** * Segédosztály a telepesek léptetésének kezeléséhez. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.SettlerTickHandler") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.SettlerTickHandler", changed = true) public class SettlerTickHandler extends SettlerObserver { @Override @@ -223,7 +233,7 @@ public class SettlerControlPanel extends HBox { /** * Segédosztály a nyerés/vesztés kezeléséhez. */ - @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.WinLoseHandler") + @Docs(uml = "SettlerControlPanel +-- SettlerControlPanel.WinLoseHandler", changed = true) public class WinLoseHandler extends GameObserver { private void clear() { diff --git a/src/projlab/SettlerInfoPanel.java b/src/projlab/SettlerInfoPanel.java index eb372de5e6095f2f64d680fe17b0d0c65f12dab5..0910b6d27b6f5d549793ceab76ef336970e40456 100644 --- a/src/projlab/SettlerInfoPanel.java +++ b/src/projlab/SettlerInfoPanel.java @@ -6,6 +6,7 @@ import javafx.scene.control.Label; /** * A telepes információinak (tároló, stb) szolgáló panel. */ +@Docs(changed = true) public class SettlerInfoPanel extends Label { public SettlerInfoPanel() { super("No settlers"); @@ -39,7 +40,7 @@ public class SettlerInfoPanel extends Label { /** * A telepessel történő események kezelésére szolgáló segédosztály. */ - @Docs(uml = "SettlerInfoPanel +-- SettlerInfoPanel.SettlerEventHandler") + @Docs(uml = "SettlerInfoPanel +-- SettlerInfoPanel.SettlerEventHandler", changed = true) public class SettlerEventHandler extends SettlerObserver { @Override @@ -69,9 +70,12 @@ public class SettlerInfoPanel extends Label { /** * Segédosztály a nyerés/vesztés kezeléséhez. */ - @Docs(uml = "SettlerInfoPanel +-- SettlerInfoPanel.WinLoseHandler") + @Docs(uml = "SettlerInfoPanel +-- SettlerInfoPanel.WinLoseHandler", changed = true) public class WinLoseHandler extends GameObserver { + /** + * Letörli a képernyőt. + */ private void clear() { var children = getChildren(); Platform.runLater(() -> children.clear()); diff --git a/src/projlab/SettlerObserver.java b/src/projlab/SettlerObserver.java index 2c6429aaae62372d27de9efb314a441b63a42063..b666b8d306147c231493851ed8692d6114536116 100644 --- a/src/projlab/SettlerObserver.java +++ b/src/projlab/SettlerObserver.java @@ -3,12 +3,30 @@ package projlab; /** * Az GUI működéséhez szükséges megfigyelők. */ +@Docs(changed = true) public abstract class SettlerObserver { + /** + * A telepes körében ellőtt esemény. + * @param s + */ void settlerTick(Settler s){} + /** + * A telepes nyersanyagraktárának megváltozásakor ellőtt esemény. + * @param s + */ void settlerInventoryChanged(Settler s){} + /** + * A telepes portálraktárának megváltozásakor ellőtt esemény. + * @param s + */ void portalInventoryChanged(Settler s){} + /** + * Portál elhelyezésekor ellőtt esemény. + * @param s + * @param p + */ void portalPlaced(Settler s, Portal p){} }