2023-05-21 15:13:45 -07:00
|
|
|
import java.awt.*;
|
|
|
|
import java.awt.event.*;
|
|
|
|
import javax.swing.*;
|
|
|
|
|
|
|
|
public class Face extends JComponent {
|
|
|
|
public static final int SIZE = 26;
|
|
|
|
public static final int HAPPY_INDEX = 0;
|
|
|
|
public static final int SHOCKED_INDEX = 1;
|
|
|
|
public static final int DEAD_INDEX = 2;
|
|
|
|
public static final int COOL_INDEX = 3;
|
|
|
|
public static final int PRESSED_INDEX = 4;
|
|
|
|
|
|
|
|
private final Canvas GAME_CANVAS;
|
|
|
|
private final Image[] FACES;
|
|
|
|
private int face;
|
|
|
|
private int unpressedFace;
|
|
|
|
private boolean pressed;
|
|
|
|
private boolean mouseOver;
|
|
|
|
|
|
|
|
public Face(Canvas gameCanvas, Image[] faces) {
|
|
|
|
FACES = faces;
|
|
|
|
GAME_CANVAS = gameCanvas;
|
|
|
|
face = HAPPY_INDEX;
|
|
|
|
pressed = false;
|
|
|
|
mouseOver = false;
|
|
|
|
setPreferredSize(new Dimension(SIZE, SIZE));
|
2023-05-24 17:34:20 -07:00
|
|
|
addMouseListener(new MouseAdapter() {
|
2023-05-21 15:13:45 -07:00
|
|
|
@Override
|
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
|
pressed = true;
|
|
|
|
unpressedFace = face;
|
|
|
|
setFace(PRESSED_INDEX);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
|
pressed = false;
|
|
|
|
if (mouseOver) {
|
|
|
|
setFace(HAPPY_INDEX);
|
|
|
|
GAME_CANVAS.restart();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void mouseEntered(MouseEvent e) {
|
|
|
|
mouseOver = true;
|
|
|
|
if (pressed)
|
|
|
|
setFace(PRESSED_INDEX);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void mouseExited(MouseEvent e) {
|
|
|
|
mouseOver = false;
|
|
|
|
if (pressed)
|
|
|
|
setFace(unpressedFace);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setFace(int face) {
|
|
|
|
this.face = face;
|
|
|
|
repaint();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2023-05-24 17:34:20 -07:00
|
|
|
public void paintComponent(Graphics gr) {
|
|
|
|
super.paintComponent(gr);
|
|
|
|
Graphics2D g = (Graphics2D) gr;
|
|
|
|
|
2023-05-21 15:13:45 -07:00
|
|
|
g.drawImage(FACES[face], 0, 0, this);
|
|
|
|
}
|
|
|
|
}
|