97 lines
3.6 KiB
Java
97 lines
3.6 KiB
Java
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.JButton;
|
|
import javax.swing.JList;
|
|
import javax.swing.JTabbedPane;
|
|
import javax.swing.event.ListSelectionEvent;
|
|
|
|
import events.EntityDrawboxChangedEvent;
|
|
import events.EntityDrawboxChangedListener;
|
|
import events.EntityHitboxChangedEvent;
|
|
import events.EntityHitboxChangedListener;
|
|
import model.Hitbox;
|
|
import model.HitboxCircle;
|
|
import model.HitboxRectangle;
|
|
import model.Point;
|
|
import repository.Project;
|
|
|
|
|
|
public class HitboxEditor extends Editable {
|
|
|
|
JButton changeInRectangleHitboxJButton;
|
|
JButton changeInCircleHitboxJButton;
|
|
|
|
|
|
HitboxEditor(ListGUI listGUI) {
|
|
super(listGUI);
|
|
|
|
canvas = new EditableCanvas();
|
|
add(canvas);
|
|
canvas.setHitboxRectengleRenderingFunction();
|
|
canvas.setVisible(true);
|
|
|
|
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();
|
|
entity.setHitbox(new HitboxRectangle("Rectangle",entity));
|
|
canvas.setHitboxRectengleRenderingFunction();
|
|
//Сделать создание нового Hitbox формы Rectengle
|
|
});
|
|
changeInCircleHitboxJButton.addActionListener((e)->{
|
|
functionClearHitboxJButton();
|
|
entity.setHitbox(new HitboxCircle("Circle",entity));
|
|
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);
|
|
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();
|
|
}
|
|
} catch (Exception e1) {
|
|
//logger.severe("Entity with name '"+selectedEntityName+"' was not found! Cannot display it on panel!");
|
|
}
|
|
|
|
canvas.repaint();
|
|
}
|
|
}
|
|
|
|
|
|
}
|