91 lines
3.7 KiB
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(форма), если будет нужно.
|
|
// так же при написании функции возвращения нужных координат, надо их сделать целочисленными.
|
|
}
|