-
Notifications
You must be signed in to change notification settings - Fork 0
/
CasaGUI.java
97 lines (80 loc) · 2.79 KB
/
CasaGUI.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.SwingConstants;
/**
* Implementa as rotinas da interface gráfica do jogo relacionadas a Casa.
*
* @author Alan Moraes / [email protected]
* @author Victor Koehler / [email protected]
*/
public class CasaGUI extends JButton {
// Classe principal, para dados do jogo.
private final Principal janelaPrincipal;
private Casa casa; // Casa correspondente
/**
* Construtor padrão da interface gráfica de uma casa do tabuleiro.
*
* @param casa Casa relacionada.
* @param janelaPrincipal Janela principal
*/
public CasaGUI(Casa casa, Principal janelaPrincipal) {
this.casa = casa;
this.janelaPrincipal = janelaPrincipal;
// Layout e cor
setOpaque(false);
setContentAreaFilled(false);
setIcon(null);
setVerticalTextPosition(SwingConstants.CENTER);
setHorizontalTextPosition(SwingConstants.CENTER);
java.awt.Font f = getFont();
setFont(f.deriveFont(f.getSize2D() + 5.0f));
addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
janelaPrincipal.reagirCasaClicada((CasaGUI) evt.getSource());
}
});
}
public Casa getCasa() {
return casa;
}
public void setCasa(Casa casa) {
this.casa = casa;
}
private Color getCor() {
if (casa == null || janelaPrincipal == null || casa.pertenceGuarita()) {
return Color.WHITE;
}
return janelaPrincipal.getCorPadrão(casa.getCor());
}
private boolean possuiBorda() {
return casa != null && !casa.ehCasaFinal();
}
@Override
protected void paintComponent(Graphics g) {
setBackground(getCor());
if (possuiBorda()) {
setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
} else {
setBorder(BorderFactory.createEmptyBorder());
}
setIcon(null);
if (casa != null && janelaPrincipal != null) {
// int q = casa.getQuantidadePecas();
// setText(q >= 2 ? q + "" : "");
if (casa.possuiPeca()) {
Icon icon = janelaPrincipal
.getIconePadrão("CASTELO" + casa.getPeca().getNivel() + casa.getPeca().getCor());
setIcon(icon);
} else if (casa.ehEntradaZonaSegura()) {
Icon icon = janelaPrincipal.getIconePadrão("ESTRELA");
setIcon(icon);
}
}
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
}