From c211f67e38d21a13c5c8fa73cde07edc3dd85348 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 7 Jul 2024 01:14:01 +0900 Subject: [PATCH] progress ring instead of play/pause --- .../musicplayer/gui/MusicPlayerControl.kt | 27 ++++++++++++++----- assets/mods/musicplayer/gui/progress.tga | 3 +++ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 assets/mods/musicplayer/gui/progress.tga diff --git a/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt b/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt index 27745b9a9..46df447cf 100644 --- a/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt +++ b/MusicPlayer/src/net/torvald/terrarum/musicplayer/gui/MusicPlayerControl.kt @@ -60,6 +60,9 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { private val controlButtons = ModMgr.getGdxFile("musicplayer", "gui/control_buttons.tga").let { TextureRegionPack(it, BUTTON_WIDTH, BUTTON_HEIGHT) } + private val progressSheet = ModMgr.getGdxFile("musicplayer", "gui/progress.tga").let { + TextureRegionPack(it, BUTTON_WIDTH, BUTTON_HEIGHT) + } private val MODE_IDLE = 0 private val MODE_PLAYING = 1 @@ -1061,14 +1064,13 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { val separation = internalWidth / 5f val anchorX = Toolkit.hdrawWidthf val posY = posY + 12f + val alphaBase2 = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) for (i in 0..4) { - val alphaBase = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) + (playControlAnimAkku[i] * 0.2f) - val alphaBase2 = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) + val animAkku = if (i == 2) 0f else playControlAnimAkku[i] // disable mouseUp for the progress ring + val alphaBase = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) + (animAkku * 0.2f) val offset = i - 2 val posX = anchorX + offset * separation - - val btnX = (posX - BUTTON_WIDTH / 2).roundToFloat() val btnY = posY.roundToFloat() @@ -1089,8 +1091,19 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { // fade if avaliable batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc)) batch.draw(controlButtons.get(i, iconY), btnX, btnY) - // page number with fade + // progress ring + val perc = ((App.audioMixer.musicTrack.currentTrack?.currentPositionInSamples()?.toFloat() ?: 0f) / + (App.audioMixer.musicTrack.currentTrack?.totalSizeInSamples ?: Long.MAX_VALUE)).coerceAtMost(1f) + val progress = (perc * 64).roundToInt() - 1 + if (progress >= 0) { + val prx = progress % 8 + val pry = progress / 8 + batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc)) + batch.draw(progressSheet.get(prx, pry), btnX, btnY) + } + + // page number with fade for (mode in 0..1) { val alphaNum = if (mode == 0) 1f - listViewPanelScroll else listViewPanelScroll batch.color = baseCol * Color(1f, 1f, 1f, alphaBase2 * buttonFadePerc * alphaNum) // don't use mouse-up effect @@ -1113,7 +1126,6 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { batch.draw(controlButtons.get(i, 0), btnX, btnY) } - // update playControlAnimAkku if (mouseOnButton == i && mode >= MODE_MOUSE_UP && modeNext >= MODE_MOUSE_UP) playControlAnimAkku[i] = (playControlAnimAkku[i] + (delta / playControlAnimLength)).coerceIn(0f, 1f) @@ -1121,6 +1133,9 @@ class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() { playControlAnimAkku[i] = (playControlAnimAkku[i] - (delta / playControlAnimLength)).coerceIn(0f, 1f) } // printdbg(this, "playControlAnimAkku=${playControlAnimAkku.joinToString()}") + + + } } diff --git a/assets/mods/musicplayer/gui/progress.tga b/assets/mods/musicplayer/gui/progress.tga new file mode 100644 index 000000000..fc37de457 --- /dev/null +++ b/assets/mods/musicplayer/gui/progress.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d4a899c2885919ff1cf6f609383bca2035a31a363bf46c8c1545460fcf0f6c +size 491538