From 27c8efc672fa91d6e885606466a17e5a8f9af5c8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 11 Feb 2021 10:12:07 -0500 Subject: [PATCH] Better targeting range calculation --- core/assets/bundles/bundle.properties | 1 + core/assets/maps/mudFlats.msav | Bin 28161 -> 28248 bytes core/src/mindustry/ai/BlockIndexer.java | 9 ++++----- core/src/mindustry/content/Blocks.java | 1 + core/src/mindustry/entities/Units.java | 7 ++++--- .../mindustry/entities/comp/BuildingComp.java | 7 ++++++- .../mindustry/entities/comp/HitboxComp.java | 7 ++++++- core/src/mindustry/entities/comp/Sized.java | 5 +++++ gradle.properties | 2 +- ios/robovm.xml | 1 - 10 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 core/src/mindustry/entities/comp/Sized.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index bcb64901f8..9b3a8136b5 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1563,6 +1563,7 @@ lenum.len = Length of vector. lenum.sin = Sine, in degrees. lenum.cos = Cosine, in degrees. lenum.tan = Tangent, in degrees. +#not a typo, look up 'range notation' lenum.rand = Random number in range [0, value). lenum.log = Natural logarithm (ln). lenum.log10 = Base 10 logarithm. diff --git a/core/assets/maps/mudFlats.msav b/core/assets/maps/mudFlats.msav index 1ba2e25cebe9b0156113552fa4253da48cf15071..adca422b83795cdeb581b64ca6a8ec805ea7ab72 100644 GIT binary patch delta 28191 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

