package vazkii.minetunes.gui;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.Tessellator;
import vazkii.minetunes.MineTunes;
import vazkii.minetunes.player.chooser.action.ActionPlayMp3;
import vazkii.minetunes.playlist.MP3Metadata;
import vazkii.minetunes.playlist.Playlist;
public class GuiMusicSlot extends GuiScrollingListMT {
GuiPlaylistManager parent;
public GuiMusicSlot(GuiPlaylistManager parent) {
super(parent.width - 200, parent.height - parent.getTopSize(), parent.getTopSize(), 200, 40);
this.parent = parent;
}
@Override
protected int getSize() {
return parent.visibleSongs.size();
}
@Override
protected void elementClicked(int i, boolean doubleclick) {
MP3Metadata metadata = parent.visibleSongs.get(i);
if(doubleclick) {
int index = parent.getSelectedPlaylistIndex();
Playlist playlist = parent.getSelectedPlaylist();
if(playlist != null) {
ActionPlayMp3.instance.play(metadata);
parent.selectCurrentPlaylist(index, i);
}
}
parent.selectSong(metadata);
}
@Override
protected boolean isSelected(int i) {
return parent.visibleSongs.get(i) == parent.getSelectedSong();
}
@Override
protected void drawSlot(int i, int j, int k, int l, Tessellator tessellator) {
MP3Metadata metadata = parent.visibleSongs.get(i);
if(metadata != null) {
FontRenderer font = Minecraft.getMinecraft().fontRendererObj;
boolean selected = isSelected(i);
int s = j + 20 - listWidth;
boolean playing = false;
float playedFraction = 0;
boolean paused = false;
if(MineTunes.musicPlayerThread != null) {
MP3Metadata playingMeta = MineTunes.musicPlayerThread.getPlayingMetadata();
if(playingMeta != null && playingMeta.isEqualFile(metadata)) {
playing = true;
playedFraction = MineTunes.musicPlayerThread.getFractionPlayed();
paused = MineTunes.musicPlayerThread.isPaused();
}
}
int colorMain = playing ? 0xAAFFFF : 0xFFFFFF;
int colorSub = playing ? 0x00AAAA : 0xAAAAAA;
int colorLength = playing ? paused ? 0xFF5555 : 0x55FF55 : 0x555555;
int colorBg = 0x44000000;
if(!selected)
parent.drawBox(s - 6, k + 2, listWidth + 6, 32);
font.drawStringWithShadow(metadata.title, s, k + 3, colorMain);
font.drawStringWithShadow(metadata.artist, s + 4, k + 13, colorSub);
font.drawStringWithShadow(metadata.album, s + 4, k + 23, colorSub);
GL11.glScalef(2F, 2F, 2F);
String length = metadata.length;
if(playing)
length = MP3Metadata.getLengthStr((int) (metadata.lengthMs * playedFraction)) + "/" + length;
font.drawString(length, (j - 2) / 2 - font.getStringWidth(length), (k + 6) / 2, colorLength);
GL11.glScalef(0.5F, 0.5F, 0.5F);
}
}
}