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 000000000..ae6e2645f Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/aircraft/gear.png differ