From 7704ce537aad306c0841793d8062b312375c82c8 Mon Sep 17 00:00:00 2001 From: sharlotte Date: Sun, 15 Aug 2021 22:31:49 +0900 Subject: [PATCH] setting, improve smth.. --- assets/bundles/bundle.properties | 4 ++- assets/bundles/bundle_ko.properties | 4 ++- src/UnitInfo/core/Main.java | 56 +++++++++++++++++------------ src/UnitInfo/core/SettingS.java | 1 + 4 files changed, 41 insertions(+), 24 deletions(-) diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index f2dd8bc..3b32d11 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -9,7 +9,6 @@ shar-stat.powerUsage = Power: {0} / {1} shar-stat.ammos = Ammo: {0} / {1} shar-stat.commandUnits = Commands: {0} / {1} shar-stat.reload = Reload: {0}% -shar-stat.charge = Charge: {0}% shar-stat.itemAmmo = Ammo: {0} / {1} shar-stat.liquidAmmo = Liquid: {0} / {1} shar-stat.power = Power: {0} / {1} @@ -21,6 +20,9 @@ shar-stat.waveStatus = [lightgray]Status:[] shar-stat.waveItem = [lightgray]Item:[] #Settings +setting.spathfinder.name = Endable Pathfinder overdrawing +setting.spathfinder.description = shift + q: on/off\n\nshift + 1: Dispslay ground unit path\n\nshift + 2: Dispslay leg unit path\n\nshift + 3: Dispslay naval unit path + setting.wavesetting.name = Wave UI Setting setting.opacitysetting.name = Opacity Setting diff --git a/assets/bundles/bundle_ko.properties b/assets/bundles/bundle_ko.properties index 389b0f5..b4ab0ac 100644 --- a/assets/bundles/bundle_ko.properties +++ b/assets/bundles/bundle_ko.properties @@ -9,7 +9,6 @@ shar-stat.powerUsage = 전력: {0} / {1} shar-stat.ammos = 탄약: {0} / {1} shar-stat.commandUnits = 지휘 유닛: {0} / {1} shar-stat.reload = 재장전: {0}% -shar-stat.charge = 충전: {0}% shar-stat.itemAmmo = 탄약 : {0} / {1} shar-stat.liquidAmmo = 액체: {0} / {1} shar-stat.power = 전력: {0} / {1} @@ -21,6 +20,9 @@ shar-stat.waveStatus = [lightgray]상태이상:[] shar-stat.waveItem = [lightgray]아이템:[] # Settings +setting.spathfinder.name = 길찾기 활성화 +setting.spathfinder.description = shift + q: on/off\n\nshift + 1: 지상유닛 경로 표시\n\nshift + 2: 다리유닛 경로 표시\n\nshift + 3: 해상유닛 경로 표시 + setting.wavesetting.name = 단계 UI 설정 setting.opacitysetting.name = 투명도 설정 diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index 221ce8e..133af5a 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -4,10 +4,9 @@ import UnitInfo.ui.*; import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; +import arc.input.KeyCode; import arc.math.*; import arc.scene.ui.layout.*; -import arc.struct.IntSeq; -import arc.struct.Seq; import arc.util.*; import mindustry.*; import mindustry.ai.Pathfinder; @@ -24,9 +23,6 @@ import mindustry.ui.*; import mindustry.world.*; 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.*; @@ -35,10 +31,11 @@ import static mindustry.Vars.*; public class Main extends Mod { int otherCores; + boolean groundValid = false, legValid = false, navalValid = false; - public Tile getNextTile(Tile tile){ + public Tile getNextTile(Tile tile, int finder){ Team team = state.rules.waveTeam; - Pathfinder.Flowfield field = pathfinder.getField(team, Pathfinder.costGround, Pathfinder.fieldCore); + Pathfinder.Flowfield field = pathfinder.getField(team, finder, Pathfinder.fieldCore); Tile tile1 = pathfinder.getTargetTile(tile, field); pathTiles.add(tile1); if(otherCores != Groups.build.count(b -> b instanceof CoreBlock.CoreBuild && b.team != team) @@ -46,7 +43,7 @@ public class Main extends Mod { tile1.build instanceof CoreBlock.CoreBuild || !Groups.build.contains(b -> b instanceof CoreBlock.CoreBuild && b.team != team)) //so many ififififififif. return tile1; - return getNextTile(tile1); + return getNextTile(tile1, finder); } @Override @@ -76,20 +73,35 @@ public class Main extends Mod { }); 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((input.keyDown(KeyCode.shiftRight) || input.keyDown(KeyCode.shiftLeft))) { + if(input.keyTap(KeyCode.q)) settings.put("spathfinder", !settings.getBool("spathfinder")); + if(input.keyTap(KeyCode.num1)) groundValid = !groundValid; + if(input.keyTap(KeyCode.num2)) legValid = !legValid; + if(input.keyTap(KeyCode.num3)) navalValid = !navalValid; + } + + if(settings.getBool("spathfinder") || (input.keyDown(KeyCode.shiftRight) || input.keyDown(KeyCode.shiftLeft)) && input.keyTap(KeyCode.q)) { + spawner.getSpawns().each(t -> { + Team enemyTeam = state.rules.waveTeam; + for (int p = 0; p < 3; p++) { + if(p == 0 && !groundValid) continue; + if(p == 1 && !legValid) continue; + if(p == 2 && !navalValid) continue; + + otherCores = Groups.build.count(b -> b instanceof CoreBlock.CoreBuild && b.team != enemyTeam); + getNextTile(t, p); + 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(Vars.player != null && Vars.player.team() == build.team) return; diff --git a/src/UnitInfo/core/SettingS.java b/src/UnitInfo/core/SettingS.java index e508d8f..685f9fe 100644 --- a/src/UnitInfo/core/SettingS.java +++ b/src/UnitInfo/core/SettingS.java @@ -289,6 +289,7 @@ public class SettingS { addGraphicDialogSetting("opacitysetting", opacitySeq, opacityTable); */ + addGraphicCheckSetting("spathfinder", true); addGraphicSlideSetting("infoUiScale", 100, 25, 300, 25, s -> s + "%"); addGraphicSlideSetting("coreItemCheckRate", 60, 6, 180, 6, s -> Strings.fixed(s/60f,1) + "sec"); addGraphicCheckSetting("pastwave", false);