-
Notifications
You must be signed in to change notification settings - Fork 0
/
Potion.java
68 lines (54 loc) · 1.94 KB
/
Potion.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
package objects;
import main.Game;
/**
* Representa um objeto Potion no jogo, uma subclasse de GameObject.
*/
public class Potion extends GameObject {
// Deslocamento vertical utilizado para simular um movimento de "flutuação".
private float hoverOffset;
// Valor máximo do deslocamento de flutuação.
private int maxHoverOffset, hoverDir = 1;
/**
* Construtor da classe Potion.
*
* @param x A coordenada x inicial da Potion.
* @param y A coordenada y inicial da Potion.
* @param objType O tipo de objeto Potion.
*/
public Potion(int x, int y, int objType) {
super(x, y, objType);
// Ativa a animação para a Potion.
doAnimation = true;
// Inicializa a hitbox da Potion com largura 7 e altura 14.
initHitbox(7, 14);
// Define os deslocamentos de desenho (offset) nas coordenadas x e y.
xDrawOffset = (int) (3 * Game.SCALE);
yDrawOffset = (int) (2 * Game.SCALE);
// Define o valor máximo do deslocamento de flutuação.
maxHoverOffset = (int) (10 * Game.SCALE);
}
/**
* Atualiza o estado da Potion.
*/
public void update() {
// Atualiza o contador de animação.
updateAnimationTick();
// Atualiza o movimento de flutuação da Potion.
updateHover();
}
/**
* Atualiza o movimento de flutuação da Potion.
*/
private void updateHover() {
// Atualiza a posição vertical da Potion com base no movimento de flutuação.
hoverOffset += (0.075f * Game.SCALE * hoverDir);
// Inverte a direção do movimento de flutuação quando atinge o valor máximo ou mínimo.
if (hoverOffset >= maxHoverOffset) {
hoverDir = -1;
} else if (hoverOffset < 0) {
hoverDir = 1;
}
// Atualiza a coordenada y da hitbox com base no movimento de flutuação.
hitbox.y = y + hoverOffset;
}
}