-
Notifications
You must be signed in to change notification settings - Fork 0
/
EnemyManager.java
86 lines (72 loc) · 2.54 KB
/
EnemyManager.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
package entities;
import java.awt.Graphics;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import gamestates.Playing;
import levels.Level;
import main.ScoreManager;
import utilz.LoadSave;
import static utilz.Constants.EnemyConstants.*;
public class EnemyManager {
private Playing playing;
private BufferedImage[][] crabbyArr;
private ArrayList<Crabby> crabbies = new ArrayList<>();
private ScoreManager scoreManager;
public EnemyManager(Playing playing, ScoreManager scoreManager) {
this.playing = playing;
this.scoreManager = scoreManager;
loadEnemyImgs();
}
public void loadEnemies(Level level) {
crabbies = level.getCrabs();
}
public void update(int[][] lvlData, Player player) {
boolean isAnyActive = false;
for (Crabby c : crabbies) {
if (c.isActive()) {
c.update(lvlData, player);
isAnyActive = true;
}
}
if (!isAnyActive) {
playing.setLevelCompleted(true);
}
}
public void draw(Graphics g, int xLvlOffset) {
drawCrabs(g, xLvlOffset);
}
private void drawCrabs(Graphics g, int xLvlOffset) {
for (Crabby c : crabbies) {
if (c.isActive()) {
g.drawImage(crabbyArr[c.getState()][c.getAniIndex()], (int) c.getHitbox().x - xLvlOffset - CRABBY_DRAWOFFSET_X + c.flipX(), (int) c.getHitbox().y - CRABBY_DRAWOFFSET_Y,
CRABBY_WIDTH * c.flipW(), CRABBY_HEIGHT, null);
// c.drawHitbox(g, xLvlOffset);
// c.drawAttackBox(g, xLvlOffset);
}
}
}
public void checkEnemyHit(Rectangle2D.Float attackBox) {
for (Crabby c : crabbies) {
if (c.isActive() && attackBox.intersects(c.getHitbox())) {
c.hurt(10);
scoreManager.addToTotalScore(100); // Adicione pontuação ao matar um inimigo
return;
}
}
}
private void loadEnemyImgs() {
crabbyArr = new BufferedImage[5][8];
BufferedImage temp = LoadSave.GetSpriteAtlas(LoadSave.CRABBY_SPRITE);
for (int j = 0; j < crabbyArr.length; j++) {
for (int i = 0; i < crabbyArr[j].length; i++) {
crabbyArr[j][i] = temp.getSubimage(i * CRABBY_WIDTH_DEFAULT, j * CRABBY_HEIGHT_DEFAULT, CRABBY_WIDTH_DEFAULT, CRABBY_HEIGHT_DEFAULT);
}
}
}
public void resetAllEnemies() {
for (Crabby c : crabbies) {
c.resetEnemy();
}
}
}