From 4de6be0289c5e0c75fcdc1d7a7b4fead8d36b1e4 Mon Sep 17 00:00:00 2001 From: YuRaNnNzZZ Date: Thu, 13 Oct 2022 10:00:44 +0300 Subject: [PATCH] =?UTF-8?q?=E2=8F=B1=EF=B8=8F=E2=9D=95=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5=D0=BC=D0=BE=D0=B9=20?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D0=B5=D1=91=20=D1=81=D1=82=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=81=20=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B0=D0=B6=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20(#123)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/otm/OverdriveThatMatters.java | 1 + .../otm/android/AndroidSwitchableFeature.kt | 1 + .../android/feature/EnderTeleporterFeature.kt | 5 +++- .../mc/otm/client/AndroidAbilityKeyMapping.kt | 27 ++++++++++++++++++ .../mc/otm/client/render/Widgets18.kt | 1 + .../textures/gui/widgets_18.png | Bin 1692 -> 1868 bytes .../textures/gui/widgets_18.xcf | Bin 13498 -> 13980 bytes 7 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index ad72a3868..c30344635 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -195,6 +195,7 @@ public final class OverdriveThatMatters { EVENT_BUS.addListener(EventPriority.NORMAL, AndroidMenuKeyMapping.INSTANCE::onRenderGuiEvent); EVENT_BUS.addListener(EventPriority.NORMAL, AndroidMenuKeyMapping.INSTANCE::onMouseClick); + EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderGuiEvent); EVENT_BUS.addListener(EventPriority.NORMAL, AndroidAbilityKeyMapping.INSTANCE::onRenderLevel); event.enqueueWork(GlobalEventHandlerKt::recordClientThread); diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidSwitchableFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidSwitchableFeature.kt index ea8a5b3eb..1336d2703 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidSwitchableFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidSwitchableFeature.kt @@ -22,6 +22,7 @@ abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: Ma open val allowToSwitchByPlayer: Boolean get() = true open val allowToSwitchByPlayerWhileSpectator: Boolean get() = true + open val isOnCooldown: Boolean get() = false // TODO: PoseStack is stripped from server dist // but it doesn't seem to cause issues? diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/EnderTeleporterFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/EnderTeleporterFeature.kt index a61c2ab8a..58100f781 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/EnderTeleporterFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/EnderTeleporterFeature.kt @@ -56,8 +56,11 @@ class EnderTeleporterFeature(capability: MatteryPlayerCapability) : AndroidActiv var lastTeleport = 0 private set + override val isOnCooldown: Boolean + get() = cooldown > 0 + private fun canUse(): Boolean { - return cooldown <= 0 && android.androidEnergy.extractEnergyInnerExact(ServerConfig.EnderTeleporter.ENERGY_COST, true).isPositive + return !isOnCooldown && android.androidEnergy.extractEnergyInnerExact(ServerConfig.EnderTeleporter.ENERGY_COST, true).isPositive } override fun serializeNBT(): CompoundTag { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidAbilityKeyMapping.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidAbilityKeyMapping.kt index c129ec3dd..3f2a99f7b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidAbilityKeyMapping.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/AndroidAbilityKeyMapping.kt @@ -3,12 +3,15 @@ package ru.dbotthepony.mc.otm.client import com.mojang.blaze3d.platform.InputConstants import net.minecraft.client.KeyMapping import net.minecraftforge.client.event.RegisterKeyMappingsEvent +import net.minecraftforge.client.event.RenderGuiEvent import net.minecraftforge.client.event.RenderLevelStageEvent import net.minecraftforge.client.settings.KeyConflictContext import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.android.AndroidActiveFeature import ru.dbotthepony.mc.otm.capability.matteryPlayer +import ru.dbotthepony.mc.otm.client.render.Widgets18 import ru.dbotthepony.mc.otm.client.render.is3DContext +import ru.dbotthepony.mc.otm.core.RGBAColor import ru.dbotthepony.mc.otm.network.ActivateAndroidFeaturePacket import ru.dbotthepony.mc.otm.network.MatteryPlayerNetworkChannel @@ -40,6 +43,30 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl } } + fun onRenderGuiEvent(event: RenderGuiEvent.Post) { + if (!isDown) { + return + } + + val feature = feature ?: return + + val size = minecraft.window.guiScaledHeight.coerceAtMost(minecraft.window.guiScaledWidth).toFloat() * 0.25f + val iconSize = size * 0.25f + + val x = minecraft.window.guiScaledWidth.toFloat() * .5f + iconSize / 2f + val y = minecraft.window.guiScaledHeight.toFloat() * .5f - iconSize / 2f + + RGBAColor.WHITE.setSystemColor() + + feature.renderIcon(event.poseStack, x, y, iconSize, iconSize) + + if (feature.isOnCooldown) { + RGBAColor.WHITE.setSystemColor() + + Widgets18.COOLDOWN.render(event.poseStack, x, y + iconSize, iconSize, iconSize) + } + } + fun onRenderLevel(event: RenderLevelStageEvent) { if (!isDown) { return diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt index 5455138e6..34a812e8d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/Widgets18.kt @@ -45,4 +45,5 @@ object Widgets18 { val BUTTON_DISABLED_STRETCHABLE = makeButton(GRID) val BUTTON_DISABLED = GRID.next() + val COOLDOWN = GRID.next() } diff --git a/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png b/src/main/resources/assets/overdrive_that_matters/textures/gui/widgets_18.png index 6e1e152b7bfe9473c52cb3f6be8867704b7a5ff5..765c4d40e2056b95e7c0c547fff52df4fd6a37bf 100644 GIT binary patch literal 1868 zcmeHH`&ZJ568{1MW{O&?8EYlBdwsQL?fPglP<#N&iVtwh7aqAG001Kb-a8loKvtii4+8+;v&&-kPQs1%@(Lt)d0EjJ7vka*V*$YSI_vr=ywt-| zMh$5S4zpaevbL!F_KbO_vWJ+bNjxD#|KAPLI<-iAIhP?_nnPA5CQdE zhCJ+75c+-mwy449Oc%N@V#dcZMmr#!bbf8zpkBrKqU*UnGGZ!awWBBBD%~m9^cp|i zz3HZ}{C$eCF;#8te)~f!1{bK{8!lgc$RxTRnKYW@f9F5bPO^;gA)wGU2VG~gALd6C zM`le$&`-bSqYjq|Y!Ie7T$iGen`TCZX(euTLgd@s`-{zb!v#u4p|e^+wRjxwU?+ZQ zi8b`UdKhGSTx45mxZ5<$IhgoGJVw=xncdhseM3P3AC`md15qckmN6S+_5AXZy1gS0f72zdUexQ;kQm&LVA5QH=o^^^m+JAx+^e;I9>PoqA@L(5Iobq2JhfP9KJQ@?k+iOXb0{F!;S zu9226znEQ)!=nCil6Yh7s5)03XNtAO!hEh*^ApW;WYz$D>4gclMIu2CJf51O>7zKM zrKO%rqZ1RwZ{FATEZ=p|vAVUqtnG>FW@g>1g_OqOMDw>vENvp#mSYk?A{8LhGBULE zj~b0jZCP7eoAG)VOItM1`|@Rh_f4m(5+1I9#jd}mtg%d>D_o7&=rrNbaU1r#xVABK z6z5J@{T5E)H2M{!+CPmft=SyvT)GF74_^wSw|5@l@d!um#cW^Fy>}1@%J%KF&8Wki zC@%&kE2OOhUskp8a3LGHrq~^w_V(G;mYG9czmu_zcfuM5eTK90bgM=Mj+M?7r5*b? zg|t@IOiF1Q`&Z6Nqf%WXT#V`JN+?g|%Eily16Xy#(VX?c;>45lD+|RRA(Pq{#_La$ zj+H)-yU0k5s#>*)MGH6GB^>21UgMaD1QkLOR&TECv%6nNWgg6vfol>r7SG$r(mNc3 zv&`#>_NWhA+cQ@h#9hCVet2{%R}5qAHS7D4OL9);kqwnV4y%06KWQB5gv){%G33tl zt#H5ny^F~7CW`0N1}d72ZL_a9wplO*p$#USjN^X6hV|wr@9$YuH8K(1h}u2KJ!snV zT}DC1H&?R4*O){#RimsNU!J)^!)XfetFzYTf>id>%>^8q72=p6#p*4bAyvxg|d z)A}te!)}C6;-As@v?@+u3Oe@ErTz_F5hmdP(wU55?ab=3t0Q4twCOIwy+-sWf`x*H z_>#MdM(O&g%u|m{5_6a5M{0&R%shj*Cw{`Z%=t%A^o`-~yK9xbjpL`mZ*z{2Il5jW9EhtZer1n>8zn~w-*u8``pK<)%bH%o+Cua zOAe6@xn{sHm;=LZlmo7Fu%G-5@kl z`YU73{0}eb*`NG`lI4c<@LRe*Twdj?l@)6;3H{Xtt;S~NgUW1~7Y)BxaO_CtZ>`SY7l)0H1L@VR^P&zJ?}vC|2t4Q%B(o-4#RGhqk1+L?rT(WI<{&aB+@Wk z+C}i81n9tw?P=Bxq>0Dn+hxru9$>gdto|#_mARNVQxQ&qpr1o`r3@pUwSbXR2AoK# quWffOS=u{wwN6bA zkC@rD9NnC$L3Uo#!orTYRsH+kJIk}T=yh5B-0Jf$?-eUfI6q@r^iAGrbBmJ}2j*6# zg>l;kdv|16y}06QZY?P98BkVpCurfd*?Lot{&#aOx@fx4Nm$Ngv!7pu7jeH zWz433S@L0J!E$ABk$vI20w0JU&79AyW&B1Z$@x%XqHgRVH_qAKeX4iVWjv#{Jz-zQ zJtt((x*Mm~%(DL;qQ547%koEF({G;ANcJ)4Y&)oRI_1Pg)z!LP-ag+Jr~c91S05D9 zwqu&%QNuG_V!PhE|2_CV?`}xGzv48le)1LFr=YLx@Jy4Fh;ric8 zj_sc7eXXpC%o%qYHlJRU_U6D(H52=kQupsm7o2g>VqLHP$=CQo32$j}>%F>fmiwAp zN=)lmtAAgZH|@<&qxb7H-@ZL>TvzY1pKcy=!mH{HjXNU2E5~NPRv1V&?nfwsxl;+v_#d@rW*% z@67sQ{X%^Vf$-8x(%( zFKXROHTMM-kHe((VmY_0FP^{lw&tmam9KAp&6aE5xGN^X{*|?c+;>@%*vW@2EN(i= zbHs98(QIQqp1>+$ZE648$Eo(@@4yu~f5ikiY#Bo|UpY&DeO~e6@in83Wkq$YQZ2tG zeP0~^KKD1z_XRI!$s9WwdYkvT=<{Op-JROw13qf6Ix|If z%Jv0(QS! z7YbNBBivs6`Ezd$4MjPQqg>g!J5!gvTkz}g*0&4R#0HlKlyQ~3`~1ZBm$2RZteW|~ z4<`ob?5w$Rbb6;&aN#f8jJ?lNmWk&7ZahEP;dI=NMTfo&GAX}sSv(;=D35f@}MQN1wXe6a_1I(OW=8u=EgF zK?N=8K@hc2x++qs-lT_OBM16%Ac}|SAiHUjQfosI{H1XgGVy?3;IZ`E2 z+#(*iLLB2n#>DUNK-i4D&DAfroA2Yz*Ue=$Su+dFcEyiiT`U(Yyk9K#9rJxKeect% zf){nrrqn)xns&3Bsqw1O9a&~EEQ}l04s8t7ycb)T&Cpb=DGxX}lCyt?>cQYD2RIC5 zF9zc;GgJ+ETUHfO64ZfU*gG3KI|pJkXYkl9a z*4LKYyQ9J2SG0qF&;~p*?BC;JCpa%&2F4-y6SKpB*g24Oe9!%B9RCz@c5Vc?Yh_$LU#_*vy@j zbGdB}h0|D2xQ@#TbFz^?4{*4Jwq!?JipffG8lZd&ZFvE0`K{b2T>_{?&{mG3t(=lG Hqm%qUQLNVV delta 738 zcmYk2PiWI{6vy*>NlRl_v(~PE(st=$mRhsL+AGKLh~$%&w#ZU@hffd?hC0MGQ2njj>%&e@y|i*a?DtU8UM!Izs5{`VP=4td(SMqX7(qU)+%#gfq8I_Ie3v-344d9!`#pg z4@Yh@>lSnGj(u7~fO=VuM@&<_wdWNj-I-JTtS;is$Pz$wRF-0<8EtmOdOLG)bxw2! zCt@1_x+~{h6ZDhv=tu_i^Eej2uR_mnDks8Ep+;9ZQN_5i3SfMsvawC&ULD)X?Htk?E^H*rW-;&$umR!i4g{(%AY&nSN*<-XoQE;Nz6gX?v1?1mQBELn6{J-vm zoHaGs%3sHoQbIuSGbM|EXk96Z?fwFQ<&(9>$y(DmHZUci{E}>WlWchh-`bA_*bm9t zFUZ=TaNT()z