diff --git a/.classpath b/.classpath index 7354c6b..e1fc3b4 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,7 @@ - + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 223b166..c95e8e6 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=15 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=15 +org.eclipse.jdt.core.compiler.compliance=23 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate diff --git a/src/gui/HitboxEditor.java b/src/gui/HitboxEditor.java index 5b4efc8..32df966 100644 --- a/src/gui/HitboxEditor.java +++ b/src/gui/HitboxEditor.java @@ -21,7 +21,7 @@ public class HitboxEditor extends Editable { @Override public void drawing(Graphics2D g) { - Hitbox nowHitbox = entity.getHitbox(); + /*Hitbox nowHitbox = entity.getHitbox(); //if(firstIsoPoint != null) { int x1,y1,x2,y2; int size = nowHitbox.getListPointsIso().size(); @@ -38,7 +38,7 @@ public class HitboxEditor extends Editable { y2 = (int)nowHitbox.getListPointsIso().get(3).y; g.drawLine(x1, y1, x2, y2); //} - + */ } @Override @@ -69,7 +69,7 @@ public class HitboxEditor extends Editable { @Override public void mouseMoved(MouseEvent e) { - currentIsoPoint.x = e.getX(); + /*currentIsoPoint.x = e.getX(); currentIsoPoint.y = e.getY(); if(entity!=null) { Hitbox nowHitbox = entity.getHitbox(); @@ -83,7 +83,7 @@ public class HitboxEditor extends Editable { nowHitbox.convertCartesianPointsToIso(); repaint(); } - } + }*/ } @Override diff --git a/src/gui/ListGUI.java b/src/gui/ListGUI.java index 78b25ad..a49bded 100644 --- a/src/gui/ListGUI.java +++ b/src/gui/ListGUI.java @@ -89,13 +89,7 @@ public class ListGUI extends JPanel { public void addListElement(String name, String solid) throws DuplicateEntryException { - - // плейсхолдеры для новых хитбоксов и дроубоксов, иначе всё валится с NPE - Hitbox hitbox = new Hitbox(); - Drawbox drawbox = new Drawbox(); - - Entity e = new Entity(name, hitbox, drawbox); - hitbox.setOwnerEntity(e); + Entity e = new Entity(name); e.setType(solid); logger.finer("Entity \""+name+"\" was created."); Project.getInstance().addEntity(e); diff --git a/src/model/Entity.java b/src/model/Entity.java index ee71d5f..9556368 100644 --- a/src/model/Entity.java +++ b/src/model/Entity.java @@ -18,10 +18,10 @@ public class Entity { thisHitbox = new Hitbox(hitbox,this); } - public Entity(String name, Hitbox hitbox, Drawbox drawbox) { + public Entity(String name) { this.thisName = name; - this.thisHitbox = hitbox; - this.thisDrawbox = drawbox; + this.thisHitbox = new Hitbox(); + this.thisDrawbox = new Drawbox(); thisHitbox.setOwnerEntity(this); } diff --git a/src/model/Hitbox.java b/src/model/Hitbox.java index 691f85e..89ecd9f 100644 --- a/src/model/Hitbox.java +++ b/src/model/Hitbox.java @@ -4,99 +4,33 @@ import java.util.ArrayList; import java.util.List; public class Hitbox { - private String shape = null;// shape - Форма хитбокса. Понадобится при написании сохранения. Один из параметров в xml-file. - private List listPointsIso = new ArrayList(); - private List listPointsCartesian = new ArrayList(); - private Point referencePoint = new Point(0, 0); //Точка отсчета хитбокса, от нее рассчитывается высота+ширина/радиус(при круге) хитбокса. - private float widthHitbox = 0,heightHitbox = 0; // Ширина и высота хитбокса в декартовых координатах. - private float radiusHitbox = 0; - private Entity owner; + String shape = null;// shape - Форма хитбокса. Понадобится при написании сохранения. Один из параметров в xml-file. + Point referencePoint = new Point(0, 0); //Точка отсчета хитбокса, от нее рассчитывается высота+ширина/радиус(при круге) хитбокса. + Entity owner; public Hitbox(){ - initListsPoints(); } - public Hitbox(String shape,List listPointsIso,List listPointsCartesian){ + public Hitbox(String shape){ this.shape = new String(shape); - this.listPointsIso = listPointsIso; - this.listPointsCartesian = listPointsCartesian; - initListsPoints(); } + + //informationHitbox - default="Rectangle 0 0 96 98" public Hitbox(String informationHitbox, Entity owner){ if(informationHitbox!= null) { setOwnerEntity(owner); - initListsPoints(); String[] informations = informationHitbox.split(" "); - //в 0-м индексе всегда идет название фигуры.Так сделан наш xml. shape = new String(informations[0]); if(shape.equals("Rectangle")) { - parseStringToRectangleHitbox(informations); + /*parseStringToRectangleHitbox(informations); createCartesianPointsFromWidthAndHeigh(); convertCartesianPointsToIso(); - printToConsole(); + printToConsole();*/ }else if(shape.equals("Circle")) { - parseStringToCircleHitbox(informations); + //parseStringToCircleHitbox(informations); } } } - - private void initListsPoints() { - if(listPointsIso.size()<1) { - for(int i=0;i<4;i++) { - listPointsIso.add(new Point(0,0)); - } - } - if(listPointsCartesian.size()<1) { - for(int i=0;i<4;i++) { - listPointsCartesian.add(new Point(0,0)); - } - } - } - - - private void parseStringToRectangleHitbox(String[] informations) { - referencePoint.x = Float.parseFloat(informations[1]); - referencePoint.y = Float.parseFloat(informations[2]); - widthHitbox = Float.parseFloat(informations[3]); - heightHitbox = Float.parseFloat(informations[4]); - } - - private void parseStringToCircleHitbox(String[] informations) { - referencePoint.x = Float.parseFloat(informations[1]); - referencePoint.y = Float.parseFloat(informations[2]); - radiusHitbox = Float.parseFloat(informations[3]); - } - - - public void convertIsoPointsToCartesian() { - Point isoPoint; - for (int i = 0 ; i<4;i++) { - isoPoint = listPointsIso.get(i); - cartesianToIsometric(isoPoint.x,isoPoint.y,listPointsCartesian.get(i)); - } - } - - - //+++++++ - public void convertCartesianPointsToIso() { - Point cartesianPoint; - for (int i = 0 ; i<4;i++) { - cartesianPoint = listPointsCartesian.get(i); - cartesianToIsometric(cartesianPoint.x,cartesianPoint.y,listPointsIso.get(i)); - } - } - //+++++++ - private void createCartesianPointsFromWidthAndHeigh(){ - Point refIsoPoint = new Point(owner.getWidth()/2+referencePoint.x,owner.getHeight()+referencePoint.y); - Point refCartesianPoint = isometricToCartesian(refIsoPoint.x,refIsoPoint.y,new Point(0,0)); - listPointsCartesian.clear(); - listPointsCartesian.add(new Point(refCartesianPoint.x-widthHitbox,refCartesianPoint.y)); - listPointsCartesian.add(new Point(refCartesianPoint.x,refCartesianPoint.y)); - listPointsCartesian.add(new Point(refCartesianPoint.x,refCartesianPoint.y-heightHitbox)); - listPointsCartesian.add(new Point(refCartesianPoint.x-widthHitbox,refCartesianPoint.y-heightHitbox)); - } - - /** * @param result - Point object to store the result * @return x and y converted to isometic coords @@ -126,16 +60,11 @@ public class Hitbox { public String getShape() { return shape; } - public List getListPointsIso() { - return listPointsIso; - } - public List getListPointsCartesian() { - return listPointsCartesian; - } + //not the same as toString()! the latter is for XML while printToConsole() is for console public void printToConsole() { - System.out.println(); + /*System.out.println(); System.out.println("|||Hitbox:"); if(shape!=null&&listPointsCartesian!=null) { System.out.println("Shape: " + shape); @@ -153,7 +82,7 @@ public class Hitbox { System.out.println(" "); }else { System.out.println("null"); - } + }*/ } //дописать функцию возвращения listPonts и shape(форма), если будет нужно. // так же при написании функции возвращения нужных координат, надо их сделать целочисленными. diff --git a/src/model/HitboxCircle.java b/src/model/HitboxCircle.java index 16aa19a..0e91589 100644 --- a/src/model/HitboxCircle.java +++ b/src/model/HitboxCircle.java @@ -1,5 +1,16 @@ package model; public class HitboxCircle extends Hitbox { - private float radiusHitbox = 0; + private float radiusHitbox; + + public HitboxCircle(String[] dataHitbox, Entity owner){ + super(dataHitbox[0]); + parseStringToCircleHitbox(dataHitbox); + } + + private void parseStringToCircleHitbox(String[] informations) { + referencePoint.x = Float.parseFloat(informations[1]); + referencePoint.y = Float.parseFloat(informations[2]); + radiusHitbox = Float.parseFloat(informations[3]); + } } diff --git a/src/model/HitboxRectangle.java b/src/model/HitboxRectangle.java index c076d70..79474e6 100644 --- a/src/model/HitboxRectangle.java +++ b/src/model/HitboxRectangle.java @@ -7,7 +7,7 @@ public class HitboxRectangle extends Hitbox { private List listPointsIso = new ArrayList(); private List listPointsCartesian = new ArrayList(); private float widthHitbox = 0,heightHitbox = 0; // Ширина и высота хитбокса в декартовых координатах. - /* + public HitboxRectangle(){ initListsPoints(); } @@ -17,22 +17,17 @@ public class HitboxRectangle extends Hitbox { this.listPointsCartesian = listPointsCartesian; initListsPoints(); } - public HitboxRectangle(String informationHitbox, Entity owner){ - if(informationHitbox!= null) { - setOwnerEntity(owner); - initListsPoints(); - String[] informations = informationHitbox.split(" "); - //в 0-м индексе всегда идет название фигуры.Так сделан наш xml. - shape = new String(informations[0]); - if(shape.equals("Rectangle")) { - parseStringToRectangleHitbox(informations); - createCartesianPointsFromWidthAndHeigh(); - convertCartesianPointsToIso(); - printToConsole(); - }else if(shape.equals("Circle")) { - parseStringToCircleHitbox(informations); - } - } + + //informationHitbox - default="Rectangle 0 0 96 98" + public HitboxRectangle(String[] dataHitbox, Entity owner){ + super(dataHitbox[0]); + setOwnerEntity(owner); + initListsPoints(); + //в 0-м индексе всегда идет название фигуры.Так сделан наш xml. + parseStringToRectangleHitbox(dataHitbox); + createCartesianPointsFromWidthAndHeigh(); + convertCartesianPointsToIso(); + printToConsole(); } private void initListsPoints() { @@ -48,14 +43,14 @@ public class HitboxRectangle extends Hitbox { } } - private void parseStringToRectangleHitbox(String[] informations) { - referencePoint.x = Float.parseFloat(informations[1]); - referencePoint.y = Float.parseFloat(informations[2]); - widthHitbox = Float.parseFloat(informations[3]); - heightHitbox = Float.parseFloat(informations[4]); + private void parseStringToRectangleHitbox(String[] dataHitbox) { + referencePoint.x = Float.parseFloat(dataHitbox[1]); + referencePoint.y = Float.parseFloat(dataHitbox[2]); + widthHitbox = Float.parseFloat(dataHitbox[3]); + heightHitbox = Float.parseFloat(dataHitbox[4]); } - + //тут не правильно реализована функция, т.к. до сих пор нигде не используется. Надо переделать будет. public void convertIsoPointsToCartesian() { Point isoPoint; for (int i = 0 ; i<4;i++) { @@ -83,6 +78,11 @@ public class HitboxRectangle extends Hitbox { listPointsCartesian.add(new Point(refCartesianPoint.x,refCartesianPoint.y-heightHitbox)); listPointsCartesian.add(new Point(refCartesianPoint.x-widthHitbox,refCartesianPoint.y-heightHitbox)); } - */ + public List getListPointsIso() { + return listPointsIso; + } + public List getListPointsCartesian() { + return listPointsCartesian; + } }