From 36f0eeb701c12ed98bfa11e89485c9b4ca1196b5 Mon Sep 17 00:00:00 2001 From: Jonas_Jones <91549607+J-onasJones@users.noreply.github.com> Date: Fri, 24 Jun 2022 20:31:00 +0200 Subject: [PATCH] Added GUI screens and did some cleanup --- .gradle/7.4/checksums/checksums.lock | Bin 17 -> 17 bytes .../7.4/executionHistory/executionHistory.bin | Bin 207471 -> 207471 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../arduinoctrls.mixins.json | 3 +- .../arduinoctrls/gui/arduino_original.png | Bin 0 -> 570 bytes .../assets/arduinoctrls/gui/button_icon.png | Bin 0 -> 566 bytes .../assets/{modid => arduinoctrls}/icon.png | Bin .../arduinoctrls/ArduinoControls.class | Bin 1057 -> 1051 bytes .../jonasjones/arduinoctrls/gui/GuiHome.class | Bin 0 -> 3389 bytes .../arduinoctrls/gui/SelectDevice.class | Bin 0 -> 8625 bytes .../arduinoctrls/gui/boards/ArduinoNano.class | Bin 0 -> 334 bytes .../gui/boards/ArduinoProMini.class | Bin 0 -> 343 bytes .../arduinoctrls/gui/boards/ArduinoUno.class | Bin 0 -> 331 bytes .../gui/screens/ModSettings.class | Bin 0 -> 3173 bytes .../gui/screens/ObjectSelectionList.class | Bin 0 -> 549 bytes .../arduinoctrls/mixin/ArduinoMixin.class | Bin 2841 -> 3188 bytes .../mixin/GameMenuScreenMixin.class | Bin 0 -> 3257 bytes .../arduinoctrls/ArduinoControls.java | 11 +- .../jonasjones/arduinoctrls/gui/GuiHome.java | 40 ++++++ .../arduinoctrls/gui/SelectDevice.java | 127 ++++++++++++++++++ .../arduinoctrls/gui/boards/ArduinoNano.java | 4 + .../gui/boards/ArduinoProMini.java | 4 + .../arduinoctrls/gui/boards/ArduinoUno.java | 4 + .../arduinoctrls/gui/screens/ModSettings.java | 39 ++++++ .../gui/screens/ObjectSelectionList.java | 7 + .../arduinoctrls/mixin/ArduinoMixin.java | 23 ++-- .../mixin/GameMenuScreenMixin.java | 35 +++++ src/main/resources/arduinoctrls.mixins.json | 3 +- .../arduinoctrls/gui/arduino_original.png | Bin 0 -> 570 bytes .../assets/arduinoctrls/gui/button_icon.png | Bin 0 -> 566 bytes .../assets/{modid => arduinoctrls}/icon.png | Bin 32 files changed, 288 insertions(+), 12 deletions(-) create mode 100644 production/MinecraftArduinoControls.main/assets/arduinoctrls/gui/arduino_original.png create mode 100644 production/MinecraftArduinoControls.main/assets/arduinoctrls/gui/button_icon.png rename production/MinecraftArduinoControls.main/assets/{modid => arduinoctrls}/icon.png (100%) create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/GuiHome.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/SelectDevice.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoUno.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ModSettings.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.class create mode 100644 production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.class create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/GuiHome.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/SelectDevice.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoUno.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java create mode 100644 src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java create mode 100644 src/main/resources/assets/arduinoctrls/gui/arduino_original.png create mode 100644 src/main/resources/assets/arduinoctrls/gui/button_icon.png rename src/main/resources/assets/{modid => arduinoctrls}/icon.png (100%) diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock index 22b93cb1d3796a31eeb4d1f6f649710c25e63f30..4f17f952973beda10190e6b285d8390bb5b9d842 100644 GIT binary patch literal 17 UcmZRc(rw)GBzArX0|YDw05hiqwEzGB literal 17 UcmZRc(rw)GBzArX0|d+m05hKitpET3 diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin index 970e5d8353c1286df1acc2bb570ae0bbc88c8fcb..38d80c45115b788841c404571364ed33bd22173d 100644 GIT binary patch delta 10736 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 A*#H0l diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock index 907ea32df6687822a3887972ada1c178f94a5288..15c8c0bcd4800085b487d7a0304149b93fd1f54f 100644 GIT binary patch literal 17 UcmZS1QkMLE^yu>C3=p6X05w$vtN;K2 literal 17 UcmZS1QkMLE^yu>C3=p6J05whor2qf` diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index ccb6e9aa6c2b722ac4a5370135b96e0a552200c6..5a282b2508688cd4979c62f860d1406475da83cf 100644 GIT binary patch literal 17 TcmZQRTgXt9BiHG|00AigC;0%A_P)b+m}YQ3-N=w45l8rV98Cp6tC2u}-#Hw(JrUEw}0 z9a|SZ7WNr(K;avu$E*CRI926O#l~V}7VN60C)L352G-I>R(Mp{o6Qup+IiGXT#4M$ zg498oLzqMe5yV5BA{%5V;Fp?{%$oZG72h0r@o4hbDPf2sMOwT*QH#Omi(2Ys)Y z5^G9BI4Bp!+I3w<49|(}$c%aCbq>T`ObORAy&7phE4>zm20?WYv`F7QETN4Pkb@ZV zE~HqA)h7$oE^+1@8&$yPcC6{tEonyxauo7> literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/assets/arduinoctrls/gui/button_icon.png b/production/MinecraftArduinoControls.main/assets/arduinoctrls/gui/button_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70113e3b0bdb9262043814da8eceef10db4b5009 GIT binary patch literal 566 zcmV-60?GY}P)b+m}YQ3-N=w45l8rV98Cp6tC2u}-#Hw(JrUEw}0 z9a|SZ7WNr(K;avu$E*CRI926O#l~V}7VN60C)L352G-I>R(Mp{o6Qup+IiGXT#4M$ zg498oLzqMe5yV5BA{%5V;Fp?{%$oZG72h0r@o4hbDPf2sMOwT*QH#7zOx3AbN}Ye~>&njZY5~ zErOILhSI{J42%R!1&1dNfKx9EvIbaWfW(&i?1X8;rWqyj(9{$3Je@1(!={68i-GPZI^Bd7mc1Iyejk05W4U3`RXRh5!Hn07*qoM6N<$ Ef|%;>v;Y7A literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/assets/modid/icon.png b/production/MinecraftArduinoControls.main/assets/arduinoctrls/icon.png similarity index 100% rename from production/MinecraftArduinoControls.main/assets/modid/icon.png rename to production/MinecraftArduinoControls.main/assets/arduinoctrls/icon.png diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/ArduinoControls.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/ArduinoControls.class index 5b0630fe46ed439715a4c024bac171ad80a645dc..9314d6b3ac5481fc14217dc1727b5965c9432f74 100644 GIT binary patch delta 352 zcmYLDJ5R!36g^)nwtf~LL@`3uufFjCz6KWuLTh3|S~YcKsM4XKLV`H>J32ZsIad~R zaB%cT8E=cx+~nrmbI-l!^wnpTe|^7y064=*%w5({vBYqC?ggRW6upkP_gcQFcAJku zyCdqBDQ?4{-71UfwRv-4JHmEcQFCnDs=1bFs90gpypjB_*9{*y46G_x)3A<>=#yQs zt-+i$#uhfgu!u=$WG)lVV4V7PRFU(I5^>1{sMw*dr8t9K?9s%qKhhF@f`Y5}QpD%i+dF_m?8l+gk_Eu4XemCd+dZ2 z+PXBv9`j(B#t1aZkRmK&m}-$Gi#nq&7dl`u0SP6l$r(_vMpgSEV4cVyyfF|r=$S-2 z^94MuzhYEE7ZcCW%ROYyiyh2<#3T>`I>ulSyVPu@OvfOce4ZrrI8(FwFL8fSS&BvDgMr60?7aldQY6ld$&V zjA@(V9K*nHL+p{c4n)u$LR7(1*hT0?u3mF&&7%kRRLwO?rtRp$wLD+Pg_1et6gi=< zXf7#cs0MFjP%?x)3`ZJTf88|l#M)R%2*;lH7t*%93VPAU&`RG$fq|vv+W`gprRa+~B)g2`+MV^YBdOi_shYEA5OUn&x)|rHrq08d#~h_|$}y-Pc4f%_=~8i#yR)+J z7@`?R*Q`0sHRZbevPBe3s)5JuJcKX1I79RB2q|l))OJZXK^&5Z5n*s$>nr&Fzi)9>VxwMk3 zy*5<5*|O2M{C|B6R93301sk<4X8n;iE23QO z#*dL*(fy<~aUX-g8e(^Gc)miu{c5%JXdr#Go^-@m2k*wug#K4#*RME6*rzt6H{FVo zu|N-wqmP`}kMD>n>6#K4U3QJhQ>pCGZDOvKB;twDyLfh#EPH{*SsLV7q$~RJJ)BRB z4(#h`S;IuNq8M$BqaTM5!(m_1sQ_$)!#Ff7`pV$Sow+@LCF}qE(FGxyW*}kNk?$>P{_=Y0?J$nBG*;$_! literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/SelectDevice.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/SelectDevice.class new file mode 100644 index 0000000000000000000000000000000000000000..d64964fc116a3c74a728be431e92e2238bfaaf53 GIT binary patch literal 8625 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 literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.class new file mode 100644 index 0000000000000000000000000000000000000000..cda32cc2f27a74360f5a674928b2822dffa763fc GIT binary patch literal 334 zcmb7tPXnRQh&NyZ1}wzLkA#qzqILjvze%m)D77U!;k}rU7BSt^uH}Bo z-o*STv*E=A!d1QVOV@<*$&J3%k0xGU{rkm5EQb>m(m4*2DXoS3lGHW>`T0BOO+|Jz2g2!gpUZkEiEt!LF#7?JR#4^u literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.class new file mode 100644 index 0000000000000000000000000000000000000000..9721fd3f547ada379eb8009fd1dfd658f2c824bc GIT binary patch literal 343 zcmbV{%}N6?6ot>7pN@{LE%gc9sSC3aH&#IkT}`W?bf1}qnqitiGSm0!N^s!=_)y|a z>&C4Ke7Wab$i3(5`{NV9Jw`bq#2J!4QuGL;T5hFiq*;rnvQ||~=uNcI?E@jcxLjs9 zBHV10sI8Hnp}df8)oEj^)-_(NJ1t7fmKTo)|Jm6&|3FBlcBKfzLL0T{Hl=c}vTWEH z7q*hkQaT;7pN@{zDSZQX>cWWIRzU<;L%V40J~It9!!&_prtj62;KB#+p~Rai zbZr7(a=t*4^Y#7l3E%;v91-FS$q*?9gi#}RQnb=+#Jp-$-4O;;ZFKiYh_9|!8BPdy zTO}H6q-Q8Eq+9pe*t&DA7n@#-%Chp}>DRv+OGuvWS`ms;8#U{!hQMQhbDx4VS87r7aeXdj(@lf&2Wi~3x`2Gxia&VlQ?7`y?F=iSwzU0 V;TVW<#vC5@DX-_82p7x<#SckYPt^bb literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ModSettings.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ModSettings.class new file mode 100644 index 0000000000000000000000000000000000000000..881ef92fac30d5a365b961c9f2e9e07f75714eeb GIT binary patch literal 3173 zcmbVOYj+bx7=EUgq)iu+hMR4<6lkzbfCWTF11e2hi6jL{Efg;>-JK>&H@k6nQoy^S zKfo`3@elY_k5Uet<7bb@-z2`Xo3?41)KikPlbxA&-uHQ*_cHnW-=}{9xP%}2(8VxZ zv<%NRTt|AYZ40lM8_k6ie*it`jUu8Uiav$|j*xoQa)jaWC8W?PeZv#N(M!P(L*%06 zSn@4~gX0}_Pt5ltfx#$}8unl>!?~)^@3{{5X%N27J+p2(t|2|!Z?fU*Mb|6|DG9kx zmTKH15Dcw`I)TeZv7g~&M^ElsW| zrfpHBsBY)vnn*uR;#3r;HRw3QFuFOgoAOeX0rA~4b!~QmAV7rDf|?E-QMGQ*}KkNjj7bbNzJ<7w`syrcB)kR0^+S z<}Oiv2bH@fnN=B=)o@Yy*()t+i*7uB{#+q_Tf;lJOh`>4IY-n9PncoZ`#VC~LP{gx zTd}mrZIDOVq(UD6mA>?N ztte#0HT`%5ZVWYi8il992LWf-iAHy52*Efok*YpXPhLaVRu! zg*&D#{IP=TF4t?>t=E6k%BF(>@)z0+O*Wg_s(50n<{Y=}k|jkpfyH<)?yJW3K!XTo zpQ+jB8aNiIgXSGacsZNpEX@hwAY3;pewjN%a`$M&KW z_mFlRCG;`6{;8(bza4t(rFW`+8s}(s6uHr!#*b{wpnY;R70XqnpM( z=%>TG=>ngp+5YedZsHcr=y0H#Y8(r=-BA1^onW+gC;bfj7Sg}tK(9TBpG|rjNkr^~ zc6SgzCH5u{lhyQ7i~_3|dyJQFHpwT@fTl=B1wtbTGxWqC zmq~D_Fp1?9}RB1^ighQ^?u|iMy_K@DbpuHsReMyP)b)+BP;5&Se Gq5l9fTy|9e literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.class new file mode 100644 index 0000000000000000000000000000000000000000..09a03505f323af59b71d2d820416fa436a8fb5b4 GIT binary patch literal 549 zcmbVIO;5r=5Pbus6+}T)#G^Ox;9fildNDB}Y4m{MzOb$*M+b%jYo3=J@KFN z=b*+~hegbr$4W;r&+KK@EqIX5uT(;7mX&#+ZnWKD@O`u&E1%hBIDyBPwyy^60GDNx zEy0>tH%?zcFO|E+(z=<%Hp}(~x3R-k6T9dzW0Pl94E`p%RpL1pU?;lRV{K87ku6Nv WXJqFg95AX^=n#E4%p9>*!{7@mFm}TL literal 0 HcmV?d00001 diff --git a/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.class b/production/MinecraftArduinoControls.main/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.class index 7a379f27e9df43ce9c3d4b9401ef885153822b0b..5c88a5cc61db4569bd9a545cf1d8f47c9d138a01 100644 GIT binary patch literal 3188 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 literal 0 HcmV?d00001 diff --git a/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java b/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java index 2270f64..fdf7326 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java +++ b/src/main/java/me/jonasjones/arduinoctrls/ArduinoControls.java @@ -21,7 +21,16 @@ public class ArduinoControls implements ModInitializer { try { LedBlink.initialisation(); } catch (InterruptedException e) { - throw new RuntimeException(e); + LOGGER.info("Failed to make Arduino LED blink. ARDUINO NOT CONNECTED!"); } } } +/* +//TODO: +- Full control over all programmable pins of all known raspberry pi's +- system to flash program onto arduino with ingame editor +- scratch system that allows for multiple event triggering when something happens +- cry because mojang UI system sucks ass +- make own library that allows for easy UI implementation + +*/ \ No newline at end of file diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/GuiHome.java b/src/main/java/me/jonasjones/arduinoctrls/gui/GuiHome.java new file mode 100644 index 0000000..3c31079 --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/GuiHome.java @@ -0,0 +1,40 @@ +package me.jonasjones.arduinoctrls.gui; + +import me.jonasjones.arduinoctrls.gui.screens.ModSettings; +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 GuiHome extends Screen { + private final Screen parent; + + public GuiHome (Screen parent) { + super(Text.of("MicrocontrollerMC Controls")); + 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("Settings"), (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); + })); + } + + 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/SelectDevice.java b/src/main/java/me/jonasjones/arduinoctrls/gui/SelectDevice.java new file mode 100644 index 0000000..12d8429 --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/SelectDevice.java @@ -0,0 +1,127 @@ +package me.jonasjones.arduinoctrls.gui; + +import com.mojang.logging.LogUtils; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.world.CreateWorldScreen; +import net.minecraft.client.gui.screen.world.SelectWorldScreen; +import net.minecraft.client.gui.screen.world.WorldListWidget; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.OrderedText; +import net.minecraft.text.Text; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; + +import java.util.List; +import java.util.function.Supplier; + +@Environment(EnvType.CLIENT) +public class SelectDevice extends Screen { + private static final Logger LOGGER = LogUtils.getLogger(); + protected final Screen parent; + @Nullable + private List tooltip; + private ButtonWidget deleteButton; + private ButtonWidget selectButton; + private ButtonWidget editButton; + private ButtonWidget recreateButton; + protected TextFieldWidget searchBox; + private WorldListWidget levelList; + + public SelectDevice(Screen parent) { + super(Text.translatable("selectWorld.title")); + this.parent = parent; + } + + public boolean mouseScrolled(double mouseX, double mouseY, double amount) { + return super.mouseScrolled(mouseX, mouseY, amount); + } + + public void tick() { + this.searchBox.tick(); + } + + protected void init() { + 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); + }); + 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.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) -> { + this.levelList.getSelectedAsOptional().ifPresent(WorldListWidget.WorldEntry::play); + })); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 4, this.height - 52, 150, 20, Text.translatable("selectWorld.create"), (button) -> { + CreateWorldScreen.create(this.client, this); + })); + this.editButton = (ButtonWidget)this.addDrawableChild(new ButtonWidget(this.width / 2 - 154, this.height - 28, 72, 20, Text.translatable("selectWorld.edit"), (button) -> { + this.levelList.getSelectedAsOptional().ifPresent(WorldListWidget.WorldEntry::edit); + })); + this.deleteButton = (ButtonWidget)this.addDrawableChild(new ButtonWidget(this.width / 2 - 76, this.height - 28, 72, 20, Text.translatable("selectWorld.delete"), (button) -> { + this.levelList.getSelectedAsOptional().ifPresent(WorldListWidget.WorldEntry::deleteIfConfirmed); + })); + this.recreateButton = (ButtonWidget)this.addDrawableChild(new ButtonWidget(this.width / 2 + 4, this.height - 28, 72, 20, Text.translatable("selectWorld.recreate"), (button) -> { + this.levelList.getSelectedAsOptional().ifPresent(WorldListWidget.WorldEntry::recreate); + })); + this.addDrawableChild(new ButtonWidget(this.width / 2 + 82, this.height - 28, 72, 20, ScreenTexts.CANCEL, (button) -> { + this.client.setScreen(this.parent); + })); + this.worldSelected(false); + this.setInitialFocus(this.searchBox); + } + + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + return super.keyPressed(keyCode, scanCode, modifiers) ? true : this.searchBox.keyPressed(keyCode, scanCode, modifiers); + } + + public void close() { + this.client.setScreen(this.parent); + } + + public boolean charTyped(char chr, int modifiers) { + return this.searchBox.charTyped(chr, modifiers); + } + + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.tooltip = null; + 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); + if (this.tooltip != null) { + this.renderOrderedTooltip(matrices, this.tooltip, mouseX, mouseY); + } + + } + + public void setTooltip(List tooltip) { + this.tooltip = tooltip; + } + + public void worldSelected(boolean active) { + this.selectButton.active = active; + this.deleteButton.active = active; + this.editButton.active = active; + this.recreateButton.active = active; + } + + public void removed() { + if (this.levelList != null) { + this.levelList.children().forEach(WorldListWidget.Entry::close); + } + + } + + public Supplier getSearchFilter() { + return () -> { + return this.searchBox.getText(); + }; + } +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.java b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.java new file mode 100644 index 0000000..8ddc45a --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoNano.java @@ -0,0 +1,4 @@ +package me.jonasjones.arduinoctrls.gui.boards; + +public class ArduinoNano { +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.java b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.java new file mode 100644 index 0000000..eebdf9d --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoProMini.java @@ -0,0 +1,4 @@ +package me.jonasjones.arduinoctrls.gui.boards; + +public class ArduinoProMini { +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoUno.java b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoUno.java new file mode 100644 index 0000000..7cfea4f --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/boards/ArduinoUno.java @@ -0,0 +1,4 @@ +package me.jonasjones.arduinoctrls.gui.boards; + +public class ArduinoUno { +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java b/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java new file mode 100644 index 0000000..f1d4087 --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ModSettings.java @@ -0,0 +1,39 @@ +package me.jonasjones.arduinoctrls.gui.screens; + +import me.jonasjones.arduinoctrls.gui.SelectDevice; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.option.SoundOptionsScreen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; + + +@Environment(EnvType.CLIENT) +public class ModSettings extends Screen { + private final Screen parent; + + public ModSettings (Screen parent) { + super(Text.of("MicrocontrollerMC Controls")); + 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 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> { + this.client.setScreen(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/ObjectSelectionList.java b/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java new file mode 100644 index 0000000..8a80760 --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/gui/screens/ObjectSelectionList.java @@ -0,0 +1,7 @@ +package me.jonasjones.arduinoctrls.gui.screens; + +import java.awt.*; + +public class ObjectSelectionList { + public static void display(int x, int y, int width, int height, List objects) {} +} diff --git a/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java b/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java index 659dcb7..0ee2ce4 100644 --- a/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java +++ b/src/main/java/me/jonasjones/arduinoctrls/mixin/ArduinoMixin.java @@ -1,10 +1,13 @@ package me.jonasjones.arduinoctrls.mixin; -import me.jonasjones.arduinoctrls.ArduinoControls; +import me.jonasjones.arduinoctrls.gui.GuiHome; +import me.jonasjones.arduinoctrls.gui.SelectDevice; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.TitleScreen; import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.TexturedButtonWidget; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -16,15 +19,17 @@ public abstract class ArduinoMixin extends Screen { super(title); } - @Inject(at = @At("HEAD"), method = "init()V") - private void init(CallbackInfo info) { - ArduinoControls.LOGGER.info("This line is printed by an example mod mixin!"); - } - @Inject(at = @At("RETURN"), method = "initWidgetsNormal") - private void ledToggleButton(int y, int spacingY, CallbackInfo ci) { - this.addDrawableChild(new ButtonWidget(50, 50, 20, 20,Text.of("LED"), (button) -> { - this.client.scheduleStop(); + private void titleScreenButton(int y, int spacingY, CallbackInfo ci) { + + final Identifier ICON_TEXTURE = new Identifier("arduinoctrls", "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.addDrawableChild( new TexturedButtonWidget(buttonX, buttonY, 20, 20, 0, 0, 0, ICON_TEXTURE, 20, 20, (buttonWidget) -> this.client.setScreen(new GuiHome(this)))); } } \ No newline at end of file diff --git a/src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java b/src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java new file mode 100644 index 0000000..4a7f753 --- /dev/null +++ b/src/main/java/me/jonasjones/arduinoctrls/mixin/GameMenuScreenMixin.java @@ -0,0 +1,35 @@ +package me.jonasjones.arduinoctrls.mixin; + +import me.jonasjones.arduinoctrls.gui.GuiHome; +import net.minecraft.client.gui.screen.GameMenuScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.TexturedButtonWidget; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@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"); + + int buttonX = this.width / 2 + 108; + int buttonY = this.height / 4 + 8; + + this.addDrawableChild(new ButtonWidget(buttonX, buttonY, 20, 20, Text.of(""), (button) -> { + 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 GuiHome(this)))); + + } +} diff --git a/src/main/resources/arduinoctrls.mixins.json b/src/main/resources/arduinoctrls.mixins.json index 688d95f..1a00171 100644 --- a/src/main/resources/arduinoctrls.mixins.json +++ b/src/main/resources/arduinoctrls.mixins.json @@ -6,7 +6,8 @@ "mixins": [ ], "client": [ - "ArduinoMixin" + "ArduinoMixin", + "GameMenuScreenMixin" ], "injectors": { "defaultRequire": 1 diff --git a/src/main/resources/assets/arduinoctrls/gui/arduino_original.png b/src/main/resources/assets/arduinoctrls/gui/arduino_original.png new file mode 100644 index 0000000000000000000000000000000000000000..6c676a8b097276e8928dad56896d312f4a464773 GIT binary patch literal 570 zcmV-A0>%A_P)b+m}YQ3-N=w45l8rV98Cp6tC2u}-#Hw(JrUEw}0 z9a|SZ7WNr(K;avu$E*CRI926O#l~V}7VN60C)L352G-I>R(Mp{o6Qup+IiGXT#4M$ zg498oLzqMe5yV5BA{%5V;Fp?{%$oZG72h0r@o4hbDPf2sMOwT*QH#Omi(2Ys)Y z5^G9BI4Bp!+I3w<49|(}$c%aCbq>T`ObORAy&7phE4>zm20?WYv`F7QETN4Pkb@ZV zE~HqA)h7$oE^+1@8&$yPcC6{tEonyxauo7> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/arduinoctrls/gui/button_icon.png b/src/main/resources/assets/arduinoctrls/gui/button_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70113e3b0bdb9262043814da8eceef10db4b5009 GIT binary patch literal 566 zcmV-60?GY}P)b+m}YQ3-N=w45l8rV98Cp6tC2u}-#Hw(JrUEw}0 z9a|SZ7WNr(K;avu$E*CRI926O#l~V}7VN60C)L352G-I>R(Mp{o6Qup+IiGXT#4M$ zg498oLzqMe5yV5BA{%5V;Fp?{%$oZG72h0r@o4hbDPf2sMOwT*QH#7zOx3AbN}Ye~>&njZY5~ zErOILhSI{J42%R!1&1dNfKx9EvIbaWfW(&i?1X8;rWqyj(9{$3Je@1(!={68i-GPZI^Bd7mc1Iyejk05W4U3`RXRh5!Hn07*qoM6N<$ Ef|%;>v;Y7A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/modid/icon.png b/src/main/resources/assets/arduinoctrls/icon.png similarity index 100% rename from src/main/resources/assets/modid/icon.png rename to src/main/resources/assets/arduinoctrls/icon.png