diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock index be9e907..d515487 100644 Binary files a/.gradle/7.4/checksums/checksums.lock and b/.gradle/7.4/checksums/checksums.lock differ diff --git a/.gradle/7.4/checksums/md5-checksums.bin b/.gradle/7.4/checksums/md5-checksums.bin index 3029ca1..0145441 100644 Binary files a/.gradle/7.4/checksums/md5-checksums.bin and b/.gradle/7.4/checksums/md5-checksums.bin differ diff --git a/.gradle/7.4/checksums/sha1-checksums.bin b/.gradle/7.4/checksums/sha1-checksums.bin index 7a5ec8c..cc2a6fc 100644 Binary files a/.gradle/7.4/checksums/sha1-checksums.bin and b/.gradle/7.4/checksums/sha1-checksums.bin differ diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin index 5419b73..f2ad004 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.bin and b/.gradle/7.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock index 8d7c461..2ce7d83 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.lock and b/.gradle/7.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.4/fileHashes/fileHashes.bin b/.gradle/7.4/fileHashes/fileHashes.bin index 26ac907..06dd9b1 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.bin and b/.gradle/7.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.4/fileHashes/fileHashes.lock b/.gradle/7.4/fileHashes/fileHashes.lock index 811fa7c..0b71b18 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.lock and b/.gradle/7.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.4/fileHashes/resourceHashesCache.bin b/.gradle/7.4/fileHashes/resourceHashesCache.bin index ede8d0e..1167e7b 100644 Binary files a/.gradle/7.4/fileHashes/resourceHashesCache.bin and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index edc8a32..fbb803f 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build.gradle b/build.gradle index 84c6140..a6e1a1c 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,10 @@ repositories { } dependencies { + implementation 'org.projectlombok:lombok:1.18.22' + implementation 'org.projectlombok:lombok:1.18.22' + implementation 'org.projectlombok:lombok:1.18.22' + // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" diff --git a/src/main/java/me/jonasjones/microcraft/board/MicrocontrollerBoardIcon.java b/src/main/java/me/jonasjones/microcraft/board/MicrocontrollerBoardIcon.java new file mode 100644 index 0000000..7a3f604 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/board/MicrocontrollerBoardIcon.java @@ -0,0 +1,7 @@ +package me.jonasjones.microcraft.board; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.minecraft.util.Identifier; + +public record MicrocontrollerBoardIcon(Identifier boardTextureHorizontal, Identifier boardTextureVertical, int width, int height) {} \ No newline at end of file diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java index 3aa3bd1..5c994f6 100644 --- a/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/BoardScreen.java @@ -1,6 +1,6 @@ package me.jonasjones.microcraft.gui.screens; -import me.jonasjones.microcraft.gui.widget.ArduinoNanoWidget; +import me.jonasjones.microcraft.gui.widget.BoardConfigwidget; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.screen.Screen; @@ -30,7 +30,7 @@ public class BoardScreen extends Screen { this.addDrawableChild(ButtonWidget.builder(ScreenTexts.DONE, (button) -> { this.client.setScreen(this.parent); }).dimensions(this.width / 2 - 100, this.height / 6 + 168, 200, 20).build()); - this.client.setScreen(new ArduinoNanoWidget(this.parent)); + this.client.setScreen(new BoardConfigwidget(this.parent)); } public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { diff --git a/src/main/java/me/jonasjones/microcraft/gui/screens/board/BoardIconSelectionScreen.java b/src/main/java/me/jonasjones/microcraft/gui/screens/board/BoardIconSelectionScreen.java new file mode 100644 index 0000000..646f012 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/screens/board/BoardIconSelectionScreen.java @@ -0,0 +1,50 @@ +package me.jonasjones.microcraft.gui.screens.board; + +import me.jonasjones.microcraft.Microcraft; +import me.jonasjones.microcraft.board.MicrocontrollerBoardIcon; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.TexturedButtonWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import static me.jonasjones.microcraft.gui.widget.BoardConfigwidget.BOARD_TEXTURE; + +public class BoardIconSelectionScreen extends Screen { + + private final Screen parent; + + private final MicrocontrollerBoardIcon NANO_BOARD_TEXTURE = new MicrocontrollerBoardIcon(new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano-sideways.png"), new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"), 128, 52); + private final MicrocontrollerBoardIcon UNO_BOARD_TEXTURE = new MicrocontrollerBoardIcon(new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-uno-sideways.png"), new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-uno.png"), 128, 90); + private final MicrocontrollerBoardIcon PROMINI_BOARD_TEXTURE = new MicrocontrollerBoardIcon(new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-pro_mini-sideways.png"), new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-pro_mini.png"), 97, 52); + + public BoardIconSelectionScreen(Screen parent) { + super(Text.of("Select Board Icon")); + this.parent = parent; + } + + protected void init() { + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 - 138, this.height / 2 - 85, NANO_BOARD_TEXTURE.width(), NANO_BOARD_TEXTURE.height(), 0, 0, 0, NANO_BOARD_TEXTURE.boardTextureHorizontal(), NANO_BOARD_TEXTURE.width(), NANO_BOARD_TEXTURE.height(), (buttonWidget) -> { + BOARD_TEXTURE = NANO_BOARD_TEXTURE; + this.client.setScreen(this.parent); + })); + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 - 138, this.height / 2 - 20, UNO_BOARD_TEXTURE.width(), UNO_BOARD_TEXTURE.height(), 0, 0, 0, UNO_BOARD_TEXTURE.boardTextureHorizontal(), UNO_BOARD_TEXTURE.width(), UNO_BOARD_TEXTURE.height(), (buttonWidget) -> { + BOARD_TEXTURE = UNO_BOARD_TEXTURE; + this.client.setScreen(this.parent); + })); + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 + 10, this.height / 2 - 85, PROMINI_BOARD_TEXTURE.width(), PROMINI_BOARD_TEXTURE.height(), 0, 0, 0, PROMINI_BOARD_TEXTURE.boardTextureHorizontal(), PROMINI_BOARD_TEXTURE.width(), PROMINI_BOARD_TEXTURE.height(), (buttonWidget) -> { + BOARD_TEXTURE = PROMINI_BOARD_TEXTURE; + this.client.setScreen(this.parent); + })); + this.addDrawableChild(ButtonWidget.builder(Text.of("Cancel"), (button) -> { + this.client.setScreen(this.parent); + }).dimensions(this.width / 2 - 100, this.height / 6 + 168, 200, 20).build()); + } + + 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/widget/ArduinoNanoWidget.java b/src/main/java/me/jonasjones/microcraft/gui/widget/ArduinoNanoWidget.java deleted file mode 100644 index 7dff256..0000000 --- a/src/main/java/me/jonasjones/microcraft/gui/widget/ArduinoNanoWidget.java +++ /dev/null @@ -1,69 +0,0 @@ -// -// 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(ButtonWidget.builder(Text.of("[Profile]"), (buttonWidget) -> this.client.setScreen(new ProfileSelectionScreen(this))).dimensions(this.width / 2 - 100, 40, 200, 20).build()); - - //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(ButtonWidget.builder(Text.of("About Microcraft"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this))).dimensions(this.width / 2 - 100, this.height - 30, 200, 20).build()); - this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this))).dimensions(this.width / 2 - 100, this.height - 55, 200, 20).build()); - this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this))).dimensions(this.width / 2 - 100, this.height - 80, 200, 20).build()); - this.addDrawableChild(ButtonWidget.builder(getToggleText(), (buttonWidget) -> Microcraft.toggle()).dimensions(this.width / 2 - 100, this.height - 105, 200, 20).build()); - this.addDrawableChild(ButtonWidget.builder(Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 60, this.height - 30, 50, 20).build()); - this.addDrawableChild(ButtonWidget.builder(Text.of("Write Program to Board"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 210, this.height - 30, 140, 20).build()); - this.addDrawableChild(ButtonWidget.builder(Text.of("Microcraft Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this))).dimensions(this.width - 210, this.height - 55, 200, 20).build()); - - - } - 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/microcraft/gui/widget/BoardConfigwidget.java b/src/main/java/me/jonasjones/microcraft/gui/widget/BoardConfigwidget.java new file mode 100644 index 0000000..11f7598 --- /dev/null +++ b/src/main/java/me/jonasjones/microcraft/gui/widget/BoardConfigwidget.java @@ -0,0 +1,76 @@ +// +// 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.board.MicrocontrollerBoardIcon; +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.BoardIconSelectionScreen; +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.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; + +@Environment(EnvType.CLIENT) +public class BoardConfigwidget extends Screen { + + private final Screen parent; + + //public static Identifier BOARD_TEXTURE = new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"); + + public static MicrocontrollerBoardIcon BOARD_TEXTURE = new MicrocontrollerBoardIcon(new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano-sideways.png"), new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"), 128, 52); + + public BoardConfigwidget(Screen parent) { + super(Text.of("Microcraft Configuration")); + this.parent = parent; + } + protected void init() { + //TODO: get current profile + addDrawableChild(ButtonWidget.builder(Text.of("[Profile]"), (buttonWidget) -> this.client.setScreen(new ProfileSelectionScreen(this))).dimensions(this.width / 2 - 50, this.height - 52, 100, 20).build()); + + //TODO: make Board texture clickable to select different texture. + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 - (BOARD_TEXTURE.height() / 2), this.height / 2 - (BOARD_TEXTURE.height() / 2) - 45, BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), 0, 0, 0, BOARD_TEXTURE.boardTextureVertical(), BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), (buttonWidget) -> this.client.setScreen(new BoardIconSelectionScreen(this)))); + + /*this.addDrawableChild(ButtonWidget.builder(Text.of("About Microcraft"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this))).dimensions(10, this.height - 30, 200, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this))).dimensions(this.width / 2 - 100, this.height - 55, 200, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this))).dimensions(this.width / 2 - 100, this.height - 80, 200, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 60, this.height - 30, 50, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Write to Board and Quit"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 210, this.height - 30, 140, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Microcraft Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this))).dimensions(this.width - 210, this.height - 55, 200, 20).build());*/ + + this.addDrawableChild(ButtonWidget.builder(Text.of("About"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this))) + .dimensions(this.width / 2 - 154, this.height - 28, 75, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this))) + .dimensions(this.width / 2 + 4 + 50, this.height - 52, 100, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this))) + .dimensions(this.width / 2 - 154, this.height - 52, 100, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent)) + .dimensions(this.width / 2 + 4 + 76, this.height - 28, 75, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Save"), (buttonWidget) -> this.client.setScreen(this.parent)) + .dimensions(this.width / 2, this.height - 28, 75 , 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this))) + .dimensions(this.width / 2 - 75, this.height - 28, 70, 20).build()); + + + } + + 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); + } + + + +}