mirror of
https://github.com/yawaflua/Informatis.git
synced 2025-12-10 12:09:27 +02:00
p a t h f i n d e r = p.a.i.n
This commit is contained in:
@@ -4,6 +4,7 @@ import UnitInfo.core.*;
|
|||||||
import arc.files.*;
|
import arc.files.*;
|
||||||
import arc.graphics.g2d.TextureRegion;
|
import arc.graphics.g2d.TextureRegion;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import mindustry.world.Tile;
|
||||||
|
|
||||||
import static arc.Core.atlas;
|
import static arc.Core.atlas;
|
||||||
import static arc.Core.settings;
|
import static arc.Core.settings;
|
||||||
@@ -18,4 +19,7 @@ public class SVars {
|
|||||||
public static TextureRegion clear = atlas.find("clear");
|
public static TextureRegion clear = atlas.find("clear");
|
||||||
public static TextureRegion error = atlas.find("error");
|
public static TextureRegion error = atlas.find("error");
|
||||||
public static float modUiScale = settings.getInt("infoUiScale") / 100f == 0 ? 1 : settings.getInt("infoUiScale") / 100f;
|
public static float modUiScale = settings.getInt("infoUiScale") / 100f == 0 ? 1 : settings.getInt("infoUiScale") / 100f;
|
||||||
|
|
||||||
|
|
||||||
|
public static Seq<Tile> pathTiles = new Seq<>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -372,6 +372,13 @@ public class HudUi {
|
|||||||
ttt.right().bottom();
|
ttt.right().bottom();
|
||||||
ttt.add(new Label(() -> Groups.unit.count(u -> u.type == type && u.team == state.rules.waveTeam && u.isBoss()) + ""));
|
ttt.add(new Label(() -> Groups.unit.count(u -> u.type == type && u.team == state.rules.waveTeam && u.isBoss()) + ""));
|
||||||
}));
|
}));
|
||||||
|
add(new Table(ttt -> {
|
||||||
|
ttt.top().right();
|
||||||
|
Image image = new Image(Icon.warning.getRegion()).setScaling(Scaling.fit);
|
||||||
|
image.update(() -> image.setColor(Tmp.c2.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))));
|
||||||
|
ttt.add(image).size(Scl.scl(modUiScale < 1 ? modUiScale : 1) * 12f);
|
||||||
|
ttt.pack();
|
||||||
|
}));
|
||||||
}}).pad(6);
|
}}).pad(6);
|
||||||
if(++i[0] % 6 == 0) tt.row();
|
if(++i[0] % 6 == 0) tt.row();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,8 +6,11 @@ import arc.graphics.*;
|
|||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
|
import arc.struct.IntSeq;
|
||||||
|
import arc.struct.Seq;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
|
import mindustry.ai.Pathfinder;
|
||||||
import mindustry.ai.types.BuilderAI;
|
import mindustry.ai.types.BuilderAI;
|
||||||
import mindustry.ai.types.MinerAI;
|
import mindustry.ai.types.MinerAI;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
@@ -20,12 +23,29 @@ import mindustry.mod.*;
|
|||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.defense.turrets.*;
|
import mindustry.world.blocks.defense.turrets.*;
|
||||||
|
import mindustry.world.blocks.storage.CoreBlock;
|
||||||
|
import mindustry.world.meta.BlockFlag;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static UnitInfo.SVars.*;
|
import static UnitInfo.SVars.*;
|
||||||
import static arc.Core.*;
|
import static arc.Core.*;
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class Main extends Mod {
|
public class Main extends Mod {
|
||||||
|
int otherCores;
|
||||||
|
|
||||||
|
public Tile getNextTile(Tile tile){
|
||||||
|
Team team = state.rules.waveTeam;
|
||||||
|
Pathfinder.Flowfield field = pathfinder.getField(team, Pathfinder.costGround, Pathfinder.fieldCore);
|
||||||
|
Tile tile1 = pathfinder.getTargetTile(tile, field);
|
||||||
|
pathTiles.add(tile1);
|
||||||
|
if(otherCores != Groups.build.count(b -> b instanceof CoreBlock.CoreBuild && b.team != team) || tile1 == tile || tile1 == null || tile1.build instanceof CoreBlock.CoreBuild || !Groups.build.contains(b -> b.team != team)) //so many ififififififif.
|
||||||
|
return tile1;
|
||||||
|
return getNextTile(tile1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
Events.on(ClientLoadEvent.class, e -> {
|
Events.on(ClientLoadEvent.class, e -> {
|
||||||
@@ -53,6 +73,21 @@ public class Main extends Mod {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.run(Trigger.draw, () -> {
|
Events.run(Trigger.draw, () -> {
|
||||||
|
spawner.getSpawns().each(t -> {
|
||||||
|
Team enemyTeam = state.rules.waveTeam;
|
||||||
|
otherCores = Groups.build.count(b -> b instanceof CoreBlock.CoreBuild && b.team != enemyTeam);
|
||||||
|
getNextTile(t);
|
||||||
|
pathTiles.filter(Objects::nonNull);
|
||||||
|
for(int i = 1; i < pathTiles.size; i++){
|
||||||
|
if(i + 1 >= pathTiles.size) continue; //prevent IndexOutException
|
||||||
|
Tile tile1 = pathTiles.get(i);
|
||||||
|
Tile tile2 = pathTiles.get(i + 1);
|
||||||
|
Lines.stroke(1, enemyTeam.color);
|
||||||
|
Lines.line(tile1.worldx(), tile1.worldy(), tile2.worldx(), tile2.worldy());
|
||||||
|
}
|
||||||
|
pathTiles.clear();
|
||||||
|
});
|
||||||
|
|
||||||
if(settings.getBool("blockstatus")) Groups.build.each(build -> {
|
if(settings.getBool("blockstatus")) Groups.build.each(build -> {
|
||||||
if(Vars.player != null && Vars.player.team() == build.team) return;
|
if(Vars.player != null && Vars.player.team() == build.team) return;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user