75 lines
2.0 KiB
Java
75 lines
2.0 KiB
Java
package ruscz.game.gameOfProd.BattleUI;
|
|
|
|
import ruscz.game.gameOfProd.Battle.BattlePerson;
|
|
import ruscz.game.gameOfProd.Windows.WindowOfBattle;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.util.Arrays;
|
|
import java.util.LinkedList;
|
|
|
|
import static ruscz.game.gameOfProd.Windows.WindowOfBattle.*;
|
|
|
|
public class EnemyDescription extends JPanel {
|
|
|
|
private final WindowOfBattle windowOfBattle;
|
|
|
|
public EnemyDescription(WindowOfBattle window) {
|
|
windowOfBattle = window;
|
|
|
|
setSize(CELL_SIZE * CANVAS_WIDTH * 2 / 3, CELL_SIZE * CANVAS_HEIGHT / 4);
|
|
setLocation(0, CELL_SIZE * CANVAS_HEIGHT * 3 / 4);
|
|
setBackground(Color.cyan);
|
|
setVisible(false);
|
|
|
|
updateDescription();
|
|
}
|
|
|
|
public void updateDescription() {
|
|
Timer timer = new Timer(1000, e -> {
|
|
if (isVisible()){
|
|
deletePreviousDescription();
|
|
addNewDescription();
|
|
revalidate();
|
|
repaint();
|
|
}
|
|
});
|
|
|
|
timer.start();
|
|
}
|
|
|
|
private void addNewDescription() {
|
|
if (getComponentCount() != 0) return;
|
|
if (windowOfBattle.getBattle() == null) return;
|
|
|
|
LinkedList<BattlePerson> he = new LinkedList<>(windowOfBattle.getBattle().getHeroes());
|
|
he.addAll(windowOfBattle.getBattle().getEnemies());
|
|
|
|
setLayout(new GridLayout (he.size() + 1, 3));
|
|
|
|
for (BattlePerson person: he){
|
|
JPanel jPanel = new JPanel();
|
|
JLabel name = new JLabel(person.getName());
|
|
JLabel level = new JLabel("Level: " + person.getLevel());
|
|
JLabel health = new JLabel("Health: " + person.getHealth() + "/" + person.getMaxHealth());
|
|
jPanel.add(name);
|
|
jPanel.add(level);
|
|
jPanel.add(health);
|
|
|
|
add(jPanel);
|
|
}
|
|
|
|
System.out.println(Arrays.toString(getComponents()));
|
|
}
|
|
|
|
private void deletePreviousDescription() {
|
|
if (getComponentCount() == 0) return;
|
|
for (Component c: getComponents())
|
|
remove(c);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|