Files
entity-editor/src/model/Hitbox.java

91 lines
3.7 KiB
Java

package model;
import java.util.ArrayList;
import java.util.List;
public abstract class Hitbox {
String shape = null;// shape - Форма хитбокса. Понадобится при написании сохранения. Один из параметров в xml-file.
Point referencePoint = new Point(0, 0); //Точка отсчета хитбокса, от нее рассчитывается высота+ширина/радиус(при круге) хитбокса.
Entity owner;
public Hitbox(){
}
//Либо так передавать shape, либо создать setShape. Но по сути shape определяется при создании обьекта, и тогда set - предоставление не нужных возможностей.
public Hitbox(String shape){
this.shape = new String(shape);
}
//informationHitbox - default="Rectangle 0 0 96 98"
//Предварительно, я бы сказал что вообще этот конструктор бесполезен и его можно удалить,
// т.к. Hitbox конструктор вызывается из дочерних элементов, а они уже владеют всей необходимой инфой, и entity owner задают сами
// кстати забавно. сейчас устанавливается entity через serOwnerEntity, но как будто этот метод тоже излишек, ведь владелец хитбокса только один.
//Но нет. у нас может быть хитбокс создан программно раньше entity, помню было такое где то, так что этот метод еще обоснован.
public Hitbox(String informationHitbox, Entity owner){
if(informationHitbox!= null) {
setOwnerEntity(owner);
String[] informations = informationHitbox.split(" ");
shape = new String(informations[0]);
}
}
public abstract String listPointsToString();
/**
* @param result - Point object to store the result
* @return x and y converted to isometic coords
* */
public static Point cartesianToIsometric(float cartX, float cartY, Point result) {
result.x = cartX - cartY;
result.y = (cartX + cartY) / 2;
return result;
}
/**
* @param result - Point object to store the result
* @return x and y converted to cartesian coords
* */
public static Point isometricToCartesian(float x, float y, Point result) {
result.x = (2 * y + x) / 2;
result.y = (2 * y - x) / 2;
return result;
}
public void setOwnerEntity(Entity owner) {
this.owner = owner;
}
public Entity getOwnerEntity() {
return owner;
}
public String getShape() {
return shape;
}
//not the same as toString()! the latter is for XML while printToConsole() is for console
public void printToConsole() {
/*System.out.println();
System.out.println("|||Hitbox:");
if(shape!=null&&listPointsCartesian!=null) {
System.out.println("Shape: " + shape);
System.out.println("Cartesian: ");
for(Point point: listPointsCartesian) {
System.out.print("("+point.x+";"+point.y+") ");
System.out.println("");
}
System.out.println("-----------");
System.out.println("Iso: ");
for(Point point: listPointsIso){
System.out.print("("+point.x+";"+point.y+") ");
System.out.println("");
}
System.out.println(" ");
}else {
System.out.println("null");
}*/
}
//дописать функцию возвращения listPonts и shape(форма), если будет нужно.
// так же при написании функции возвращения нужных координат, надо их сделать целочисленными.
}