cicaprojekt/cicaprojekt/Display.java

77 lines
2.0 KiB
Java

package cicaprojekt;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;
public class Display extends JPanel{
private List<Drawer> visuals;
private Clip clip;
public Display() {
visuals = new ArrayList<>();
setVisible(false);
}
public void addVisual(Drawer visual) {
visuals.add(visual);
}
public void drawVisuals() throws IOException {
for(Drawer visual : visuals)
visual.draw();
repaint();
setVisible(true);
}
public void startMusic() {
try(AudioInputStream ais =
AudioSystem.getAudioInputStream(new URL("http://users.hszk.bme.hu/~bb1376/tomboy.wav"))) {
clip = AudioSystem.getClip();
clip.open(ais);
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, "Sajnos nem sikerült letölteni a cicazenét! :(");
}
}
public void stopMusic() {
try {
clip.stop();
}
catch (NullPointerException e)
{}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(Drawer visual : visuals)
g.drawImage(visual.getImage(), visual.getTileX() * 64, visual.getTileY() * 64, null);
}
public void gapMagic(Gap gap, Field field, int mapwidth) {
try {
visuals.set((gap.getY()*mapwidth)+gap.getX(), new FieldDrawer(field));
}
catch (IOException e) {
Control.ioErrorMessage();
}
}
public void setMapSize(int width, int height) {
Dimension dimension = new Dimension(width * 64, height * 64);
setPreferredSize(dimension);
setMinimumSize(dimension);
}
}