2020-06-07 15:22:31 +02:00

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);
}
}