Refactoring EditableCanvas in DrawboxEditable and other classes
This commit is contained in:
@ -32,6 +32,8 @@ import org.xml.sax.SAXException;
|
||||
|
||||
import events.EntityDrawboxChangedEvent;
|
||||
import events.EntityDrawboxChangedListener;
|
||||
import events.EntityHitboxChangedEvent;
|
||||
import events.EntityHitboxChangedListener;
|
||||
import exception.DuplicateEntryException;
|
||||
import launch.Launcher;
|
||||
import model.Entity;
|
||||
@ -41,7 +43,7 @@ import model.Entity;
|
||||
* Класс данных, который оперирует их сохранением, загрузкой, и хранением в памяти.
|
||||
* ВАЖНО: данный класс хранит так же актуальную копию XML-представления файла
|
||||
* */
|
||||
public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
||||
public class Project implements Iterable<Entity>, EntityDrawboxChangedListener, EntityHitboxChangedListener {
|
||||
|
||||
/**
|
||||
* Путь к XML по-умолчанию.
|
||||
@ -125,7 +127,7 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
||||
}
|
||||
|
||||
/**
|
||||
* Загружает типы сущностей из файла с заданным именем и расположением.<br>
|
||||
* Загружает типы сущностей из файла с заданным именем и расположением.<br>0
|
||||
* */
|
||||
public void load() throws SAXException, IOException, ParserConfigurationException {
|
||||
listEntity.clear();
|
||||
@ -237,14 +239,14 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
||||
Element drawboxProperty = document.createElement("property");
|
||||
drawboxProperty.setAttribute("name", "drawbox");
|
||||
drawboxProperty.setAttribute("type", "string");
|
||||
drawboxProperty.setAttribute("default", ""); // empty, because on creation there is no drawbox yet
|
||||
drawboxProperty.setAttribute("default", "0 0 0 0 0 0 0 0"); // empty, because on creation there is no drawbox yet
|
||||
objecttypeElement.appendChild(drawboxProperty);
|
||||
|
||||
// format: <property name="hitbox" type="string" default="HITBOX_TYPE OFFSET_X OFFSET_Y SIZE"/>
|
||||
Element hitboxProperty = document.createElement("property");
|
||||
hitboxProperty.setAttribute("name", "hitbox");
|
||||
hitboxProperty.setAttribute("type", "string");
|
||||
hitboxProperty.setAttribute("default", ""); // empty, no hitbox yet
|
||||
hitboxProperty.setAttribute("default", "Rectangle 0 0 0 0"); // empty, no hitbox yet
|
||||
objecttypeElement.appendChild(hitboxProperty);
|
||||
|
||||
//printXMlToConsole(); //DEBUG!
|
||||
@ -355,7 +357,27 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
||||
//we have hitbox, drawbox and class, gotta set the right one
|
||||
Element propertyElement = ((Element)properties.item(i));
|
||||
if (propertyElement.getAttribute("name").equals("drawbox")) {
|
||||
propertyElement.setAttribute("default", event.owner.getDrawbox().toString());
|
||||
propertyElement.setAttribute("default", event.owner.getDrawbox().listPointsToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Получение события при отрисовке нового Hitbox, для изменения XML-дерева.
|
||||
* Объект event хранит в себе ссылку на новый объект Hitbox и объект entity, для которой он был создан.
|
||||
* */
|
||||
@Override
|
||||
public void hitboxChanged(EntityHitboxChangedEvent event) {
|
||||
String entityName = event.owner.getName();
|
||||
Node entityToUpdate = getEntityXMLNodeByName(entityName);
|
||||
NodeList properties = entityToUpdate.getChildNodes();
|
||||
for(int i = 0; i < properties.getLength(); i++) {
|
||||
if(properties.item(i) instanceof Element) { // ignoring #text nodes
|
||||
//we have hitbox, drawbox and class, gotta set the right one
|
||||
Element propertyElement = ((Element)properties.item(i));
|
||||
if (propertyElement.getAttribute("name").equals("hitbox")) {
|
||||
propertyElement.setAttribute("default", event.owner.getHitbox().listPointsToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -388,6 +410,8 @@ public class Project implements Iterable<Entity>, EntityDrawboxChangedListener {
|
||||
stripEmptyElements(child);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//в момент окончания рисования, в зависимости в какой мы рисуем вкладке хитбокса,
|
||||
//в зависимости от того в какой панельке(jpanel)и подклассе интерфейса Editable
|
||||
|
||||
Reference in New Issue
Block a user