diff --git a/src/main/java/com/yes/yes/behaviours/ItemBehaviour.java b/src/main/java/com/yes/yes/behaviours/ItemBehaviour.java new file mode 100644 index 0000000..99efbe5 --- /dev/null +++ b/src/main/java/com/yes/yes/behaviours/ItemBehaviour.java @@ -0,0 +1,45 @@ +package com.yes.yes.behaviours; + +import com.yes.yes.utils.BlockContainer; +import com.yes.yes.utils.Component; +import com.yes.yes.utils.Entity; +import com.yes.yes.utils.Item; +import javafx.geometry.Pos; +import javafx.scene.layout.VBox; +import javafx.scene.transform.Scale; + +public class ItemBehaviour extends Component { + + private VBox itemGroup; + private Item item; + + public ItemBehaviour(Entity entity, BlockContainer blockContainer) { + super(entity, blockContainer); + } + + private void itemChanged(Item item) { + if(this.item != null) { + this.itemGroup.getChildren().clear(); + } + this.item = item; + + this.itemGroup.getChildren().add(item); + } + + @Override + public void initialize() { + parent.addListener("itemChanged", this::itemChanged); + + itemGroup = new VBox(); + itemGroup.setAlignment(Pos.CENTER); + + this.parent.getChildren().add(itemGroup); + + Scale s = new Scale(0.7, 0.7); + itemGroup.getTransforms().add(s); + } + + @Override + public void update() { + } +} diff --git a/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java b/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java index c645b4b..fe70c7e 100644 --- a/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java +++ b/src/main/java/com/yes/yes/behaviours/PlaceBehaviour.java @@ -24,13 +24,6 @@ public class PlaceBehaviour extends Component { } } } - Item item = new Item(); - for (int i = 0; i < 4; i++) { - for (int i1 = 0; i1 < 4; i1++) { - item.setPart(i, i1, new Square()); - } - } - // parent.getChildren().add(item); } @Override diff --git a/src/main/java/com/yes/yes/behaviours/TestOffererBehaviour.java b/src/main/java/com/yes/yes/behaviours/TestOffererBehaviour.java new file mode 100644 index 0000000..0dc4461 --- /dev/null +++ b/src/main/java/com/yes/yes/behaviours/TestOffererBehaviour.java @@ -0,0 +1,43 @@ +package com.yes.yes.behaviours; + +import com.yes.yes.utils.BlockContainer; +import com.yes.yes.utils.Component; +import com.yes.yes.utils.Coordinate; +import com.yes.yes.utils.Entity; + +public class TestOffererBehaviour extends Component { + + private Entity reciever; + + public TestOffererBehaviour(Entity entity, BlockContainer blockContainer) { + super(entity, blockContainer); + } + + private void placed(Entity entity) { + try { + if (blockContainer.getBlock(new Coordinate(1, 0)) == entity) { + this.reciever = entity; + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public void initialize() { + try { + this.reciever = blockContainer.getBlock(new Coordinate(1, 0)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + this.parent.addListener("placed", this::placed); + } + + @Override + public void update() { + if(reciever == null) return; + + reciever.trigger("offerItem", someItem); + } +} 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 19a5f2c..831e0c6 100644 --- a/src/main/java/com/yes/yes/entities/machines/TestMachine.java +++ b/src/main/java/com/yes/yes/entities/machines/TestMachine.java @@ -1,5 +1,6 @@ package com.yes.yes.entities.machines; +import com.yes.yes.behaviours.ItemBehaviour; import com.yes.yes.behaviours.PlaceBehaviour; import com.yes.yes.behaviours.TestBehaviour; import com.yes.yes.utils.BlockContainer; @@ -9,12 +10,16 @@ import javafx.scene.shape.Circle; public class TestMachine extends Entity { public TestMachine() { super(); - this.getChildren().add(new Circle(25)); + Circle c = new Circle(25); + c.setCenterX(25); + c.setCenterY(25); + this.getChildren().add(c); } public TestMachine(BlockContainer blockContainer) { this(); this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new TestBehaviour(this, blockContainer)); + this.addBehaviour(new ItemBehaviour(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 5147af6..7a7e37f 100644 --- a/src/main/java/com/yes/yes/entities/machines/TestMachine2.java +++ b/src/main/java/com/yes/yes/entities/machines/TestMachine2.java @@ -1,5 +1,6 @@ package com.yes.yes.entities.machines; +import com.yes.yes.behaviours.ItemBehaviour; import com.yes.yes.behaviours.PlaceBehaviour; import com.yes.yes.behaviours.TestBehaviour; import com.yes.yes.utils.BlockContainer; @@ -16,5 +17,6 @@ public class TestMachine2 extends Entity { this(); this.addBehaviour(new PlaceBehaviour(this, blockContainer)); this.addBehaviour(new TestBehaviour(this, blockContainer)); + this.addBehaviour(new ItemBehaviour(this, blockContainer)); } } \ No newline at end of file diff --git a/src/main/java/com/yes/yes/entities/parts/Square.java b/src/main/java/com/yes/yes/entities/parts/Square.java index 7ebb2ad..5ea0244 100644 --- a/src/main/java/com/yes/yes/entities/parts/Square.java +++ b/src/main/java/com/yes/yes/entities/parts/Square.java @@ -5,9 +5,9 @@ import javafx.scene.shape.Rectangle; public class Square extends com.yes.yes.utils.Part { public Square() { - var rect = new Rectangle(25, 25); + var rect = new Rectangle(23, 23); rect.setFill(Color.RED); - rect.setStroke(Color.BLACK); + rect.setStroke(Color.BLUE); rect.setStrokeWidth(1); this.getChildren().add(rect); } diff --git a/src/main/java/com/yes/yes/utils/Item.java b/src/main/java/com/yes/yes/utils/Item.java index 7873875..65155ca 100644 --- a/src/main/java/com/yes/yes/utils/Item.java +++ b/src/main/java/com/yes/yes/utils/Item.java @@ -1,5 +1,7 @@ package com.yes.yes.utils; +import javafx.scene.transform.Scale; + public class Item extends javafx.scene.Group { final Part[][] parts = new Part[4][4]; @@ -12,6 +14,9 @@ public class Item extends javafx.scene.Group { this.getChildren().remove(parts[layer][section]); } + part.rotate(section); + + part.getTransforms().add(new Scale(-layer*0.25f+1f, -layer*0.25f+1f)); parts[layer][section] = part; this.getChildren().add(part); diff --git a/src/main/java/com/yes/yes/utils/Part.java b/src/main/java/com/yes/yes/utils/Part.java index 55a8bca..60a3961 100644 --- a/src/main/java/com/yes/yes/utils/Part.java +++ b/src/main/java/com/yes/yes/utils/Part.java @@ -1,5 +1,6 @@ package com.yes.yes.utils; +import com.yes.yes.world.Chunk; import javafx.scene.Node; public abstract class Part extends javafx.scene.Group { @@ -14,6 +15,7 @@ public abstract class Part extends javafx.scene.Group { public void rotate(int quarters) { this.getTransforms().clear(); - this.getTransforms().add(new javafx.scene.transform.Rotate(quarters % 4 * 90, 1, 1)); + this.getTransforms().add(new javafx.scene.transform.Rotate(quarters % 4 * 90, 0, 0)); } + }