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) {
|
||||
if (!grabbedInput) {
|
||||
lastRender = System.nanoTime()
|
||||
return
|
||||
}
|
||||
|
||||
private fun renderWheel(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.allowToSwitchByPlayer && (!player.isSpectator || it.allowToSwitchByPlayerWhileSpectator) }
|
||||
.collect(Collectors.toList()) as MutableList<AndroidSwitchableFeature>
|
||||
@ -250,6 +249,55 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
||||
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) {
|
||||
event.register(this)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user