DreamRunnerCarpetAddation/src/client/java/cn/wzpmc/gui/NowSongDetailWeight.java
2023-08-07 20:12:39 +08:00

59 lines
2.9 KiB
Java

package cn.wzpmc.gui;
import cn.wzpmc.DreamRunnerModClient;
import cn.wzpmc.entities.MusicObject;
import io.github.cottonmc.cotton.gui.client.ScreenDrawing;
import io.github.cottonmc.cotton.gui.widget.WWidget;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
@Environment(EnvType.CLIENT)
public class NowSongDetailWeight extends WWidget {
private static int targetWidth = 0;
private static double nowWidth = 0d;
private static double speed = 0d;
private final MinecraftClient client;
public NowSongDetailWeight() {
this.client = MinecraftClient.getInstance();
}
public static void reset() {
targetWidth = 0;
nowWidth = 0d;
speed = 0d;
}
@Override
public void paint(DrawContext context, int x, int y, int mouseX, int mouseY) {
if (!DreamRunnerModClient.musics.isEmpty()) {
MusicObject musicObject = DreamRunnerModClient.musics.get(0);
if ((int) nowWidth != targetWidth) {
nowWidth += speed;
}
speed = (targetWidth - nowWidth) / 60;
// 总宽度计算:文本最大宽度 + 70
ScreenDrawing.coloredRect(context, x - 2, y - 2, (int) nowWidth, 68, 0x32_FFFFFF);
context.drawTexture(musicObject.getImageId(), x, y, 0, 0, 0, 64, 64, 64, 64);
String musicName = musicObject.getName();
String artistsName = String.join(", ", musicObject.getArtists());
int musicNameWidth = client.textRenderer.getWidth(musicName);
int artistsNameWidth = client.textRenderer.getWidth(artistsName);
context.drawText(client.textRenderer, musicName, 66 + x, y, 0xFFFFFF, false);
context.drawText(client.textRenderer, artistsName, 66 + x, client.textRenderer.fontHeight + y, 0xFFFFFF, false);
// 进度条长度100
ScreenDrawing.coloredRect(context, 66 + x, client.textRenderer.fontHeight * 2 + y, (int) (((double) musicObject.getDuringLong() / musicObject.getDuringTime()) * 100), client.textRenderer.fontHeight + 4, 0x5F_6754E6);
ScreenDrawing.coloredRect(context, 66 + x, client.textRenderer.fontHeight * 2 + y, 100, client.textRenderer.fontHeight + 4, 0x48_6754E6);
context.drawText(client.textRenderer, musicObject.getDuring() + " / " + MusicObject.getTimeString(musicObject.getDuringTime()), 68 + x, client.textRenderer.fontHeight * 2 + 2 + y, 0xFFFFFF, false);
String lrc = musicObject.getLrc();
context.drawText(client.textRenderer, lrc, 66 + x, client.textRenderer.fontHeight * 3 + 4 + y, 0xFFFFFF, false);
int lrcWidth = client.textRenderer.getWidth(lrc);
targetWidth = Math.max(Math.max(Math.max(musicNameWidth, artistsNameWidth), lrcWidth), 100) + 70;
} else {
reset();
}
}
}