package magic.ui.screen.about;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import magic.ui.MagicImages;
import magic.ui.MagicSound;
import magic.ui.helpers.ImageHelper;
import net.miginfocom.swing.MigLayout;
import org.pushingpixels.trident.Timeline;
import org.pushingpixels.trident.callback.TimelineCallback;
@SuppressWarnings("serial")
public class AboutContentPanel extends JPanel
implements TimelineCallback {
private Timeline dropTimeline;
private float imageScale = 0.0f;
AboutContentPanel() {
setOpaque(false);
setLayout(new MigLayout("alignx center, aligny center"));
doDropAnimation();
}
private void doDropAnimation() {
dropTimeline = new Timeline(this);
dropTimeline.addCallback(this);
dropTimeline.addPropertyToInterpolate("ImageScale", 6f, 1f);
dropTimeline.setDuration(500);
dropTimeline.play();
}
public void setImageScale(float f) {
this.imageScale = f;
repaint();
}
public float getImageScale() {
return this.imageScale;
}
@Override
public void onTimelineStateChanged(Timeline.TimelineState oldState, Timeline.TimelineState newState, float durationFraction, float timelinePosition) {
if (newState == Timeline.TimelineState.DONE) {
MagicSound.BOOM.play();
}
}
@Override
public void onTimelinePulse(float f, float f1) {
// n/a
}
private void drawMagarenaImage(Graphics g) {
BufferedImage image = MagicImages.ABOUT_LOGO;
int scaledW = (int) (image.getWidth() * imageScale);
int scaledH = (int) (image.getHeight() * imageScale);
BufferedImage scaled = ImageHelper.scale(image, scaledW, scaledH);
int posX = (getWidth() - scaled.getWidth()) / 2;
int posY = (getHeight() - scaled.getHeight()) / 2;
g.drawImage(scaled, posX, posY, null);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (imageScale > 0) {
drawMagarenaImage(g);
}
}
}