Code cleanup and change reset position key to the home key

This commit is contained in:
Stone_Red
2022-05-13 10:25:24 +02:00
parent b7caf1ce35
commit e14e973295
20 changed files with 69 additions and 83 deletions
@@ -3,9 +3,7 @@ package com.yes.yes;
import com.yes.yes.managers.GameManager; import com.yes.yes.managers.GameManager;
import com.yes.yes.managers.PlayerManager; import com.yes.yes.managers.PlayerManager;
import com.yes.yes.managers.UiManager; import com.yes.yes.managers.UiManager;
import com.yes.yes.utils.GlobalEventHandler;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
@@ -1,8 +1,6 @@
package com.yes.yes; package com.yes.yes;
import com.yes.yes.utils.GlobalEventHandler; import com.yes.yes.utils.GlobalEventHandler;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
@@ -17,7 +15,7 @@ public class YesApplication extends javafx.application.Application {
@Override @Override
public void stop() { public void stop() {
System.out.println("Closing!"); System.out.println("Closing!");
GlobalEventHandler.trigger("closing",null); GlobalEventHandler.trigger("closing", null);
} }
@Override @Override
@@ -7,8 +7,8 @@ import com.yes.yes.utils.Item;
public class GeneratorBehaviour extends Component { public class GeneratorBehaviour extends Component {
private Item item; private final Item item;
private String dataKey; private final String dataKey;
public GeneratorBehaviour(Entity entity, BlockContainer blockContainer, Item item, String dataKey) { public GeneratorBehaviour(Entity entity, BlockContainer blockContainer, Item item, String dataKey) {
super(entity, blockContainer); super(entity, blockContainer);
@@ -11,8 +11,8 @@ import javafx.scene.transform.Scale;
public class ItemBehaviour extends Component { public class ItemBehaviour extends Component {
private final String dataKey;
private VBox itemGroup; private VBox itemGroup;
private String dataKey;
public ItemBehaviour(Entity entity, BlockContainer blockContainer, String dataKey) { public ItemBehaviour(Entity entity, BlockContainer blockContainer, String dataKey) {
super(entity, blockContainer); super(entity, blockContainer);
@@ -4,8 +4,8 @@ import com.yes.yes.utils.*;
public class OfferBehaviour extends Component { public class OfferBehaviour extends Component {
private Coordinate direction; private final Coordinate direction;
private String dataKey; private final String dataKey;
private Entity receiver; private Entity receiver;
@@ -48,7 +48,7 @@ public class OfferBehaviour extends Component {
} }
this.parent.addListener("itemAccepted", this, this::itemAccepted); this.parent.addListener("itemAccepted", this, this::itemAccepted);
this.parent.addListener("placed", this,this::placed); this.parent.addListener("placed", this, this::placed);
} }
@Override @Override
@@ -1,7 +1,9 @@
package com.yes.yes.behaviours; package com.yes.yes.behaviours;
import com.yes.yes.entities.parts.Square; import com.yes.yes.utils.BlockContainer;
import com.yes.yes.utils.*; import com.yes.yes.utils.Component;
import com.yes.yes.utils.Coordinate;
import com.yes.yes.utils.Entity;
public class PlaceBehaviour extends Component { public class PlaceBehaviour extends Component {
@@ -6,17 +6,16 @@ import com.yes.yes.utils.Direction;
import com.yes.yes.utils.Entity; import com.yes.yes.utils.Entity;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon; import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle;
public class ConveyorBelt extends Entity { public class ConveyorBelt extends Entity {
public ConveyorBelt() { public ConveyorBelt() {
super(); super();
Polygon t = new Polygon(); Polygon t = new Polygon();
t.getPoints().addAll( t.getPoints().addAll(
25.0,0.0, 25.0, 0.0,
0.0,50.0, 0.0, 50.0,
50.0,50.0); 50.0, 50.0);
t.setFill(new Color(0,0,0,1)); t.setFill(new Color(0, 0, 0, 1));
this.getChildren().addAll(t); this.getChildren().addAll(t);
} }
@@ -24,11 +23,11 @@ public class ConveyorBelt extends Entity {
public ConveyorBelt(BlockContainer blockContainer) { public ConveyorBelt(BlockContainer blockContainer) {
this(); this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new PlaceBehaviour(this, blockContainer));
this.addBehaviour(new ItemBehaviour(this, blockContainer,"ReceivedItem")); this.addBehaviour(new ItemBehaviour(this, blockContainer, "ReceivedItem"));
this.addBehaviour(new RecieveBehaviour(this, blockContainer, Direction.DOWN, "ReceivedItem")); this.addBehaviour(new ReceiveBehaviour(this, blockContainer, Direction.DOWN, "ReceivedItem"));
this.addBehaviour(new RecieveBehaviour(this, blockContainer, Direction.LEFT, "ReceivedItem")); this.addBehaviour(new ReceiveBehaviour(this, blockContainer, Direction.LEFT, "ReceivedItem"));
this.addBehaviour(new RecieveBehaviour(this, blockContainer, Direction.RIGHT, "ReceivedItem")); this.addBehaviour(new ReceiveBehaviour(this, blockContainer, Direction.RIGHT, "ReceivedItem"));
this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.UP, "OfferItem")); this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.UP, "OfferItem"));
this.addBehaviour(new ConveyorBehaviour(this,blockContainer, "ReceivedItem","OfferItem", 1)); this.addBehaviour(new ConveyorBehaviour(this, blockContainer, "ReceivedItem", "OfferItem", 1));
} }
} }
@@ -12,7 +12,6 @@ import com.yes.yes.utils.Item;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon; import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle; import javafx.scene.shape.Rectangle;
import javafx.scene.shape.TriangleMesh;
public class GeneratorMachine extends Entity { public class GeneratorMachine extends Entity {
public GeneratorMachine() { public GeneratorMachine() {
@@ -22,18 +21,18 @@ public class GeneratorMachine extends Entity {
Polygon p = new Polygon(); Polygon p = new Polygon();
p.getPoints().addAll( p.getPoints().addAll(
25.0,0.0, 25.0, 0.0,
0.0,50.0, 0.0, 50.0,
50.0,50.0); 50.0, 50.0);
p.setFill(new Color(0,0,0,0.5)); p.setFill(new Color(0, 0, 0, 0.5));
this.getChildren().addAll(r,p); this.getChildren().addAll(r, p);
} }
public GeneratorMachine(BlockContainer blockContainer) { public GeneratorMachine(BlockContainer blockContainer) {
this(); this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new PlaceBehaviour(this, blockContainer));
this.addBehaviour(new ItemBehaviour(this, blockContainer,"Item")); this.addBehaviour(new ItemBehaviour(this, blockContainer, "Item"));
this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.UP, "Item")); this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.UP, "Item"));
this.addBehaviour(new GeneratorBehaviour(this, blockContainer, generateItem(), "Item")); this.addBehaviour(new GeneratorBehaviour(this, blockContainer, generateItem(), "Item"));
} }
@@ -1,8 +1,7 @@
package com.yes.yes.entities.machines; package com.yes.yes.entities.machines;
import com.yes.yes.behaviours.ItemBehaviour;
import com.yes.yes.behaviours.PlaceBehaviour; import com.yes.yes.behaviours.PlaceBehaviour;
import com.yes.yes.behaviours.RecieveBehaviour; import com.yes.yes.behaviours.ReceiveBehaviour;
import com.yes.yes.utils.BlockContainer; import com.yes.yes.utils.BlockContainer;
import com.yes.yes.utils.Direction; import com.yes.yes.utils.Direction;
import com.yes.yes.utils.Entity; import com.yes.yes.utils.Entity;
@@ -20,6 +19,6 @@ public class HubAcceptor extends Entity {
public HubAcceptor(BlockContainer blockContainer) { public HubAcceptor(BlockContainer blockContainer) {
this(); this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new PlaceBehaviour(this, blockContainer));
this.addBehaviour(new RecieveBehaviour(this, blockContainer, Direction.LEFT, "Input")); this.addBehaviour(new ReceiveBehaviour(this, blockContainer, Direction.LEFT, "Input"));
} }
} }
@@ -2,9 +2,7 @@ package com.yes.yes.entities.machines;
import com.yes.yes.behaviours.ItemBehaviour; import com.yes.yes.behaviours.ItemBehaviour;
import com.yes.yes.behaviours.PlaceBehaviour; import com.yes.yes.behaviours.PlaceBehaviour;
import com.yes.yes.behaviours.RecieveBehaviour;
import com.yes.yes.utils.BlockContainer; import com.yes.yes.utils.BlockContainer;
import com.yes.yes.utils.Direction;
import com.yes.yes.utils.Entity; import com.yes.yes.utils.Entity;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle; import javafx.scene.shape.Rectangle;
@@ -2,7 +2,7 @@ package com.yes.yes.entities.machines;
import com.yes.yes.behaviours.ItemBehaviour; import com.yes.yes.behaviours.ItemBehaviour;
import com.yes.yes.behaviours.PlaceBehaviour; import com.yes.yes.behaviours.PlaceBehaviour;
import com.yes.yes.behaviours.RecieveBehaviour; import com.yes.yes.behaviours.ReceiveBehaviour;
import com.yes.yes.behaviours.TestBehaviour; import com.yes.yes.behaviours.TestBehaviour;
import com.yes.yes.utils.BlockContainer; import com.yes.yes.utils.BlockContainer;
import com.yes.yes.utils.Direction; import com.yes.yes.utils.Direction;
@@ -20,19 +20,19 @@ public class TestMachine extends Entity {
Polygon t = new Polygon(); Polygon t = new Polygon();
t.getPoints().addAll( t.getPoints().addAll(
25.0,0.0, 25.0, 0.0,
0.0,50.0, 0.0, 50.0,
50.0,50.0); 50.0, 50.0);
t.setFill(new Color(1,1,1,0.5)); t.setFill(new Color(1, 1, 1, 0.5));
this.getChildren().addAll(c,t); this.getChildren().addAll(c, t);
} }
public TestMachine(BlockContainer blockContainer) { public TestMachine(BlockContainer blockContainer) {
this(); this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new PlaceBehaviour(this, blockContainer));
this.addBehaviour(new TestBehaviour(this, blockContainer)); this.addBehaviour(new TestBehaviour(this, blockContainer));
this.addBehaviour(new ItemBehaviour(this, blockContainer,"Item")); this.addBehaviour(new ItemBehaviour(this, blockContainer, "Item"));
this.addBehaviour(new RecieveBehaviour(this, blockContainer, Direction.DOWN, "Item")); this.addBehaviour(new ReceiveBehaviour(this, blockContainer, Direction.DOWN, "Item"));
} }
} }
@@ -19,7 +19,7 @@ public class TestMachine2 extends Entity {
this(); this();
this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new PlaceBehaviour(this, blockContainer));
this.addBehaviour(new TestBehaviour(this, blockContainer)); this.addBehaviour(new TestBehaviour(this, blockContainer));
this.addBehaviour(new ItemBehaviour(this, blockContainer,"Item")); this.addBehaviour(new ItemBehaviour(this, blockContainer, "Item"));
this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.RIGHT, "Item")); this.addBehaviour(new OfferBehaviour(this, blockContainer, Direction.RIGHT, "Item"));
} }
} }
@@ -14,7 +14,7 @@ public class Square extends com.yes.yes.utils.Part {
int b = rand.nextInt(255); int b = rand.nextInt(255);
var rect = new Rectangle(23, 23); var rect = new Rectangle(23, 23);
rect.setFill(Color.rgb(r,g,b)); rect.setFill(Color.rgb(r, g, b));
rect.setStroke(Color.BLUE); rect.setStroke(Color.BLUE);
rect.setStrokeWidth(1); rect.setStrokeWidth(1);
this.getChildren().add(rect); this.getChildren().add(rect);
@@ -35,8 +35,8 @@ public class GameManager {
EntityRegistry.register(new RegistryEntry("test2", "test offer machine", TestMachine2.class)); EntityRegistry.register(new RegistryEntry("test2", "test offer machine", TestMachine2.class));
EntityRegistry.register(new RegistryEntry("generator", "Generator", GeneratorMachine.class)); EntityRegistry.register(new RegistryEntry("generator", "Generator", GeneratorMachine.class));
EntityRegistry.register(new RegistryEntry("conveyorBelt", "Conveyor Belt", ConveyorBelt.class)); EntityRegistry.register(new RegistryEntry("conveyorBelt", "Conveyor Belt", ConveyorBelt.class));
EntityRegistry.register(new RegistryEntry("hub","Central Hub", HubDisplay.class)); EntityRegistry.register(new RegistryEntry("hub", "Central Hub", HubDisplay.class));
EntityRegistry.register(new RegistryEntry("hubAcceptor","Central Hub Acceptor", HubAcceptor.class)); EntityRegistry.register(new RegistryEntry("hubAcceptor", "Central Hub Acceptor", HubAcceptor.class));
} catch (AlreadyExistsException e) { } catch (AlreadyExistsException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -46,9 +46,7 @@ public class GameManager {
executor.scheduleAtFixedRate(() -> { executor.scheduleAtFixedRate(() -> {
try { try {
GlobalEventHandler.trigger("timerTick", null); GlobalEventHandler.trigger("timerTick", null);
} } catch (Exception ex) {
catch (Exception ex)
{
ex.printStackTrace(); ex.printStackTrace();
} }
//System.out.println("Finished tick!"); //System.out.println("Finished tick!");
@@ -7,8 +7,6 @@ import com.yes.yes.world.World;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.input.*; import javafx.scene.input.*;
import java.security.Key;
public class PlayerManager { public class PlayerManager {
private static final KeyCombination LEFT_KEY = new KeyCodeCombination(KeyCode.A); private static final KeyCombination LEFT_KEY = new KeyCodeCombination(KeyCode.A);
@@ -16,12 +14,11 @@ public class PlayerManager {
private static final KeyCombination UP_KEY = new KeyCodeCombination(KeyCode.W); private static final KeyCombination UP_KEY = new KeyCodeCombination(KeyCode.W);
private static final KeyCombination DOWN_KEY = new KeyCodeCombination(KeyCode.S); private static final KeyCombination DOWN_KEY = new KeyCodeCombination(KeyCode.S);
private static final KeyCombination DELETE_KEY = new KeyCodeCombination(KeyCode.X); private static final KeyCombination DELETE_KEY = new KeyCodeCombination(KeyCode.X);
private static final KeyCombination HOME_KEY = new KeyCodeCombination(KeyCode.INSERT); private static final KeyCombination HOME_KEY = new KeyCodeCombination(KeyCode.HOME);
private static final Coordinate START_POSITION = new Coordinate(Integer.MAX_VALUE / -5000, Integer.MAX_VALUE / -5000);
private final World world; private final World world;
private final BuildBox buildBox; private final BuildBox buildBox;
private static final Coordinate START_POSITION = new Coordinate(Integer.MAX_VALUE / -5000,Integer.MAX_VALUE / -5000);
private Coordinate chunkPos = new Coordinate(0, 0); private Coordinate chunkPos = new Coordinate(0, 0);
private int currentRotation = 0; private int currentRotation = 0;
private Coordinate currentMousePosition; private Coordinate currentMousePosition;
@@ -34,6 +31,7 @@ public class PlayerManager {
public void initialize() { public void initialize() {
Scene scene = world.getScene(); Scene scene = world.getScene();
scene.setOnKeyPressed(this::processKeyPress); scene.setOnKeyPressed(this::processKeyPress);
scene.setOnKeyReleased(this::processKeyRelease);
scene.widthProperty().addListener((e) -> redrawChunks()); scene.widthProperty().addListener((e) -> redrawChunks());
scene.heightProperty().addListener((e) -> redrawChunks()); scene.heightProperty().addListener((e) -> redrawChunks());
@@ -41,7 +39,7 @@ public class PlayerManager {
world.setOnMouseClicked(this::processClick); world.setOnMouseClicked(this::processClick);
world.setTranslateX(START_POSITION.x); world.setTranslateX(START_POSITION.x);
world.setTranslateY(START_POSITION.y); world.setTranslateY(START_POSITION.y);
world.setOnMouseMoved((mouse)-> currentMousePosition = new Coordinate((int) mouse.getX(), (int) mouse.getY())); world.setOnMouseMoved((mouse) -> currentMousePosition = new Coordinate((int) mouse.getX(), (int) mouse.getY()));
redrawChunks(); redrawChunks();
} }
@@ -84,6 +82,21 @@ public class PlayerManager {
} }
} }
private void processKeyRelease(KeyEvent key) {
if (DELETE_KEY.match(key)) {
Coordinate chunkCoordinate = Coordinate.WorldToChunkCoordinate(currentMousePosition);
Coordinate blockCoordinate = Coordinate.WorldToChunkBlock(currentMousePosition);
Chunk chunk = world.getChunk(chunkCoordinate);
chunk.removeEntity(blockCoordinate);
}
if (HOME_KEY.match(key)) {
world.setTranslateX(START_POSITION.x);
world.setTranslateY(START_POSITION.y);
redrawChunks();
}
}
private void processKeyPress(KeyEvent key) { private void processKeyPress(KeyEvent key) {
if (LEFT_KEY.match(key)) { if (LEFT_KEY.match(key)) {
world.setTranslateX(world.getTranslateX() + 45); world.setTranslateX(world.getTranslateX() + 45);
@@ -97,20 +110,6 @@ public class PlayerManager {
if (DOWN_KEY.match(key)) { if (DOWN_KEY.match(key)) {
world.setTranslateY(world.getTranslateY() - 45); world.setTranslateY(world.getTranslateY() - 45);
} }
if(DELETE_KEY.match(key)) {
Coordinate chunkCoordinate = Coordinate.WorldToChunkCoordinate(currentMousePosition);
Coordinate blockCoordinate = Coordinate.WorldToChunkBlock(currentMousePosition);
Chunk chunk = world.getChunk(chunkCoordinate);
chunk.removeEntity(blockCoordinate);
}
if(HOME_KEY.match(key))
{
world.setTranslateX(START_POSITION.x);
world.setTranslateY(START_POSITION.y);
redrawChunks();
}
Size preferredAmountOfChunks = getPreferredAmountOfChunks(); Size preferredAmountOfChunks = getPreferredAmountOfChunks();
Coordinate chunkPosition = getCurrentChunkPosition(); Coordinate chunkPosition = getCurrentChunkPosition();
@@ -12,5 +12,6 @@ public abstract class Component {
public abstract void initialize(); public abstract void initialize();
public abstract void update(); public abstract void update();
public abstract void destroy(); public abstract void destroy();
} }
@@ -3,13 +3,14 @@ package com.yes.yes.utils;
import java.security.InvalidParameterException; import java.security.InvalidParameterException;
public class Direction { public class Direction {
private Direction() {}
public static final Coordinate UP = new Coordinate(0, -1); public static final Coordinate UP = new Coordinate(0, -1);
public static final Coordinate RIGHT = new Coordinate(1, 0); public static final Coordinate RIGHT = new Coordinate(1, 0);
public static final Coordinate DOWN = new Coordinate(0, 1); public static final Coordinate DOWN = new Coordinate(0, 1);
public static final Coordinate LEFT = new Coordinate(-1, 0); public static final Coordinate LEFT = new Coordinate(-1, 0);
private Direction() {
}
public static final Coordinate rotateRight(Coordinate direction) { public static final Coordinate rotateRight(Coordinate direction) {
if (direction == Direction.LEFT) return Direction.UP; if (direction == Direction.LEFT) return Direction.UP;
if (direction == Direction.UP) return Direction.RIGHT; if (direction == Direction.UP) return Direction.RIGHT;
+3 -7
View File
@@ -3,7 +3,6 @@ package com.yes.yes.utils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function;
public abstract class Entity extends javafx.scene.Group { public abstract class Entity extends javafx.scene.Group {
private final HashMap<String, Object> data = new HashMap<>(); private final HashMap<String, Object> data = new HashMap<>();
@@ -24,9 +23,7 @@ public abstract class Entity extends javafx.scene.Group {
for (Component component : behaviours) { for (Component component : behaviours) {
if (!component.getClass().equals(behaviour.getClass())) { if (!component.getClass().equals(behaviour.getClass())) {
components.add(component); components.add(component);
} } else {
else
{
component.destroy(); component.destroy();
} }
} }
@@ -45,9 +42,8 @@ public abstract class Entity extends javafx.scene.Group {
behaviours.forEach(Component::initialize); behaviours.forEach(Component::initialize);
} }
public final void destroy() public final void destroy() {
{ GlobalEventHandler.removeListener("timerTick", this, (__) -> update());
GlobalEventHandler.removeListener("timerTick",this, (__) -> update());
for (Component component : behaviours) { for (Component component : behaviours) {
component.destroy(); component.destroy();
} }
@@ -1,7 +1,6 @@
package com.yes.yes.utils; package com.yes.yes.utils;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function;
public class GlobalEventHandler { public class GlobalEventHandler {
private static final EventHandler handler = new EventHandler(); private static final EventHandler handler = new EventHandler();
@@ -10,7 +9,7 @@ public class GlobalEventHandler {
} }
public static <T> void addListener(String eventName, Object object, Consumer<T> function) { public static <T> void addListener(String eventName, Object object, Consumer<T> function) {
handler.addListener(eventName,object, function); handler.addListener(eventName, object, function);
} }
public static <T> void removeListener(String eventName, Object object, Consumer<T> function) { public static <T> void removeListener(String eventName, Object object, Consumer<T> function) {
@@ -1,6 +1,5 @@
package com.yes.yes.utils; package com.yes.yes.utils;
import com.yes.yes.world.Chunk;
import javafx.scene.Node; import javafx.scene.Node;
public abstract class Part extends javafx.scene.Group { public abstract class Part extends javafx.scene.Group {