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