From cd1836bc1a7cd4d3e978d4a95fcaa050ed9cf3ae Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Wed, 21 May 2025 23:41:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A3=9E=E6=9C=BA=E8=B5=B7?= =?UTF-8?q?=E8=90=BD=E6=9E=B6HUD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/overlay/VehicleHudOverlay.java | 22 ++++++++++++++---- .../entity/vehicle/A10Entity.java | 5 ++++ .../entity/vehicle/base/AircraftEntity.java | 2 ++ .../textures/screens/aircraft/gear.png | Bin 0 -> 1454 bytes 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/superbwarfare/textures/screens/aircraft/gear.png diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java index 6f3f53092..829e5fd6c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java @@ -64,6 +64,7 @@ public class VehicleHudOverlay implements LayeredDraw.Layer { private static final ResourceLocation PASSENGER = Mod.loc("textures/screens/passenger.png"); private static final ResourceLocation SELECTED = Mod.loc("textures/screens/vehicle_weapon/selected.png"); private static final ResourceLocation NUMBER = Mod.loc("textures/screens/vehicle_weapon/number.png"); + private static final ResourceLocation GEAR = Mod.loc("textures/screens/aircraft/gear.png"); public static final int ANIMATION_TIME = 300; private static final AnimationTimer[] weaponSlotsTimer = AnimationTimer.createTimers(9, ANIMATION_TIME, AnimationCurves.EASE_OUT_CIRC); @@ -88,8 +89,9 @@ public class VehicleHudOverlay implements LayeredDraw.Layer { Entity vehicle = player.getVehicle(); PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); + // 渲染地面武装HUD + renderLandArmorHud(guiGraphics, deltaTracker, w, h); RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); @@ -98,9 +100,6 @@ public class VehicleHudOverlay implements LayeredDraw.Layer { RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); RenderSystem.setShaderColor(1, 1, 1, 1); - // 渲染地面武装HUD - renderLandArmorHud(guiGraphics, deltaTracker, w, h); - int compatHeight = getArmorPlateCompatHeight(player); if (vehicle instanceof EnergyVehicleEntity energyVehicleEntity) { @@ -122,6 +121,21 @@ public class VehicleHudOverlay implements LayeredDraw.Layer { renderPassengerInfo(guiGraphics, pVehicle, w, h); } + if (vehicle instanceof AircraftEntity aircraftEntity) { + RenderSystem.disableDepthTest(); + RenderSystem.depthMask(false); + RenderSystem.enableBlend(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + RenderSystem.setShaderColor(1, 1, 1, 1); + float angle = aircraftEntity.gearRot(deltaTracker.getGameTimeDeltaPartialTick(true)); + poseStack.pushPose(); + poseStack.rotateAround(Axis.ZP.rotationDegrees(-90 + angle), 102, h - 20, 0); + preciseBlit(guiGraphics, GEAR, 86, h - 36, 0, 0, 32, 32, 32, 32); + poseStack.popPose(); + + } + poseStack.popPose(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java index 8ca3920a9..61c4b4863 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java @@ -788,6 +788,11 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity } } + @Override + public Float gearRot(float tickDelta) { + return Mth.lerp(tickDelta, gearRotO, entityData.get(GEAR_ROT)); + } + @Override public void vehicleShoot(Player player, int type) { Matrix4f transform = getVehicleTransform(1); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/AircraftEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/AircraftEntity.java index d0dc0e4e4..498f79b2b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/AircraftEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/AircraftEntity.java @@ -7,4 +7,6 @@ public interface AircraftEntity extends AirEntity { Vec3 shootPos(float tickDelta); Vec3 shootVec(float tickDelta); + + Float gearRot(float tickDelta); } diff --git a/src/main/resources/assets/superbwarfare/textures/screens/aircraft/gear.png b/src/main/resources/assets/superbwarfare/textures/screens/aircraft/gear.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6e2645f1b899f730c96c8a80403c337a900525 GIT binary patch literal 1454 zcmb7^i#O8?0LOpKb5V8@@(lBcST~P6@{HNf`>mN+x7+oM-7v4|Y^3ITt)U{sH7)Oi zo5yyyYUrL>YF}jv5xGJ+ihM6KlO%^~$rS=UQ>G zB`us0gv7p(eXvhsQ)QwEt=_0|g)08VG~1MVkAyME&wlDYXi%wwRdrV%sHa}Y@-fjF zvFGScISA^UMB+a-GHa^l!x*s`qiF(_KM5thas&Ce+6+fIDiH^o-PU2q=*>otJ77>p?Q&DTzgci_RxTu$dEMSZy1y4(I&m1KsHzTws z0yQ+e2aN6{HGZB{s6fAGdMAv{mKzE9{L%9{;kl)`y$l;V5u8EAGa1`P0`nnUl*4qG zU^IdcRwLsxO1wMX<+b#tVH^f&!^c4pIN&RkO)s^I66(1)X2vw@+aJ#ZIJi)vT1slHkcpEkkXp!@6w$uqQNw7Y9klfEbK-Vp$t_YnC z$&QpAt~HoS_Mv=C{gejsFU`=5TRmbnFL$cP$`SO~WBp>}LKdiHxLCA1Yv|f5Dx+Da z-1k%a>T=LD-kgBePjZy#64VIxo3YA+WKVmRPNwuN&xBKnm+ZJwc&$LGm46{KRFF64 zlBy^)U`Jz<1$(WAkfu#2hmI(Wp?T;1p5pj248Ds*o}Dw|y`YMBgF$KIA$=ukX<=Q= z2%APJB}bAf@J;S_G;cou=8(JWlP-EhOgIZ;$JLv|@Ut()*>#N6+U=A_gv?ximF%y*H3@UY4ZVDKxG zVX?8Yc9XX9c9xt7vj4gPmt^U)?OoG_O|7aCj7Ps|#j~D!nn}u`_+n||i&R{5DIyNf zp5k^5IM>ZpV#gftvF8Re=jLthekZ1*Npl@8908Ar&Jgrlm&9sGB<^HQ`59 zfG~-_48H~JD%3>(8Pbpv&@rPpYNm8+80fsN$^VDiH^|Co9C0$9Q(zrN%r7Z6Fv(uv zA!P7{4|g*HP)q%%i1!XLSx#_`2*Vl@OWtsC(mnd*bxkWSg&Ow`exiQEOaYt*TEQ{i zwN#+*sKJ!lmY$q%dor506zS-#>E9xLM!olL{+Ud)vEV>Yd9u_O@%+I@4NLMfn1^{= ztT)Oe*<&SC)V{1JX;$FN)n#fQTQAGLVG~m9N3=0kE9=E5e2@nz^O%)kJe=SJZ9SLT z^-YMI+>wU==QR)*sdqZz3XZ&q=wi~!`njjC=yl`Q*-Kj|Dfyr->~*X4)#mBhCjC!g zlE7UKIhAsoVvgy~&jCN`waU*T%c_2!TDxyB-*4^KJY2=%-T?!kr@u#sJ3jA!FO literal 0 HcmV?d00001