mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-21 14:46:25 -04:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1a130972f | ||
|
|
40d8651254 | ||
|
|
4b87fe5043 |
+135
-1
@@ -9,6 +9,8 @@
|
||||
package com.cobblemon.mod.common.client.gui.battle.subscreen
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.api.gui.ColourLibrary
|
||||
import com.cobblemon.mod.common.api.gui.MultiLineLabelK
|
||||
import com.cobblemon.mod.common.api.gui.blitk
|
||||
import com.cobblemon.mod.common.api.moves.Moves
|
||||
import com.cobblemon.mod.common.api.text.bold
|
||||
@@ -22,15 +24,18 @@ import com.cobblemon.mod.common.client.battle.SingleActionRequest
|
||||
import com.cobblemon.mod.common.client.gui.MoveCategoryIcon
|
||||
import com.cobblemon.mod.common.client.gui.TypeIcon
|
||||
import com.cobblemon.mod.common.client.gui.battle.BattleGUI
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.screens.moves.MovesWidget
|
||||
import com.cobblemon.mod.common.client.render.drawScaledText
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
import com.cobblemon.mod.common.util.math.toRGB
|
||||
import java.math.RoundingMode
|
||||
import java.text.DecimalFormat
|
||||
import net.minecraft.client.MinecraftClient
|
||||
import net.minecraft.client.gui.DrawContext
|
||||
import net.minecraft.client.sound.PositionedSoundInstance
|
||||
import net.minecraft.client.sound.SoundManager
|
||||
import net.minecraft.client.util.math.MatrixStack
|
||||
import net.minecraft.text.Text
|
||||
import net.minecraft.util.math.MathHelper.floor
|
||||
|
||||
@@ -51,9 +56,15 @@ class BattleMoveSelection(
|
||||
const val MOVE_HEIGHT = 24
|
||||
const val MOVE_VERTICAL_SPACING = 5F
|
||||
const val MOVE_HORIZONTAL_SPACING = 13F
|
||||
const val MOVE_DESC_SCALE = 0.5F
|
||||
|
||||
private val decimalFormat = DecimalFormat("#.##").also {
|
||||
it.roundingMode = RoundingMode.CEILING
|
||||
}
|
||||
|
||||
val moveTexture = cobblemonResource("textures/gui/battle/battle_move.png")
|
||||
val moveOverlayTexture = cobblemonResource("textures/gui/battle/battle_move_overlay.png")
|
||||
val moveDescriptionTexture = cobblemonResource("textures/gui/battle/battle_move_desc.png")
|
||||
}
|
||||
|
||||
val moveSet = request.moveSet!!
|
||||
@@ -176,6 +187,124 @@ class BattleMoveSelection(
|
||||
}
|
||||
|
||||
backButton.render(context.matrices, mouseX, mouseY, delta)
|
||||
|
||||
val matrices = context.matrices
|
||||
|
||||
// Move Description
|
||||
val moveTile = moveTiles.find { it.isHovered(mouseX.toDouble(), mouseY.toDouble()) } ?: return
|
||||
blitk(
|
||||
matrixStack = matrices,
|
||||
texture = moveDescriptionTexture,
|
||||
x= mouseX,
|
||||
y = mouseY,
|
||||
width = 134,
|
||||
height = 40
|
||||
)
|
||||
|
||||
// Move icons
|
||||
blitk(
|
||||
matrixStack = matrices,
|
||||
texture = MovesWidget.movesPowerIconResource,
|
||||
x= (mouseX + 7) / MOVE_DESC_SCALE,
|
||||
y = (mouseY + 6.5) / MOVE_DESC_SCALE,
|
||||
width = MovesWidget.MOVE_ICON_SIZE,
|
||||
height = MovesWidget.MOVE_ICON_SIZE,
|
||||
scale = MOVE_DESC_SCALE
|
||||
)
|
||||
|
||||
blitk(
|
||||
matrixStack = matrices,
|
||||
texture = MovesWidget.movesAccuracyIconResource,
|
||||
x= (mouseX + 7) / MOVE_DESC_SCALE,
|
||||
y = (mouseY + 17.5) / MOVE_DESC_SCALE,
|
||||
width = MovesWidget.MOVE_ICON_SIZE,
|
||||
height = MovesWidget.MOVE_ICON_SIZE,
|
||||
scale = MOVE_DESC_SCALE
|
||||
)
|
||||
|
||||
blitk(
|
||||
matrixStack = matrices,
|
||||
texture = MovesWidget.movesEffectIconResource,
|
||||
x= (mouseX + 7) / MOVE_DESC_SCALE,
|
||||
y = (mouseY + 28.5) / MOVE_DESC_SCALE,
|
||||
width = MovesWidget.MOVE_ICON_SIZE,
|
||||
height = MovesWidget.MOVE_ICON_SIZE,
|
||||
scale = MOVE_DESC_SCALE
|
||||
)
|
||||
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = lang("ui.power"),
|
||||
x = mouseX + 14,
|
||||
y = mouseY + 7,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = lang("ui.accuracy"),
|
||||
x = mouseX + 14,
|
||||
y = mouseY + 18,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = lang("ui.effect"),
|
||||
x = mouseX + 14,
|
||||
y = mouseY + 29,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
val mcFont = MinecraftClient.getInstance().textRenderer
|
||||
val movePower = if (moveTile.moveTemplate.power.toInt() > 0) moveTile.moveTemplate.power.toInt().toString().text() else "—".text()
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = movePower,
|
||||
x = (mouseX + 62.5) - (mcFont.getWidth(movePower) * MOVE_DESC_SCALE),
|
||||
y = mouseY + 7,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
val moveAccuracy = format(moveTile.moveTemplate.accuracy).text()
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = moveAccuracy,
|
||||
x = (mouseX + 62.5) - (mcFont.getWidth(moveAccuracy) * MOVE_DESC_SCALE),
|
||||
y = mouseY + 18,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
val moveEffect = format(moveTile.moveTemplate.effectChances.firstOrNull() ?: 0.0).text()
|
||||
drawScaledText(
|
||||
context = context,
|
||||
text = moveEffect,
|
||||
x = (mouseX + 62.5) - (mcFont.getWidth(moveEffect) * MOVE_DESC_SCALE),
|
||||
y = mouseY + 29,
|
||||
scale = MOVE_DESC_SCALE,
|
||||
shadow = true
|
||||
)
|
||||
|
||||
matrices.push()
|
||||
matrices.scale(MOVE_DESC_SCALE, MOVE_DESC_SCALE, 1F)
|
||||
MultiLineLabelK.create(
|
||||
component = moveTile.moveTemplate.description,
|
||||
width = 57 / MOVE_DESC_SCALE,
|
||||
maxLines = 5
|
||||
).renderLeftAligned(
|
||||
context = context,
|
||||
x = (mouseX + 70) / MOVE_DESC_SCALE,
|
||||
y = (mouseY + 7) / MOVE_DESC_SCALE,
|
||||
ySpacing = 5.5 / MOVE_DESC_SCALE,
|
||||
colour = ColourLibrary.WHITE,
|
||||
shadow = true
|
||||
)
|
||||
matrices.pop()
|
||||
}
|
||||
|
||||
override fun mouseClicked(mouseX: Double, mouseY: Double, button: Int): Boolean {
|
||||
@@ -193,4 +322,9 @@ class BattleMoveSelection(
|
||||
override fun playDownSound(soundManager: SoundManager) {
|
||||
soundManager.play(PositionedSoundInstance.master(CobblemonSounds.GUI_CLICK, 1.0F))
|
||||
}
|
||||
|
||||
private fun format(input: Double): String {
|
||||
if (input <= 0) return "—"
|
||||
return "${decimalFormat.format(input)}%"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 223 B |
Reference in New Issue
Block a user