Render android abilities cooldown on main HUD
This commit is contained in:
parent
65eaf916f8
commit
dfb93f65f1
@ -104,15 +104,14 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
private fun renderWheel(event: RenderGuiEvent.Post) {
|
||||||
if (!grabbedInput) {
|
|
||||||
lastRender = System.nanoTime()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val player = minecraft.player ?: return
|
val player = minecraft.player ?: return
|
||||||
val matteryPlayer = player.matteryPlayer ?: return
|
val matteryPlayer = player.matteryPlayer ?: return
|
||||||
|
|
||||||
|
if (!matteryPlayer.isAndroid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
val features = matteryPlayer.features
|
val features = matteryPlayer.features
|
||||||
.filter { it is AndroidSwitchableFeature && it.allowToSwitchByPlayer && (!player.isSpectator || it.allowToSwitchByPlayerWhileSpectator) }
|
.filter { it is AndroidSwitchableFeature && it.allowToSwitchByPlayer && (!player.isSpectator || it.allowToSwitchByPlayerWhileSpectator) }
|
||||||
.collect(Collectors.toList()) as MutableList<AndroidSwitchableFeature>
|
.collect(Collectors.toList()) as MutableList<AndroidSwitchableFeature>
|
||||||
@ -250,6 +249,55 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
|||||||
event.poseStack.popPose()
|
event.poseStack.popPose()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun renderRegular(event: RenderGuiEvent.Post) {
|
||||||
|
val player = minecraft.player ?: return
|
||||||
|
val matteryPlayer = player.matteryPlayer ?: return
|
||||||
|
|
||||||
|
if (!matteryPlayer.isAndroid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val features = matteryPlayer.features
|
||||||
|
.filter { it is AndroidSwitchableFeature && it.isOnCooldown }
|
||||||
|
.collect(Collectors.toList()) as MutableList<AndroidSwitchableFeature>
|
||||||
|
|
||||||
|
if (features.isEmpty()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
features.sortWith { a, b ->
|
||||||
|
return@sortWith a.type.registryName!!.compareTo(b.type.registryName!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
val y = minecraft.window.guiScaledHeight * 0.2f
|
||||||
|
var x = minecraft.window.guiScaledWidth * 0.5f - (features.size.toFloat() * (COOLDOWN_ICON_SIZE / 2f + COOLDOWN_ICON_MARGIN / 2f))
|
||||||
|
|
||||||
|
for (feature in features) {
|
||||||
|
feature.renderIcon(event.poseStack, x, y, COOLDOWN_ICON_SIZE, COOLDOWN_ICON_SIZE)
|
||||||
|
|
||||||
|
RenderSystem.setShaderColor(1f, 1f, 1f, 0.5f)
|
||||||
|
drawArc(event.poseStack, x, y, COOLDOWN_ICON_SIZE / 2f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * feature.cooldownPercent, alignAtCenter = false)
|
||||||
|
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||||
|
|
||||||
|
font.drawAligned(event.poseStack, formatTickDuration(feature.cooldown), TextAlign.TOP_CENTER, x + COOLDOWN_ICON_SIZE / 2f, y + COOLDOWN_ICON_SIZE + 1f, RGBAColor.WHITE)
|
||||||
|
|
||||||
|
x += COOLDOWN_ICON_SIZE + COOLDOWN_ICON_MARGIN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const val COOLDOWN_ICON_SIZE = 18f
|
||||||
|
const val COOLDOWN_ICON_MARGIN = 12f
|
||||||
|
|
||||||
|
fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
|
||||||
|
if (!grabbedInput) {
|
||||||
|
lastRender = System.nanoTime()
|
||||||
|
renderRegular(event)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
renderWheel(event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun register(event: RegisterKeyMappingsEvent) {
|
fun register(event: RegisterKeyMappingsEvent) {
|
||||||
event.register(this)
|
event.register(this)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user