Refactoring EditableCanvas in DrawboxEditable and other classes

This commit is contained in:
2026-03-23 15:07:55 +03:00
parent 3b81412eb2
commit ab30acd69a
26 changed files with 498 additions and 186 deletions

View File

@ -3,9 +3,15 @@ package gui;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTabbedPane;
import events.EntityDrawboxChangedEvent;
import events.EntityDrawboxChangedListener;
import events.EntityHitboxChangedEvent;
import events.EntityHitboxChangedListener;
import model.Hitbox;
import model.Point;
@ -14,13 +20,13 @@ public class HitboxEditor extends Editable {
Point firstIsoPoint = null;
Point currentIsoPoint = new Point(0,0);
Point firstCartesianPoint = new Point(0,0), currentCartesianPoint = new Point(0,0);
private List<EntityHitboxChangedListener> listeners = new ArrayList<>();
HitboxEditor(ListGUI listGUI) {
super(listGUI);
}
@Override
public void drawing(Graphics2D g) {
//@Override
//public void drawing(Graphics2D g) {
/*Hitbox nowHitbox = entity.getHitbox();
//if(firstIsoPoint != null) {
int x1,y1,x2,y2;
@ -39,14 +45,8 @@ public class HitboxEditor extends Editable {
g.drawLine(x1, y1, x2, y2);
//}
*/
}
//}
@Override
public void saveDataInEntity() {
// saveDataInEntity - сохранение данных в сущности.
//Она нам тут не нужна.
//Все данные и так лежат где необходимо, используя ссылки.
}
@Override
public void mouseClicked(MouseEvent e) {
@ -85,8 +85,28 @@ public class HitboxEditor extends Editable {
}
}*/
}
@Override
public void subscribe(EntityHitboxChangedListener listener) {
listeners.add(listener);
}
public void unsubscribe(EntityHitboxChangedListener listener) {
listeners.remove(listener);
}
//НАДО ДОБАВИТЬ ЧТО БЫ ПОД КОНЕЦ РИСОВАНИЯ ХИТБОКСА ОНО ВЫЗЫВАЛО ФУНКЦИЮ И ВСЕ СОХРАНЯЛО.
//СОХРАНЕНИЕ УЖЕ РЕАЛИЗОВАНО.
//НО НЕ ДОБАВЛЕН ВЫЗОВ ФУНКЦИИ И НЕ ОФОРМЛЕНА ПОДПИСКА
//UPD: вроде подписку оформил в MainGUI;
private void notifySubscribers() {
for (EntityHitboxChangedListener listener : listeners) {
listener.hitboxChanged(
new EntityHitboxChangedEvent(entity.getHitbox(), entity)
);
}
}
//это старая очистка которая пока убрана. В будущем будет убрана вовсе, после рефакторинга.
/*@Override
public void actionPerformed(ActionEvent e) {
JTabbedPane parent = (JTabbedPane) getParent();
if(parent.getSelectedComponent() == this){
@ -96,7 +116,7 @@ public class HitboxEditor extends Editable {
repaint();
}
}
}
}*/
}