diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..f3ff164
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/yes/yes/MainController.java b/src/main/java/com/yes/yes/MainController.java
index 6e53d44..0ba49db 100644
--- a/src/main/java/com/yes/yes/MainController.java
+++ b/src/main/java/com/yes/yes/MainController.java
@@ -1,6 +1,8 @@
package com.yes.yes;
-import com.yes.yes.managers.*;
+import com.yes.yes.managers.GameManager;
+import com.yes.yes.managers.PlayerManager;
+import com.yes.yes.managers.UiManager;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.scene.layout.VBox;
@@ -8,7 +10,7 @@ import javafx.scene.layout.VBox;
public class MainController {
@FXML
- VBox root;
+ private VBox root;
public void initialize() {
GameManager gameManager = new GameManager(root);
diff --git a/src/main/java/com/yes/yes/YesApplication.java b/src/main/java/com/yes/yes/YesApplication.java
index 312ba77..7ddd0a9 100644
--- a/src/main/java/com/yes/yes/YesApplication.java
+++ b/src/main/java/com/yes/yes/YesApplication.java
@@ -2,12 +2,15 @@ package com.yes.yes;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
-import javafx.scene.transform.Scale;
import javafx.stage.Stage;
import java.io.IOException;
public class YesApplication extends javafx.application.Application {
+ public static void main(String[] args) {
+ launch();
+ }
+
@Override
public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(YesApplication.class.getResource("main-view.fxml"));
@@ -21,8 +24,4 @@ public class YesApplication extends javafx.application.Application {
stage.setMaximized(true);
stage.show();
}
-
- public static void main(String[] args) {
- launch();
- }
}
\ No newline at end of file
diff --git a/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java b/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java
index a3bb03a..80fefe4 100644
--- a/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java
+++ b/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java
@@ -12,8 +12,7 @@ public class PlaceBehaviour extends Component {
}
@Override
- public void initialize()
- {
+ public void initialize() {
for (int x = -1; x < 2; x++) {
for (int y = -1; y < 2; y++) {
try {
@@ -21,7 +20,6 @@ public class PlaceBehaviour extends Component {
if (entity != null) {
entity.trigger("placed", parent);
- System.out.println(entity.getClass().getSimpleName());
}
} catch (IllegalAccessException ex) {
ex.printStackTrace();
diff --git a/src/main/java/com/yes/yes/behaviours/TestBehaviour.java b/src/main/java/com/yes/yes/behaviours/TestBehaviour.java
index 5d182ad..862dc7a 100644
--- a/src/main/java/com/yes/yes/behaviours/TestBehaviour.java
+++ b/src/main/java/com/yes/yes/behaviours/TestBehaviour.java
@@ -11,9 +11,13 @@ public class TestBehaviour extends Component {
super(entity, blockContainer);
}
+ private void onNeighborPlaced(Entity entity) {
+ System.out.println(parent.getClass().getSimpleName() + " > \"" + entity.getClass().getSimpleName() + "\" got placed in the radius.");
+ }
+
@Override
public void initialize() {
-
+ parent.addListener("placed", this::onNeighborPlaced);
}
@Override
diff --git a/src/main/java/com/yes/yes/entities/machines/TestMachine.java b/src/main/java/com/yes/yes/entities/machines/TestMachine.java
index d117fd1..19a5f2c 100644
--- a/src/main/java/com/yes/yes/entities/machines/TestMachine.java
+++ b/src/main/java/com/yes/yes/entities/machines/TestMachine.java
@@ -1,7 +1,9 @@
package com.yes.yes.entities.machines;
import com.yes.yes.behaviours.PlaceBehaviour;
-import com.yes.yes.utils.*;
+import com.yes.yes.behaviours.TestBehaviour;
+import com.yes.yes.utils.BlockContainer;
+import com.yes.yes.utils.Entity;
import javafx.scene.shape.Circle;
public class TestMachine extends Entity {
@@ -13,5 +15,6 @@ public class TestMachine extends Entity {
public TestMachine(BlockContainer blockContainer) {
this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer));
+ this.addBehaviour(new TestBehaviour(this, blockContainer));
}
}
diff --git a/src/main/java/com/yes/yes/entities/machines/TestMachine2.java b/src/main/java/com/yes/yes/entities/machines/TestMachine2.java
index 30bad3a..8516c65 100644
--- a/src/main/java/com/yes/yes/entities/machines/TestMachine2.java
+++ b/src/main/java/com/yes/yes/entities/machines/TestMachine2.java
@@ -1,6 +1,7 @@
package com.yes.yes.entities.machines;
import com.yes.yes.behaviours.PlaceBehaviour;
+import com.yes.yes.behaviours.TestBehaviour;
import com.yes.yes.utils.BlockContainer;
import com.yes.yes.utils.Entity;
import javafx.scene.shape.Rectangle;
@@ -14,5 +15,6 @@ public class TestMachine2 extends Entity {
public TestMachine2(BlockContainer blockContainer) {
this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer));
+ this.addBehaviour(new TestBehaviour(this, blockContainer));
}
}
\ No newline at end of file
diff --git a/src/main/java/com/yes/yes/managers/GameManager.java b/src/main/java/com/yes/yes/managers/GameManager.java
index 8c3e96f..7c12584 100644
--- a/src/main/java/com/yes/yes/managers/GameManager.java
+++ b/src/main/java/com/yes/yes/managers/GameManager.java
@@ -2,7 +2,6 @@ package com.yes.yes.managers;
import com.yes.yes.entities.machines.TestMachine;
import com.yes.yes.entities.machines.TestMachine2;
-import com.yes.yes.utils.Coordinate;
import com.yes.yes.utils.EntityRegistry;
import com.yes.yes.utils.RegistryEntry;
import com.yes.yes.utils.exceptions.AlreadyExistsException;
@@ -10,17 +9,17 @@ import com.yes.yes.world.World;
import javafx.scene.layout.VBox;
public class GameManager {
- VBox root;
- World world;
-
- public World getWorld() {
- return world;
- }
+ private final VBox root;
+ private World world;
public GameManager(VBox root) {
this.root = root;
}
+ public World getWorld() {
+ return world;
+ }
+
public void initialize() {
world = new World();
@@ -28,8 +27,8 @@ public class GameManager {
world.toBack();
try {
- EntityRegistry.register(new RegistryEntry("test","test machine", TestMachine.class));
- EntityRegistry.register(new RegistryEntry("test2","test machine", TestMachine2.class));
+ EntityRegistry.register(new RegistryEntry("test", "test machine", TestMachine.class));
+ EntityRegistry.register(new RegistryEntry("test2", "test machine", TestMachine2.class));
} catch (AlreadyExistsException e) {
e.printStackTrace();
}
diff --git a/src/main/java/com/yes/yes/managers/PlayerManager.java b/src/main/java/com/yes/yes/managers/PlayerManager.java
index adcbb23..ea62bbf 100644
--- a/src/main/java/com/yes/yes/managers/PlayerManager.java
+++ b/src/main/java/com/yes/yes/managers/PlayerManager.java
@@ -1,10 +1,7 @@
package com.yes.yes.managers;
import com.yes.yes.ui.BuildBox;
-import com.yes.yes.utils.BlockContainer;
-import com.yes.yes.utils.Coordinate;
-import com.yes.yes.utils.Entity;
-import com.yes.yes.utils.EntityRegistry;
+import com.yes.yes.utils.*;
import com.yes.yes.world.Chunk;
import com.yes.yes.world.World;
import javafx.scene.Scene;
@@ -15,14 +12,14 @@ import javafx.scene.input.KeyEvent;
public class PlayerManager {
- static final KeyCombination LEFT_KEY = new KeyCodeCombination(KeyCode.A);
- static final KeyCombination RIGHT_KEY = new KeyCodeCombination(KeyCode.D);
- static final KeyCombination UP_KEY = new KeyCodeCombination(KeyCode.W);
- static final KeyCombination DOWN_KEY = new KeyCodeCombination(KeyCode.S);
+ private static final KeyCombination LEFT_KEY = new KeyCodeCombination(KeyCode.A);
+ private static final KeyCombination RIGHT_KEY = new KeyCodeCombination(KeyCode.D);
+ private static final KeyCombination UP_KEY = new KeyCodeCombination(KeyCode.W);
+ private static final KeyCombination DOWN_KEY = new KeyCodeCombination(KeyCode.S);
- World world;
- BuildBox buildBox;
- Coordinate chunkPos = new Coordinate(0, 0);
+ private final World world;
+ private final BuildBox buildBox;
+ private Coordinate chunkPos = new Coordinate(0, 0);
public PlayerManager(World world, BuildBox buildBox) {
this.world = world;
@@ -40,11 +37,16 @@ public class PlayerManager {
Coordinate blockCoordinate = Coordinate.WorldToChunkBlock(mouseCoordinate);
try {
- Class[] types = new Class[1];
+ Class>[] types = new Class>[1];
types[0] = BlockContainer.class;
BlockContainer blockContainer = new BlockContainer(world, blockCoordinate, chunkCoordinate);
- Entity entity = (Entity) EntityRegistry.getEntity(buildBox.getSelectedEntity()).getEntity().getConstructor(types).newInstance(blockContainer);
+ RegistryEntry registryEntry = EntityRegistry.getEntry(buildBox.getSelectedEntity());
+
+ if (registryEntry == null)
+ return;
+
+ Entity entity = (Entity) registryEntry.getEntity().getConstructor(types).newInstance(blockContainer);
world.getChunk(chunkCoordinate).setEntity(entity, blockCoordinate);
} catch (Exception ex) {
@@ -53,11 +55,11 @@ public class PlayerManager {
}
);
- world.setTranslateX(Integer.MAX_VALUE / -5000);
- world.setTranslateY(Integer.MAX_VALUE / -5000);
+ world.setTranslateX(Integer.MAX_VALUE / -5000d);
+ world.setTranslateY(Integer.MAX_VALUE / -5000d);
}
- void ProcessKeyPress(KeyEvent key) {
+ private void ProcessKeyPress(KeyEvent key) {
if (LEFT_KEY.match(key)) {
world.setTranslateX(world.getTranslateX() + 45);
}
diff --git a/src/main/java/com/yes/yes/managers/UiManager.java b/src/main/java/com/yes/yes/managers/UiManager.java
index 5c4f09b..e1ff54f 100644
--- a/src/main/java/com/yes/yes/managers/UiManager.java
+++ b/src/main/java/com/yes/yes/managers/UiManager.java
@@ -4,8 +4,8 @@ import com.yes.yes.ui.BuildBox;
import javafx.scene.layout.VBox;
public class UiManager {
- VBox root;
- BuildBox buildBox;
+ private final VBox root;
+ private BuildBox buildBox;
public UiManager(VBox root) {
this.root = root;
diff --git a/src/main/java/com/yes/yes/ui/BuildBox.java b/src/main/java/com/yes/yes/ui/BuildBox.java
index 26ff844..ff761a7 100644
--- a/src/main/java/com/yes/yes/ui/BuildBox.java
+++ b/src/main/java/com/yes/yes/ui/BuildBox.java
@@ -5,18 +5,10 @@ import javafx.application.Platform;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.HBox;
-import java.util.function.Function;
-
public class BuildBox extends javafx.scene.Group {
String selectedEntity;
- Function changeItem = i -> {
- System.out.println(i);
- this.selectedEntity = i;
- return null;
- };
-
public BuildBox() {
ScrollPane pane = new ScrollPane();
HBox hbox = new HBox();
@@ -32,7 +24,12 @@ public class BuildBox extends javafx.scene.Group {
Platform.runLater(() -> pane.prefWidthProperty().bind(this.getScene().getWindow().widthProperty()));
- EntityRegistry.getKeys().forEach(e -> hbox.getChildren().add(new BuildItem(e, changeItem)));
+ EntityRegistry.getKeys().forEach(e -> hbox.getChildren().add(new BuildItem(e, this::changeItem)));
+ }
+
+ private void changeItem(String name) {
+ System.out.println(name);
+ this.selectedEntity = name;
}
public String getSelectedEntity() {
diff --git a/src/main/java/com/yes/yes/ui/BuildItem.java b/src/main/java/com/yes/yes/ui/BuildItem.java
index 6d2927d..59fedc6 100644
--- a/src/main/java/com/yes/yes/ui/BuildItem.java
+++ b/src/main/java/com/yes/yes/ui/BuildItem.java
@@ -5,18 +5,17 @@ import com.yes.yes.world.Chunk;
import javafx.scene.Node;
import javafx.scene.control.Button;
-import java.util.function.Function;
+import java.util.function.Consumer;
public class BuildItem extends javafx.scene.layout.StackPane {
- String display_name;
- String name;
- Class> entity;
+ private final String display_name;
+ private final String name;
- public BuildItem(String name, Function onClick) {
+ public BuildItem(String name, Consumer onClick) {
super();
- this.display_name = EntityRegistry.getEntity(name).getDisplayName();
- this.entity = EntityRegistry.getEntity(name).getEntity();
+ this.display_name = EntityRegistry.getEntry(name).getDisplayName();
+ Class> entity = EntityRegistry.getEntry(name).getEntity();
this.name = name;
this.prefWidth(Chunk.ENTITY_SIZE);
@@ -33,7 +32,7 @@ public class BuildItem extends javafx.scene.layout.StackPane {
button.setStyle("-fx-background-color: null; -fx-border-color: null");
button.setPrefSize(Chunk.ENTITY_SIZE, Chunk.ENTITY_SIZE);
button.setMinSize(Chunk.ENTITY_SIZE, Chunk.ENTITY_SIZE);
- button.setOnAction((e) -> onClick.apply(this.name));
+ button.setOnAction((e) -> onClick.accept(this.name));
this.getChildren().add(button);
}
diff --git a/src/main/java/com/yes/yes/utils/BlockContainer.java b/src/main/java/com/yes/yes/utils/BlockContainer.java
index b625cdd..f0ad391 100644
--- a/src/main/java/com/yes/yes/utils/BlockContainer.java
+++ b/src/main/java/com/yes/yes/utils/BlockContainer.java
@@ -3,18 +3,9 @@ package com.yes.yes.utils;
import com.yes.yes.world.Chunk;
import com.yes.yes.world.World;
-public class BlockContainer {
- final World world;
- final Coordinate blockCoordinate;
- final Coordinate chunkCoordinate;
+public record BlockContainer(World world, Coordinate blockCoordinate, Coordinate chunkCoordinate) {
final static int MAX_RADIUS = 2;
- public BlockContainer(World world, Coordinate blockCoordinate, Coordinate chunkCoordinate) {
- this.world = world;
- this.blockCoordinate = blockCoordinate;
- this.chunkCoordinate = chunkCoordinate;
- }
-
public Entity getBlock(Coordinate offset) throws IllegalAccessException {
if (Math.abs(offset.x) > MAX_RADIUS || Math.abs(offset.y) > MAX_RADIUS)
throw new IllegalAccessException();
diff --git a/src/main/java/com/yes/yes/utils/Component.java b/src/main/java/com/yes/yes/utils/Component.java
index 678c441..104becd 100644
--- a/src/main/java/com/yes/yes/utils/Component.java
+++ b/src/main/java/com/yes/yes/utils/Component.java
@@ -1,7 +1,7 @@
package com.yes.yes.utils;
public abstract class Component {
- protected Entity parent;
+ protected final Entity parent;
protected final BlockContainer blockContainer;
public Component(Entity entity, BlockContainer blockContainer) {
@@ -10,5 +10,6 @@ public abstract class Component {
}
public abstract void initialize();
+
public abstract void update();
}
diff --git a/src/main/java/com/yes/yes/utils/Coordinate.java b/src/main/java/com/yes/yes/utils/Coordinate.java
index 68e93b5..aaa75d3 100644
--- a/src/main/java/com/yes/yes/utils/Coordinate.java
+++ b/src/main/java/com/yes/yes/utils/Coordinate.java
@@ -13,23 +13,6 @@ public class Coordinate {
this.y = y;
}
- public Coordinate() {
- }
-
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof Coordinate)) return false;
- Coordinate that = (Coordinate) o;
- return x == that.x && y == that.y;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(x, y);
- }
-
public static Coordinate WorldToChunkCoordinate(Coordinate worldPos) {
int chunkSize = Chunk.CHUNK_SIZE * Chunk.ENTITY_SIZE;
@@ -43,4 +26,16 @@ public class Coordinate {
return new Coordinate(worldPos.x / Chunk.ENTITY_SIZE, worldPos.y / Chunk.ENTITY_SIZE);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof Coordinate that)) return false;
+ return x == that.x && y == that.y;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(x, y);
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/yes/yes/utils/Entity.java b/src/main/java/com/yes/yes/utils/Entity.java
index 91298f1..8972cf0 100644
--- a/src/main/java/com/yes/yes/utils/Entity.java
+++ b/src/main/java/com/yes/yes/utils/Entity.java
@@ -2,12 +2,13 @@ package com.yes.yes.utils;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.function.Consumer;
import java.util.function.Function;
public abstract class Entity extends javafx.scene.Group {
- private ArrayList behaviours = new ArrayList<>();
- private final HashMap data = new HashMap();
+ private final HashMap data = new HashMap<>();
private final EventHandler handler = new EventHandler();
+ private ArrayList behaviours = new ArrayList<>();
private int rotation;
public final void addBehaviour(Component behaviour) {
@@ -40,7 +41,7 @@ public abstract class Entity extends javafx.scene.Group {
return (T) data.get(key);
}
- public final void addListener(String eventName, Function