Circle Hitbox functionality is fully ready. It must be done Rectangle Hitbox.

This commit is contained in:
2026-04-08 17:10:49 +03:00
parent 7e09343035
commit f43795e1f4
3 changed files with 33 additions and 18 deletions

View File

@ -1,19 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<objecttypes>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><objecttypes>
<objecttype color="#a0a0a4" name="misato">
<property default="Solid" name="class" type="string"/>
<property default="22 10 232 3 264 199 5 198 " name="drawbox" type="string"/>
<property default="Circle 1 14 61" name="hitbox" type="string"/>
</objecttype>
<property default="1 1 201 0 184 189 72 191 " name="drawbox" type="string"/>
<property default="Rectangle 0 0 48 69" name="hitbox" type="string"/></objecttype>
<objecttype color="#a0a0a4" name="starlight">
<property default="Solid" name="class" type="string"/>
<property default="0 4 196 0 197 119 34 140 " name="drawbox" type="string"/>
<property default="Rectangle 38 30 88 62" name="hitbox" type="string"/>
<property default="4 3 162 9 129 121 53 140 " name="drawbox" type="string"/>
<property default="Circle 15 4 31" name="hitbox" type="string"/>
</objecttype>
<objecttype color="#a0a0a4" name="tavern">
<property default="Solid" name="class" type="string"/>
<property default="3 2 252 1 253 605 6 608" name="drawbox" type="string"/>
<property default="Rectangle -1855 -3037 304 298" name="hitbox" type="string"/>
<property default="93 47 303 55 245 301 90 286 " name="drawbox" type="string"/>
<property default="Circle 4156 2349 85" name="hitbox" type="string"/>
</objecttype>
<objecttype color="#a0a0a4" name="TopHome">
<property default="Solid" name="class" type="string"/>
@ -23,6 +22,6 @@
<objecttype color="000000" name="newtest">
<property default="solid" name="class" type="string"/>
<property default="252 116 505 120 500 247 235 237 " name="drawbox" type="string"/>
<property default="Rectangle -18 -678 217 161" name="hitbox" type="string"/>
<property default="Circle 578 671 15" name="hitbox" type="string"/>
</objecttype>
</objecttypes>

View File

@ -27,13 +27,13 @@ public class HitboxCircleRenderingFunction implements ShapeRenderingFunction {
HitboxCircle nowHitbox = (HitboxCircle)entity.getHitbox();
if(nowHitbox.getRadius()!=0) {
g.drawOval((int)nowHitbox.getCurrentRefPoint().x, (int)(nowHitbox.getCurrentRefPoint().y-(nowHitbox.getDiametrY()/2)), (int)nowHitbox.getDiametrX(), (int)(nowHitbox.getDiametrY()));
System.out.println("READY: diametrX = "+nowHitbox.getDiametrX()+ ". diametrY = "+nowHitbox.getDiametrY());
System.out.println("READY: coordX = "+(int)nowHitbox.getCurrentRefPoint().x+ ". coordY = "+(int)(nowHitbox.getCurrentRefPoint().y-(nowHitbox.getDiametrY()/2)));
// System.out.println("READY: diametrX = "+nowHitbox.getDiametrX()+ ". diametrY = "+nowHitbox.getDiametrY());
// System.out.println("READY: coordX = "+(int)nowHitbox.getCurrentRefPoint().x+ ". coordY = "+(int)(nowHitbox.getCurrentRefPoint().y-(nowHitbox.getDiametrY()/2)));
}else if(firstIsoPoint != null) {
currentDiametrX = Math.abs((int)firstIsoPoint.x-(int)currentIsoPoint.x);
System.out.println("CURRENT: coordX = "+(int)firstIsoPoint.x+ ". coordX = "+(int)(firstIsoPoint.y-currentDiametrX/4));
System.out.println("CURRENT: diametrX = "+currentDiametrX+ ". diametrY = "+currentDiametrX/2);
// System.out.println("CURRENT: coordX = "+(int)firstIsoPoint.x+ ". coordX = "+(int)(firstIsoPoint.y-currentDiametrX/4));
// System.out.println("CURRENT: diametrX = "+currentDiametrX+ ". diametrY = "+currentDiametrX/2);
g.drawOval((int)firstIsoPoint.x, (int)(firstIsoPoint.y-currentDiametrX/4), (int)currentDiametrX, (int)currentDiametrX/2);
}
}

View File

@ -24,11 +24,20 @@ public class HitboxCircle extends Hitbox {
diametrX = radiusHitbox/temp*4;
diametrY = radiusHitbox/temp*2;
cartesianCenterImagePoint = isometricToCartesian(owner.getImage().getWidth()/2,owner.getImage().getHeight(),cartesianCenterImagePoint);
Point cartesianCenterRefPoint = new Point(referencePoint.x+cartesianCenterImagePoint.x, referencePoint.y+cartesianCenterImagePoint.y);
Point cartesianCenterRefPoint = new Point(cartesianCenterImagePoint.x-referencePoint.x, cartesianCenterImagePoint.y-referencePoint.y);
Point isoCenterRefPoint = new Point(0,0);
isoCenterRefPoint = cartesianToIsometric(cartesianCenterRefPoint.x,cartesianCenterRefPoint.y,isoCenterRefPoint);
currentRefPoint.x = isoCenterRefPoint.x-diametrY;
currentRefPoint.y = isoCenterRefPoint.y-diametrY/2;
System.out.println("----------------------------");
System.out.println("Entity = "+owner.getName());
System.out.println("refCartEntPoint X ="+cartesianCenterRefPoint.x+"||cartesianCenterRefPoint Y ="+cartesianCenterRefPoint.y);
System.out.println("CartCenterImage X ="+cartesianCenterImagePoint.x+"||CartCenterImage Y ="+cartesianCenterImagePoint.y);
System.out.println("refIsoEntPoint X ="+currentRefPoint.x+"||refIsoEntPoint Y ="+currentRefPoint.y);
System.out.println("diametrY "+ diametrY);
System.out.println(" ");
}
@Override
public String listPointsToString() {
@ -36,8 +45,15 @@ public class HitboxCircle extends Hitbox {
cartesianCenterImagePoint = isometricToCartesian(owner.getImage().getWidth()/2,owner.getImage().getHeight(),cartesianCenterImagePoint);
cartesianCenterRefPoint = isometricToCartesian(currentRefPoint.x+diametrY,currentRefPoint.y+(diametrY/2),cartesianCenterRefPoint);
System.out.println("");
referencePoint.x = (cartesianCenterRefPoint.x - cartesianCenterImagePoint.x) * (-1);
referencePoint.y = (cartesianCenterRefPoint.y - cartesianCenterImagePoint.y) * (-1);
referencePoint.x = cartesianCenterImagePoint.x-cartesianCenterRefPoint.x;
referencePoint.y = cartesianCenterImagePoint.y-cartesianCenterRefPoint.y;
System.out.println("----------------------------");
System.out.println("Entity = "+owner.getName());
System.out.println("refCartEntPoint X ="+cartesianCenterRefPoint.x+"||cartesianCenterRefPoint Y ="+cartesianCenterRefPoint.y);
System.out.println("CartCenterImage X ="+cartesianCenterImagePoint.x+"||CartCenterImage Y ="+cartesianCenterImagePoint.y);
System.out.println("refIsoEntPoint X ="+currentRefPoint.x+"||refIsoEntPoint Y ="+currentRefPoint.y);
System.out.println("diametrY "+ diametrY);
System.out.println(" ");
return "Circle "+(int)referencePoint.x+" "+(int)referencePoint.y+" "+(int)radiusHitbox;
}