mirror of
https://github.com/yawaflua/Informatis.git
synced 2025-12-10 12:09:27 +02:00
58 lines
2.6 KiB
Java
58 lines
2.6 KiB
Java
package informatis.draws;
|
|
|
|
import arc.graphics.g2d.*;
|
|
import mindustry.game.*;
|
|
import mindustry.gen.*;
|
|
import mindustry.graphics.*;
|
|
import mindustry.world.blocks.defense.turrets.*;
|
|
|
|
import static arc.Core.settings;
|
|
import static informatis.SUtils.isInCamera;
|
|
import static mindustry.Vars.player;
|
|
|
|
public class BlockRangeDraw extends OverDraw {
|
|
public BlockRangeDraw() {
|
|
super("blockRange", OverDrawCategory.Range);
|
|
}
|
|
|
|
@Override
|
|
public void onBuilding(Building build) {
|
|
Unit playerUnit = player.unit();
|
|
|
|
boolean includeInvalid = settings.getBool("invalidRange", true),
|
|
includeAir = settings.getBool("airRange", true), isAir = playerUnit == null || playerUnit.isFlying(),
|
|
includeGround = settings.getBool("groundRange", true), isGround = playerUnit == null || !playerUnit.isFlying(),
|
|
includeAlice = settings.getBool("aliceRange", true),
|
|
shader = settings.getBool("RangeShader", true);
|
|
|
|
if(!((includeAlice || player.team() != build.team)
|
|
&& build instanceof BaseTurret.BaseTurretBuild turret && isInCamera(build.x, build.y, turret.range() * 2))) return;
|
|
|
|
boolean valid = false;
|
|
if (build instanceof Turret.TurretBuild turretBuild) {
|
|
Turret block = (Turret) turretBuild.block;
|
|
if ((build.team == player.team()
|
|
|| (block.targetAir && isAir && includeAir)
|
|
|| (block.targetGround && isGround && includeGround))
|
|
&& turretBuild.hasAmmo() && turretBuild.canConsume()) valid = true;
|
|
} else if (build instanceof TractorBeamTurret.TractorBeamBuild tractorBeamBuild) {
|
|
TractorBeamTurret block = (TractorBeamTurret) tractorBeamBuild.block;
|
|
if ((build.team == player.team()
|
|
|| (block.targetAir && isAir && includeAir)
|
|
|| (block.targetGround && isGround && includeGround))
|
|
&& tractorBeamBuild.canConsume()) valid = true;
|
|
}
|
|
|
|
if(!includeInvalid && !valid) return;
|
|
|
|
//non-base teams are considered as crux
|
|
int index = valid ? build.team.id > 5 ? 2 : build.team.id : 0;
|
|
float range = turret.range();
|
|
Draw.color(Team.baseTeams[index].color);
|
|
if (shader) {
|
|
Draw.z(166+(Team.baseTeams.length-index)*3);
|
|
Fill.poly(build.x, build.y, Lines.circleVertices(range), range);
|
|
} else Drawf.dashCircle(build.x, build.y, range, Team.baseTeams[index].color);
|
|
}
|
|
}
|