pkOm##5d0~mv4K7}u}N~1a(Ps1+~C3y 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 Wpc2GW!!EXs|Jcy)=I0-y`O0_;%ri0o delta 27958 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 diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 683d04cc78..ca945b67a9 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -269,7 +269,6 @@ public class BlockIndexer{ public Building findTile(Team team, float x, float y, float range, Boolf pred, boolean usePriority){ Building closest = null; float dst = 0; - float range2 = range * range; for(int rx = Math.max((int)((x - range) / tilesize / quadrantSize), 0); rx <= (int)((x + range) / tilesize / quadrantSize) && rx < quadWidth(); rx++){ for(int ry = Math.max((int)((y - range) / tilesize / quadrantSize), 0); ry <= (int)((y + range) / tilesize / quadrantSize) && ry < quadHeight(); ry++){ @@ -282,13 +281,13 @@ public class BlockIndexer{ if(e == null || e.team != team || !pred.get(e) || !e.block.targetable || e.team == Team.derelict) continue; - float ndst = e.dst2(x, y); - if(ndst < range2 && (closest == null || + float bdst = e.dst(x, y) - e.hitSize() / 2f; + if(bdst < range && (closest == null || //this one is closer, and it is at least of equal priority - (ndst < dst && (!usePriority || closest.block.priority.ordinal() <= e.block.priority.ordinal())) || + (bdst < dst && (!usePriority || closest.block.priority.ordinal() <= e.block.priority.ordinal())) || //priority is used, and new block has higher priority regardless of range (usePriority && closest.block.priority.ordinal() < e.block.priority.ordinal()))){ - dst = ndst; + dst = bdst; closest = e; } } diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index e73ffc89db..e9f8abf2a4 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2047,6 +2047,7 @@ public class Blocks implements ContentList{ hasPower = true; consumes.power(10f); buildCostMultiplier = 0.5f; + health = size * size * 80; }}; //endregion campaign diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index cd602327a6..3d73faebd6 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -6,6 +6,7 @@ import arc.math.geom.*; import arc.struct.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.entities.comp.*; import mindustry.game.*; import mindustry.game.Teams.*; import mindustry.gen.*; @@ -93,7 +94,7 @@ public class Units{ * @return whether the target is invalid */ public static boolean invalidateTarget(Posc target, Team team, float x, float y, float range){ - return target == null || (range != Float.MAX_VALUE && !target.within(x, y, range)) || (target instanceof Teamc && ((Teamc)target).team() == team) || (target instanceof Healthc && !((Healthc)target).isValid()); + return target == null || (range != Float.MAX_VALUE && !target.within(x, y, range + (target instanceof Sized hb ? hb.hitSize()/2f : 0f))) || (target instanceof Teamc t && t.team() == team) || (target instanceof Healthc h && !h.isValid()); } /** See {@link #invalidateTarget(Posc, Team, float, float, float)} */ @@ -217,7 +218,7 @@ public class Units{ cdist = 0f; nearbyEnemies(team, x - range, y - range, range*2f, range*2f, e -> { - if(e.dead() || !predicate.get(e) || !e.within(x, y, range)) return; + if(e.dead() || !predicate.get(e) || !e.within(x, y, range + e.hitSize/2f)) return; float cost = sort.cost(e, x, y); if(result == null || cost < cdist){ @@ -292,7 +293,7 @@ public class Units{ /** Iterates over all units in a circle around this position. */ public static void nearby(Team team, float x, float y, float radius, Cons cons){ nearby(team, x - radius, y - radius, radius*2f, radius*2f, unit -> { - if(unit.within(x, y, radius)){ + if(unit.within(x, y, radius + unit.hitSize/2f)){ cons.get(unit); } }); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 747defe555..b368d060e0 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -43,7 +43,7 @@ import static mindustry.Vars.*; @EntityDef(value = {Buildingc.class}, isFinal = false, genio = false, serialize = false) @Component(base = true) -abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, QuadTreeObject, Displayable, Senseable, Controllable{ +abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, QuadTreeObject, Displayable, Senseable, Controllable, Sized{ //region vars and initialization static final float timeToSleep = 60f * 1, timeToUncontrol = 60f * 6; static final ObjectSet tmpTiles = new ObjectSet<>(); @@ -1277,6 +1277,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return tile.build == self() && !dead(); } + @Override + public float hitSize(){ + return tile.block().size * tilesize; + } + @Replace @Override public void kill(){ diff --git a/core/src/mindustry/entities/comp/HitboxComp.java b/core/src/mindustry/entities/comp/HitboxComp.java index f44270ebed..82576686fe 100644 --- a/core/src/mindustry/entities/comp/HitboxComp.java +++ b/core/src/mindustry/entities/comp/HitboxComp.java @@ -8,7 +8,7 @@ import mindustry.annotations.Annotations.*; import mindustry.gen.*; @Component -abstract class HitboxComp implements Posc, QuadTreeObject{ +abstract class HitboxComp implements Posc, Sized, QuadTreeObject{ @Import float x, y; transient float lastX, lastY, deltaX, deltaY, hitSize; @@ -28,6 +28,11 @@ abstract class HitboxComp implements Posc, QuadTreeObject{ updateLastPosition(); } + @Override + public float hitSize(){ + return hitSize; + } + void getCollisions(Cons consumer){ } diff --git a/core/src/mindustry/entities/comp/Sized.java b/core/src/mindustry/entities/comp/Sized.java new file mode 100644 index 0000000000..5fd73efa42 --- /dev/null +++ b/core/src/mindustry/entities/comp/Sized.java @@ -0,0 +1,5 @@ +package mindustry.entities.comp; + +public interface Sized{ + float hitSize(); +} diff --git a/gradle.properties b/gradle.properties index fbe236418e..88888d07c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=8b6d59e004463585b333c8cda9ea91dd66f3bcee +archash=5b04a94d53e279e3af3a2654978fff5ab16e7cb8 diff --git a/ios/robovm.xml b/ios/robovm.xml index e792b258a8..c82b246fad 100644 --- a/ios/robovm.xml +++ b/ios/robovm.xml @@ -2,7 +2,6 @@ ${app.executable} ${app.mainclass} ios - thumbv7 ios Info.plist.xml