diff --git a/.gitignore b/.gitignore index bf58783..3b5d139 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ run/ # OTHER MicrocontrollerMC-tmp +production diff --git a/libs/arduino.jar.disabled b/libs/arduino.jar.disabled new file mode 100644 index 0000000..db9f213 Binary files /dev/null and b/libs/arduino.jar.disabled differ diff --git a/libs/gson-2.2.4.jar b/libs/gson-2.2.4.jar new file mode 100644 index 0000000..9478253 Binary files /dev/null and b/libs/gson-2.2.4.jar differ diff --git a/libs/jSerialComm-2.9.2.jar b/libs/jSerialComm-2.9.2.jar new file mode 100644 index 0000000..1fdb293 Binary files /dev/null and b/libs/jSerialComm-2.9.2.jar differ diff --git a/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java b/src/main/java/me/jonasjones/microcraft/Microcraft.java similarity index 65% rename from src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java rename to src/main/java/me/jonasjones/microcraft/Microcraft.java index a983af9..79b36c8 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java +++ b/src/main/java/me/jonasjones/microcraft/Microcraft.java @@ -1,25 +1,32 @@ -package me.jonasjones.arduinoctrls; +package me.jonasjones.microcraft; -import me.jonasjones.arduinoctrls.config.ModConfigs; -import me.jonasjones.arduinoctrls.debug.LedBlink; -import me.jonasjones.arduinoctrls.util.VerboseLogger; +import me.jonasjones.microcraft.config.ModConfigs; +import me.jonasjones.microcraft.util.boardmanager.SerialNumberScanner; import net.fabricmc.api.ClientModInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ArduinoControls implements ClientModInitializer { +import java.io.IOException; + +public class Microcraft implements ClientModInitializer { // This logger is used to write text to the console and the log file. // It is considered best practice to use your mod id as the logger's name. // That way, it's clear which mod wrote info, warnings, and errors. - public static final String MOD_ID = "arduinoctrls"; + public static final String MOD_ID = "microcraft"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); public static Logger VERBOSELOGGER = LoggerFactory.getLogger(MOD_ID + " - VERBOSE LOGGER"); + public static boolean enabled = true; + + public static void toggle() { + enabled = !enabled; + } + @Override public void onInitializeClient() { //message from mod to confirm that it has been loaded - LOGGER.info("UwU from Arduino Controls!"); + LOGGER.info("Microcraft Initialized!"); // register configs ModConfigs.registerConfigs(); diff --git a/src/main/java/me/jonasjones/microcraft/config/BoardsConfig.java b/src/main/java/me/jonasjones/microcraft/config/BoardsConfig.java new file mode 100644 index 0000000..2e46448 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/config/BoardsConfig.java @@ -0,0 +1,80 @@ +package me.jonasjones.microcraft.config; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +public class BoardsConfig { + + public BoardsConfig() { + } + + // DON'T TOUCH THE FOLLOWING CODE + private static BoardsConfig instance; + + public static BoardsConfig getInstance() { + if (instance == null) { + instance = fromDefaults(); + } + return instance; + } + + public static void load(File file) { + instance = fromFile(file); + + // no config file found + if (instance == null) { + instance = fromDefaults(); + } + } + + public static void load(String file) { + load(new File(file)); + } + + private static BoardsConfig fromDefaults() { + BoardsConfig config = new BoardsConfig(); + return config; + } + + public void toFile(String file) { + toFile(new File(file)); + } + + public void toFile(File file) { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String jsonConfig = gson.toJson(this); + FileWriter writer; + try { + writer = new FileWriter(file); + writer.write(jsonConfig); + writer.flush(); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static BoardsConfig fromFile(File configFile) { + try { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(configFile))); + return gson.fromJson(reader, BoardsConfig.class); + } catch (FileNotFoundException e) { + return null; + } + } + + @Override + public String toString() { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + return gson.toJson(this); + }} diff --git a/src/main/java/me/jonasjones/arduinoctrls/config/ModConfigProvider.java b/src/main/java/me/jonasjones/microcraft/config/ModConfigProvider.java similarity index 86% rename from src/main/java/me/jonasjones/arduinoctrls/config/ModConfigProvider.java rename to src/main/java/me/jonasjones/microcraft/config/ModConfigProvider.java index a97bd22..8b4bfc4 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/config/ModConfigProvider.java +++ b/src/main/java/me/jonasjones/microcraft/config/ModConfigProvider.java @@ -1,8 +1,8 @@ -package me.jonasjones.arduinoctrls.config; +package me.jonasjones.microcraft.config; import com.mojang.datafixers.util.Pair; -import me.jonasjones.arduinoctrls.config.SimpleConfig.DefaultConfig; +import me.jonasjones.microcraft.config.SimpleConfig.DefaultConfig; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/me/jonasjones/arduinoctrls/config/ModConfigs.java b/src/main/java/me/jonasjones/microcraft/config/ModConfigs.java similarity index 95% rename from src/main/java/me/jonasjones/arduinoctrls/config/ModConfigs.java rename to src/main/java/me/jonasjones/microcraft/config/ModConfigs.java index 951d0f4..76557fc 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/config/ModConfigs.java +++ b/src/main/java/me/jonasjones/microcraft/config/ModConfigs.java @@ -1,9 +1,9 @@ -package me.jonasjones.arduinoctrls.config; +package me.jonasjones.microcraft.config; import com.mojang.datafixers.util.Pair; -import me.jonasjones.arduinoctrls.ArduinoControls; -import me.jonasjones.arduinoctrls.util.VerboseLogger; +import me.jonasjones.microcraft.Microcraft; +import me.jonasjones.microcraft.util.VerboseLogger; public class ModConfigs { public static SimpleConfig CONFIGMAIN; @@ -45,8 +45,8 @@ public class ModConfigs { createConfigs(); - CONFIGMAIN = SimpleConfig.of(ArduinoControls.MOD_ID + "-main").provider(configMain).request(); - CONFIGLISTS = SimpleConfig.of(ArduinoControls.MOD_ID + "-lists").provider(configLists).request(); + CONFIGMAIN = SimpleConfig.of(Microcraft.MOD_ID + "-main").provider(configMain).request(); + CONFIGLISTS = SimpleConfig.of(Microcraft.MOD_ID + "-lists").provider(configLists).request(); assignConfigs(); diff --git a/src/main/java/me/jonasjones/arduinoctrls/config/SimpleConfig.java b/src/main/java/me/jonasjones/microcraft/config/SimpleConfig.java similarity index 93% rename from src/main/java/me/jonasjones/arduinoctrls/config/SimpleConfig.java rename to src/main/java/me/jonasjones/microcraft/config/SimpleConfig.java index 1dbe4a0..dca047a 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/config/SimpleConfig.java +++ b/src/main/java/me/jonasjones/microcraft/config/SimpleConfig.java @@ -1,4 +1,4 @@ -package me.jonasjones.arduinoctrls.config; +package me.jonasjones.microcraft.config; /* * Copyright (c) 2021 magistermaks * Slightly modified by Jonas_Jones 2022 @@ -22,8 +22,8 @@ package me.jonasjones.arduinoctrls.config; * THE SOFTWARE. */ -import me.jonasjones.arduinoctrls.ArduinoControls; -import me.jonasjones.arduinoctrls.util.VerboseLogger; +import me.jonasjones.microcraft.Microcraft; +import me.jonasjones.microcraft.util.VerboseLogger; import net.fabricmc.loader.api.FabricLoader; import java.io.File; @@ -138,13 +138,13 @@ public class SimpleConfig { String identifier = "Config '" + request.filename + "'"; if (!request.file.exists()) { - ArduinoControls.LOGGER.info(identifier + " is missing, generating default one..."); + Microcraft.LOGGER.info(identifier + " is missing, generating default one..."); try { createConfig(); } catch (IOException e) { - ArduinoControls.LOGGER.error(identifier + " failed to generate!"); - ArduinoControls.LOGGER.trace(String.valueOf(e)); + Microcraft.LOGGER.error(identifier + " failed to generate!"); + Microcraft.LOGGER.trace(String.valueOf(e)); broken = true; } } @@ -153,8 +153,8 @@ public class SimpleConfig { try { loadConfig(); } catch (Exception e) { - ArduinoControls.LOGGER.error(identifier + " failed to load!"); - ArduinoControls.LOGGER.trace(String.valueOf(e)); + Microcraft.LOGGER.error(identifier + " failed to load!"); + Microcraft.LOGGER.trace(String.valueOf(e)); broken = true; } } diff --git a/src/main/java/me/jonasjones/microcraft/data/BoardData.java b/src/main/java/me/jonasjones/microcraft/data/BoardData.java new file mode 100644 index 0000000..0ce90fa --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/data/BoardData.java @@ -0,0 +1,12 @@ +package me.jonasjones.microcraft.data; + +public class BoardData { + public int arduinoNanoPins = 22; + + public enum board { + Custom, + ArduinoNano, + ArduinoUno, + ArduinoProMini + } +} diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java new file mode 100644 index 0000000..ee56321 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java @@ -0,0 +1,41 @@ +package me.jonasjones.microcraft.gui.screens; + +import me.jonasjones.microcraft.gui.widget.ArduinoNanoWidget; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; +import net.minecraft.client.util.math.MatrixStack; + +@Environment(EnvType.CLIENT) +public class BoardScreen extends Screen { + private final Screen parent; + + public BoardScreen (Screen parent) { + super(Text.of("Microcraft Configuration")); + this.parent = parent; + } + protected void init() { + + + this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 12, 150, 20, Text.of("Configure Microcontrollers"), (button) -> { + this.client.setScreen(new SelectDevice(this)); + })); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 12, 150, 20, Text.of("Configure Microcraft"), (button) -> { + this.client.setScreen(new ModSettings(this)); + })); + + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> { + this.client.setScreen(this.parent); + })); + this.client.setScreen(new ArduinoNanoWidget(this.parent)); + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} \ No newline at end of file diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/GuiHome.java b/src/main/java/me/jonasjones/microcraft/gui/screens/GuiHome.java similarity index 81% rename from src/main/java/me/jonasjones/arduinoctrls/gui/screens/GuiHome.java rename to src/main/java/me/jonasjones/microcraft/gui/screens/GuiHome.java index e99dd71..ff129f9 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/GuiHome.java +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/GuiHome.java @@ -1,4 +1,4 @@ -package me.jonasjones.arduinoctrls.gui.screens; +package me.jonasjones.microcraft.gui.screens; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -13,7 +13,7 @@ public class GuiHome extends Screen { private final Screen parent; public GuiHome (Screen parent) { - super(Text.of("MicrocontrollerMC Controls")); + super(Text.of("Microcraft Configuration")); this.parent = parent; } protected void init() { @@ -22,13 +22,14 @@ public class GuiHome extends Screen { this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 12, 150, 20, Text.of("Configure Microcontrollers"), (button) -> { this.client.setScreen(new SelectDevice(this)); })); - this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 12, 150, 20, Text.of("Configure MicrocontrollerMC"), (button) -> { + this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 12, 150, 20, Text.of("Configure Microcraft"), (button) -> { this.client.setScreen(new ModSettings(this)); })); this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> { this.client.setScreen(this.parent); })); + this.addDrawableChild(new net.minecraft.client.gui.widget.CheckboxWidget(50, 50, 100, 20, Text.of("uwu checkbox"), false)); } public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/ModCreditsScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/ModCreditsScreen.java new file mode 100644 index 0000000..74f5890 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/ModCreditsScreen.java @@ -0,0 +1,24 @@ +package me.jonasjones.microcraft.gui.screens; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +@Environment(EnvType.CLIENT) +public class ModCreditsScreen extends Screen { + + private final Screen parent; + + public ModCreditsScreen(Screen parent) { + super(Text.of("About Microcraft")); + this.parent = parent; + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java b/src/main/java/me/jonasjones/microcraft/gui/screens/ModSettings.java similarity index 96% rename from src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java rename to src/main/java/me/jonasjones/microcraft/gui/screens/ModSettings.java index 52fdd0c..9cd1cce 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/ModSettings.java @@ -1,4 +1,4 @@ -package me.jonasjones.arduinoctrls.gui.screens; +package me.jonasjones.microcraft.gui.screens; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java b/src/main/java/me/jonasjones/microcraft/gui/screens/ObjectSelectionList.java similarity index 74% rename from src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java rename to src/main/java/me/jonasjones/microcraft/gui/screens/ObjectSelectionList.java index 8a80760..75e5c26 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/ObjectSelectionList.java @@ -1,4 +1,4 @@ -package me.jonasjones.arduinoctrls.gui.screens; +package me.jonasjones.microcraft.gui.screens; import java.awt.*; diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/SelectDevice.java b/src/main/java/me/jonasjones/microcraft/gui/screens/SelectDevice.java similarity index 94% rename from src/main/java/me/jonasjones/arduinoctrls/gui/screens/SelectDevice.java rename to src/main/java/me/jonasjones/microcraft/gui/screens/SelectDevice.java index 0254bcf..9a41737 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/SelectDevice.java +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/SelectDevice.java @@ -1,4 +1,4 @@ -package me.jonasjones.arduinoctrls.gui.screens; +package me.jonasjones.microcraft.gui.screens; import com.mojang.logging.LogUtils; import net.fabricmc.api.EnvType; @@ -49,10 +49,10 @@ public class SelectDevice extends Screen { this.client.keyboard.setRepeatEvents(true); this.searchBox = new TextFieldWidget(this.textRenderer, this.width / 2 - 100, 22, 200, 20, this.searchBox, Text.translatable("selectWorld.search")); this.searchBox.setChangedListener((search) -> { - this.levelList.filter(search); + //this.levelList.filter(search); }); SelectWorldScreen uwu = new SelectWorldScreen(this); - this.levelList = new WorldListWidget(uwu, this.client, this.width, this.height, 48, this.height - 64, 36, this.getSearchFilter(), this.levelList); + //this.levelList = new WorldListWidget(uwu, this.client, this.width, this.height, 48, this.height - 64, 36, this.getSearchFilter(), this.levelList); this.addSelectableChild(this.searchBox); this.addSelectableChild(this.levelList); this.selectButton = (ButtonWidget)this.addDrawableChild(new ButtonWidget(this.width / 2 - 154, this.height - 52, 150, 20, Text.translatable("selectWorld.select"), (button) -> { @@ -91,7 +91,7 @@ public class SelectDevice extends Screen { public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { this.tooltip = null; - this.levelList.render(matrices, mouseX, mouseY, delta); + //this.levelList.render(matrices, mouseX, mouseY, delta); this.searchBox.render(matrices, mouseX, mouseY, delta); drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 8, 16777215); super.render(matrices, mouseX, mouseY, delta); diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedPinMappingScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedPinMappingScreen.java new file mode 100644 index 0000000..d98782d --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedPinMappingScreen.java @@ -0,0 +1,21 @@ +package me.jonasjones.microcraft.gui.screens.board; + +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class AdvancedPinMappingScreen extends Screen { + + private final Screen parent; + + public AdvancedPinMappingScreen(Screen parent) { + super(Text.of("Advanced Pin Mapping")); + this.parent = parent; + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedSettingsScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedSettingsScreen.java new file mode 100644 index 0000000..a120ce1 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/board/AdvancedSettingsScreen.java @@ -0,0 +1,21 @@ +package me.jonasjones.microcraft.gui.screens.board; + +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class AdvancedSettingsScreen extends Screen { + + private final Screen parent; + + public AdvancedSettingsScreen(Screen parent) { + super(Text.of("Advanced Board Settings")); + this.parent = parent; + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/board/ProfileSelectionScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/board/ProfileSelectionScreen.java new file mode 100644 index 0000000..bac0009 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/board/ProfileSelectionScreen.java @@ -0,0 +1,24 @@ +package me.jonasjones.microcraft.gui.screens.board; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +@Environment(EnvType.CLIENT) +public class ProfileSelectionScreen extends Screen { + + private final Screen parent; + + public ProfileSelectionScreen(Screen parent) { + super(Text.of("Profile Selection Screen")); + this.parent = parent; + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/board/TextureSelectScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/board/TextureSelectScreen.java new file mode 100644 index 0000000..a7b4fb1 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/board/TextureSelectScreen.java @@ -0,0 +1,42 @@ +package me.jonasjones.microcraft.gui.screens.board; + +import me.jonasjones.microcraft.gui.screens.ModSettings; +import me.jonasjones.microcraft.gui.screens.SelectDevice; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; +import net.minecraft.client.util.math.MatrixStack; + +@Environment(EnvType.CLIENT) +public class TextureSelectScreen extends Screen { + private final Screen parent; + + public TextureSelectScreen(Screen parent) { + super(Text.of("Microcraft Configuration")); + this.parent = parent; + } + protected void init() { + + + this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 12, 150, 20, Text.of("Configure Microcontrollers"), (button) -> { + this.client.setScreen(new SelectDevice(this)); + })); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 12, 150, 20, Text.of("Configure Microcraft"), (button) -> { + this.client.setScreen(new ModSettings(this)); + })); + + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> { + this.client.setScreen(this.parent); + })); + this.addDrawableChild(new net.minecraft.client.gui.widget.CheckboxWidget(50, 50, 100, 20, Text.of("uwu checkbox"), false)); + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } +} \ No newline at end of file diff --git a/src/main/java/me/jonasjones/microcraft/gui/widget/ArduinoNanoWidget.java b/src/main/java/me/jonasjones/microcraft/gui/widget/ArduinoNanoWidget.java new file mode 100644 index 0000000..a9e1e54 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/widget/ArduinoNanoWidget.java @@ -0,0 +1,70 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package me.jonasjones.microcraft.gui.widget; + +import me.jonasjones.microcraft.Microcraft; +import me.jonasjones.microcraft.gui.screens.ModSettings; +import me.jonasjones.microcraft.gui.screens.board.AdvancedPinMappingScreen; +import me.jonasjones.microcraft.gui.screens.board.AdvancedSettingsScreen; +import me.jonasjones.microcraft.gui.screens.board.ProfileSelectionScreen; +import me.jonasjones.microcraft.gui.screens.ModCreditsScreen; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.minecraft.client.gui.widget.TexturedButtonWidget; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.ScrollableWidget; + +@Environment(EnvType.CLIENT) +public class ArduinoNanoWidget extends Screen { + + private final Screen parent; + + Identifier BOARD_TEXTURE = new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"); + + public ArduinoNanoWidget (Screen parent) { + super(Text.of("Microcraft Configuration")); + this.parent = parent; + } + protected void init() { + //TODO: get current profile + addDrawableChild(new ButtonWidget(this.width / 2 - 100, 40, 200, 20, Text.of("[Profile]"), (buttonWidget) -> this.client.setScreen(new ProfileSelectionScreen(this)))); + + //TODO: make Board texture clickable to select different texture. + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 - 26, this.height / 2 - 65, 52, 130, 0, 0, 130, BOARD_TEXTURE, 52, 130, (buttonWidget) -> this.client.setScreen(this))); + + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 30, 200, 20, Text.of("About Microcraft"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this)))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 55, 200, 20, Text.of("Advanced Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this)))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 80, 200, 20, Text.of("Advanced Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this)))); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 105, 200, 20, getToggleText(), (buttonWidget) -> Microcraft.toggle())); + this.addDrawableChild(new ButtonWidget(this.width - 60, this.height - 30, 50, 20, Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent))); + this.addDrawableChild(new ButtonWidget(this.width - 210, this.height - 30, 140, 20, Text.of("Write Program to Board"), (buttonWidget) -> this.client.setScreen(this.parent))); + this.addDrawableChild(new ButtonWidget(this.width - 210, this.height - 55, 200, 20, Text.of("Microcraft Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this)))); + + this.addDrawableChild(new ) + + } + private Text getToggleText() { + if (Microcraft.enabled) { + return Text.of("Microcraft: enabled"); + } else { + return Text.of("Microcraft: disabled"); + } + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + drawCenteredText(matrices, this.textRenderer, this.title, this.width / 2, 15, 16777215); + super.render(matrices, mouseX, mouseY, delta); + } + + + +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java b/src/main/java/me/jonasjones/microcraft/mixin/GameMenuScreenMixin.java similarity index 81% rename from src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java rename to src/main/java/me/jonasjones/microcraft/mixin/GameMenuScreenMixin.java index 861fb39..d498269 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java +++ b/src/main/java/me/jonasjones/microcraft/mixin/GameMenuScreenMixin.java @@ -1,6 +1,6 @@ -package me.jonasjones.arduinoctrls.mixin; +package me.jonasjones.microcraft.mixin; -import me.jonasjones.arduinoctrls.gui.screens.GuiHome; +import me.jonasjones.microcraft.gui.screens.GuiHome; import net.minecraft.client.gui.screen.GameMenuScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; @@ -12,16 +12,17 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static me.jonasjones.microcraft.Microcraft.MOD_ID; + @Mixin(GameMenuScreen.class) public class GameMenuScreenMixin extends Screen { - final Identifier ICON_TEXTURE = new Identifier("arduinoctrls", "logo_16x9.png"); protected GameMenuScreenMixin(Text title) {super(title);} @Inject(at = @At("HEAD"),method = "initWidgets") private void gameMenuScreenButton(CallbackInfo ci) { - final Identifier ICON_TEXTURE = new Identifier("arduinoctrls", "gui/button_icon.png"); + final Identifier ICON_TEXTURE = new Identifier(MOD_ID, "gui/button_icon.png"); int buttonX = this.width / 2 + 108; int buttonY = this.height / 4 + 8; diff --git a/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java b/src/main/java/me/jonasjones/microcraft/mixin/TitleScreenButtonMixin.java similarity index 66% rename from src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java rename to src/main/java/me/jonasjones/microcraft/mixin/TitleScreenButtonMixin.java index 3d062b4..51b4506 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java +++ b/src/main/java/me/jonasjones/microcraft/mixin/TitleScreenButtonMixin.java @@ -1,6 +1,7 @@ -package me.jonasjones.arduinoctrls.mixin; +package me.jonasjones.microcraft.mixin; -import me.jonasjones.arduinoctrls.gui.screens.GuiHome; +import me.jonasjones.microcraft.gui.screens.BoardScreen; +import me.jonasjones.microcraft.gui.screens.GuiHome; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.TitleScreen; import net.minecraft.client.gui.widget.ButtonWidget; @@ -12,23 +13,25 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static me.jonasjones.microcraft.Microcraft.MOD_ID; + @Mixin(TitleScreen.class) -public abstract class ArduinoMixin extends Screen { - protected ArduinoMixin(Text title) { +public abstract class TitleScreenButtonMixin extends Screen { + protected TitleScreenButtonMixin(Text title) { super(title); } @Inject(at = @At("RETURN"), method = "initWidgetsNormal") private void titleScreenButton(int y, int spacingY, CallbackInfo ci) { - final Identifier ICON_TEXTURE = new Identifier("arduinoctrls", "gui/button_icon.png"); + final Identifier ICON_TEXTURE = new Identifier(MOD_ID, "textures/gui/button_icon.png"); int buttonX = this.width / 2 + 104; int buttonY = y + spacingY * 2; this.addDrawableChild(new ButtonWidget(buttonX, buttonY, 20, 20, Text.of(""), (button) -> { - this.client.setScreen(new GuiHome(this)); + this.client.setScreen(new BoardScreen(this)); })); - this.addDrawableChild( new TexturedButtonWidget(buttonX, buttonY, 20, 20, 0, 0, 0, ICON_TEXTURE, 20, 20, (buttonWidget) -> this.client.setScreen(new GuiHome(this)))); + this.addDrawableChild( new TexturedButtonWidget(buttonX, buttonY, 20, 20, 0, 0, 0, ICON_TEXTURE, 20, 20, (buttonWidget) -> this.client.setScreen(new BoardScreen(this)))); } } \ No newline at end of file diff --git a/src/main/java/me/jonasjones/microcraft/object/MicroBoard.java b/src/main/java/me/jonasjones/microcraft/object/MicroBoard.java new file mode 100644 index 0000000..c5d513c --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/object/MicroBoard.java @@ -0,0 +1,11 @@ +package me.jonasjones.microcraft.object; + +public class MicroBoard { + + public String name; + public int id; + public String port; + public int baudrate; + public String model; + public PinMap pins = new PinMap(); +} diff --git a/src/main/java/me/jonasjones/microcraft/object/PinMap.java b/src/main/java/me/jonasjones/microcraft/object/PinMap.java new file mode 100644 index 0000000..d09b5a9 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/object/PinMap.java @@ -0,0 +1,4 @@ +package me.jonasjones.microcraft.object; + +public class PinMap { + } \ No newline at end of file diff --git a/src/main/java/me/jonasjones/arduinoctrls/util/VerboseLogger.java b/src/main/java/me/jonasjones/microcraft/util/VerboseLogger.java similarity index 52% rename from src/main/java/me/jonasjones/arduinoctrls/util/VerboseLogger.java rename to src/main/java/me/jonasjones/microcraft/util/VerboseLogger.java index ed7624a..7350639 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/util/VerboseLogger.java +++ b/src/main/java/me/jonasjones/microcraft/util/VerboseLogger.java @@ -1,33 +1,32 @@ -package me.jonasjones.arduinoctrls.util; +package me.jonasjones.microcraft.util; -import jdk.jfr.StackTrace; -import me.jonasjones.arduinoctrls.ArduinoControls; -import me.jonasjones.arduinoctrls.config.ModConfigs; +import me.jonasjones.microcraft.Microcraft; +import me.jonasjones.microcraft.config.ModConfigs; public class VerboseLogger { public static void info(String message) { if (ModConfigs.VERBOSE) { - ArduinoControls.VERBOSELOGGER.info(message); + Microcraft.VERBOSELOGGER.info(message); } } public void debug(String message) { if (ModConfigs.VERBOSE) { - ArduinoControls.VERBOSELOGGER.debug(message); + Microcraft.VERBOSELOGGER.debug(message); } } public static void error(String message) { if (ModConfigs.VERBOSE) { - ArduinoControls.VERBOSELOGGER.error(message); + Microcraft.VERBOSELOGGER.error(message); } } public static void trace( String message) { if (ModConfigs.VERBOSE) { - ArduinoControls.VERBOSELOGGER.trace(message); + Microcraft.VERBOSELOGGER.trace(message); } } public static void warn( String message) { if (ModConfigs.VERBOSE) { - ArduinoControls.VERBOSELOGGER.warn(message); + Microcraft.VERBOSELOGGER.warn(message); } } } diff --git a/src/main/java/me/jonasjones/microcraft/util/boardmanager/SerialNumberScanner.java b/src/main/java/me/jonasjones/microcraft/util/boardmanager/SerialNumberScanner.java new file mode 100644 index 0000000..8a52f71 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/util/boardmanager/SerialNumberScanner.java @@ -0,0 +1,20 @@ +package me.jonasjones.microcraft.util.boardmanager; + + +import com.fazecast.jSerialComm.SerialPort; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class SerialNumberScanner { + public static List scan() { + SerialPort[] ports = SerialPort.getCommPorts(); + List list = new ArrayList(); + for (SerialPort port : ports) { + System.out.println(port.getSystemPortName()); + list.add(port.getSystemPortName()); + } + return list; + } +} diff --git a/src/main/resources/assets/arduinoctrls/icon.png b/src/main/resources/assets/arduinoctrls/icon.png deleted file mode 100644 index 047b91f..0000000 Binary files a/src/main/resources/assets/arduinoctrls/icon.png and /dev/null differ diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-nano-sideways.png b/src/main/resources/assets/microcraft/textures/boards/arduino-nano-sideways.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-nano-sideways.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-nano-sideways.png diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-nano.aseprite b/src/main/resources/assets/microcraft/textures/boards/arduino-nano.aseprite similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-nano.aseprite rename to src/main/resources/assets/microcraft/textures/boards/arduino-nano.aseprite diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-nano.png b/src/main/resources/assets/microcraft/textures/boards/arduino-nano.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-nano.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-nano.png diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini-sideways.png b/src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini-sideways.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini-sideways.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini-sideways.png diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini.aseprite b/src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini.aseprite similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini.aseprite rename to src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini.aseprite diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini.png b/src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-pro_mini.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-pro_mini.png diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-uno-old.aseprite b/src/main/resources/assets/microcraft/textures/boards/arduino-uno-old.aseprite similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-uno-old.aseprite rename to src/main/resources/assets/microcraft/textures/boards/arduino-uno-old.aseprite diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-uno-sideways.png b/src/main/resources/assets/microcraft/textures/boards/arduino-uno-sideways.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-uno-sideways.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-uno-sideways.png diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-uno.aseprite b/src/main/resources/assets/microcraft/textures/boards/arduino-uno.aseprite similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-uno.aseprite rename to src/main/resources/assets/microcraft/textures/boards/arduino-uno.aseprite diff --git a/src/main/resources/assets/arduinoctrls/boards/arduino-uno.png b/src/main/resources/assets/microcraft/textures/boards/arduino-uno.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/boards/arduino-uno.png rename to src/main/resources/assets/microcraft/textures/boards/arduino-uno.png diff --git a/src/main/resources/assets/arduinoctrls/gui/arduino_original.png b/src/main/resources/assets/microcraft/textures/gui/arduino_original.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/gui/arduino_original.png rename to src/main/resources/assets/microcraft/textures/gui/arduino_original.png diff --git a/src/main/resources/assets/arduinoctrls/gui/button_icon.png b/src/main/resources/assets/microcraft/textures/gui/button_icon.png similarity index 100% rename from src/main/resources/assets/arduinoctrls/gui/button_icon.png rename to src/main/resources/assets/microcraft/textures/gui/button_icon.png diff --git a/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.aseprite b/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.aseprite new file mode 100644 index 0000000..6f00b40 Binary files /dev/null and b/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.aseprite differ diff --git a/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.png b/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.png new file mode 100644 index 0000000..4666d3f Binary files /dev/null and b/src/main/resources/assets/microcraft/textures/gui/buttons/arduino-nano-board.png differ diff --git a/src/main/resources/arduinoctrls.mixins.json b/src/main/resources/microcraft.mixins.json similarity index 71% rename from src/main/resources/arduinoctrls.mixins.json rename to src/main/resources/microcraft.mixins.json index 1a00171..8364ea5 100644 --- a/src/main/resources/arduinoctrls.mixins.json +++ b/src/main/resources/microcraft.mixins.json @@ -1,12 +1,12 @@ { "required": true, "minVersion": "0.8", - "package": "me.jonasjones.arduinoctrls.mixin", + "package": "me.jonasjones.microcraft.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ], "client": [ - "ArduinoMixin", + "TitleScreenButtonMixin", "GameMenuScreenMixin" ], "injectors": {