From 735588bb77b8296bdb34a5e9bc7d0d26a7a32780 Mon Sep 17 00:00:00 2001 From: Juseperez Date: Tue, 12 Nov 2024 17:59:16 -0500 Subject: [PATCH 1/3] ChestCodeBlock modificado --- .../ryanland/dfschematics/df/code/ChestCodeBlock.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java b/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java index 02d6e61..d10edd3 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/ChestCodeBlock.java @@ -9,13 +9,18 @@ /** * Represents a code block with a chest (can have parameters + tags) */ -public interface ChestCodeBlock extends CodeBlock { +public interface ChestCodeBlock{ List getParameters(); List getTags(); - @Override + String getBlock(); + + String getAction(); + + int getWeight(); + default JsonObject toJson() { JsonObject json = CodeBlock.super.toJson(); JsonObject args = new JsonObject(); From 7afdf330fccdd5f585bab5264b8ced608b30be77 Mon Sep 17 00:00:00 2001 From: Juseperez Date: Tue, 12 Nov 2024 18:30:42 -0500 Subject: [PATCH 2/3] Interface Segregation Principle --- src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java | 2 ++ .../java/net/ryanland/dfschematics/df/code/SetVariable.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java b/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java index e6b2b05..736a408 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/CodeBlock.java @@ -4,6 +4,8 @@ public interface CodeBlock { + List getParameters(); + String getBlock(); String getAction(); diff --git a/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java b/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java index d2d797b..d7a806b 100644 --- a/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java +++ b/src/main/java/net/ryanland/dfschematics/df/code/SetVariable.java @@ -1,6 +1,6 @@ package net.ryanland.dfschematics.df.code; -public abstract class SetVariable implements ChestCodeBlock { +public abstract class SetVariable implements CodeBlock { @Override public String getBlock() { From 01e94e774a554354ef4ed255a5f28ff2b300a8a6 Mon Sep 17 00:00:00 2001 From: Juseperez Date: Tue, 12 Nov 2024 20:01:21 -0500 Subject: [PATCH 3/3] Open Closed --- .../df/code/MessageHandlerRegistry.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java diff --git a/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java b/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java new file mode 100644 index 0000000..c4064ed --- /dev/null +++ b/src/main/java/net/ryanland/dfschematics/df/code/MessageHandlerRegistry.java @@ -0,0 +1,50 @@ +package net.ryanland.dfschematics.df.code; + +import com.google.gson.JsonObject; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MessageHandlerRegistry { + + + private static final Map handlers = new HashMap<>(); + + static { + handlers.put("default", new DefaultHandler()); + handlers.put("auth", new AuthHandler()); + handlers.put("write_code read_plot default", new AuthHandler()); + handlers.put("BASIC", new SizeHandler()); + handlers.put("LARGE", new SizeHandler()); + handlers.put("MASSIVE", new SizeHandler()); + handlers.put("MEGA", new SizeHandler()); + } + + interface MessageHandler { + void handle(String msg); + } + + // Implementación del manejador para el mensaje "default" + static class DefaultHandler implements MessageHandler { + @Override + public void handle(String msg) { + socket.send("scopes write_code read_plot"); + MainController.instance.error("Please authorize DFSchematics to place templates in-game..."); + } + } + + static class AuthHandler implements MessageHandler { + @Override + public void handle(String msg) { + socket.send("size"); + } + } + + static class SizeHandler implements MessageHandler { + @Override + public void handle(String msg) { + List codeBlocks = MainController.schematic.getTemplateFactory().generateCodeBlocks(); + placeTemplates(MainController.schematic.getTemplateFactory().splitCodeBlocks(codeBlocks)); + } + } +}