Refactoring ClearButton. Made by drawing CircleHitbox. Need to finish doing HitboxCircleRenderingFunction and saving hitboxCircle when you put the second point

This commit is contained in:
2026-04-01 18:20:08 +03:00
parent 6665199d12
commit 58550ae93a
16 changed files with 141 additions and 40 deletions

View File

@ -6,6 +6,8 @@ import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JTabbedPane;
import javax.swing.event.ListSelectionEvent;
@ -16,10 +18,15 @@ import events.EntityHitboxChangedListener;
import model.Hitbox;
import model.HitboxRectangle;
import model.Point;
import repository.Project;
public class HitboxEditor extends Editable {
JButton changeInRectangleHitboxJButton;
JButton changeInCircleHitboxJButton;
HitboxEditor(ListGUI listGUI) {
super(listGUI);
@ -28,29 +35,58 @@ public class HitboxEditor extends Editable {
canvas.setHitboxRectengleRenderingFunction();
canvas.setVisible(true);
clearLinesJButton.addActionListener((e)->{
if(entity != null) {
HitboxRectangle nowHitbox = (HitboxRectangle)entity.getHitbox();
System.out.println("1. nowHitbox.getListPointsIso().size() = "+ nowHitbox.getListPointsIso().size());
nowHitbox.getListPointsIso().clear();
System.out.println("2. nowHitbox.getListPointsIso().size() = "+ nowHitbox.getListPointsIso().size());
System.out.println("1. nowHitbox.getListPointsCartesian().size() = "+ nowHitbox.getListPointsCartesian().size() );
nowHitbox.getListPointsCartesian().clear();
System.out.println("2. nowHitbox.getListPointsCartesian().size() = "+ nowHitbox.getListPointsCartesian().size());
canvas.getHitboxRectengleRenderFunct().getLocalListPointsCartesian().clear();
canvas.getHitboxRectengleRenderFunct().getLocalListPointsIso().clear();
canvas.getHitboxRectengleRenderFunct().setFirstIsoPointIsNull();
canvas.repaint();
}
changeInRectangleHitboxJButton = super.createButton("Hitbox Rectangle",null,"res/square.png");
changeInCircleHitboxJButton = super.createButton("Hitbox circle",null,"res/circle.png");
toolbar.add(changeInRectangleHitboxJButton);
toolbar.add(changeInCircleHitboxJButton);
changeInRectangleHitboxJButton.addActionListener((e)->{
functionClearHitboxJButton();
//canvas.setHitboxRectengleRenderingFunction();
//Сделать создание нового Hitbox формы Rectengle
});
changeInCircleHitboxJButton.addActionListener((e)->{
functionClearHitboxJButton();
//canvas.setHitboxCircleRenderingFunction();
//Сделать создание нового Hitbox формы Circle
});
}
public void functionClearHitboxJButton() {
if(entity != null) {
canvas.renderingFunction.functionClearJButton();
canvas.repaint();
}
}
//НАДО ДОБАВИТЬ ЧТО БЫ ПОД КОНЕЦ РИСОВАНИЯ ХИТБОКСА ОНО ВЫЗЫВАЛО ФУНКЦИЮ И ВСЕ СОХРАНЯЛО.
//СОХРАНЕНИЕ УЖЕ РЕАЛИЗОВАНО.
//НО НЕ ДОБАВЛЕН ВЫЗОВ ФУНКЦИИ И НЕ ОФОРМЛЕНА ПОДПИСКА
//UPD: вроде подписку оформил в MainGUI;
@Override
public void valueChanged(ListSelectionEvent e) {
if(e.getSource() instanceof JList) {
//TODO: надо бы элегантнее пробросить сюда ListGUI - просто передача его в аргументах немножко громоздкая
// как-то обыграть это через события?
// ps. попытки обратиться к eventSource проваливаются - ListGUI это панель, уже внутри которой лежит JList
selectedEntityName = listGUI.getSelectedName();
try {
entity = Project.getInstance().getEntityByName(selectedEntityName);
} catch (Exception e1) {
//logger.severe("Entity with name '"+selectedEntityName+"' was not found! Cannot display it on panel!");
}
image = Project.getInstance().loadImageByName(selectedEntityName);
//TODO: if(image == null) вызов FileChooser'a и выбор изображения
canvas.setEntity(entity);
canvas.setImage(image);
if(entity.getHitbox().getShape().equals("Rectangle")) {
canvas.setHitboxRectengleRenderingFunction();
}
if(entity.getHitbox().getShape().equals("Circle")) {
canvas.setHitboxCircleRenderingFunction();
}
canvas.repaint();
}
}
}