59 lines
2.9 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|