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