element display

This commit is contained in:
sharlottes
2022-04-12 19:53:58 +09:00
parent 149cdba83a
commit d04b8aae88
6 changed files with 98 additions and 5 deletions

View File

@@ -84,6 +84,10 @@ setting.distanceLine.name = Display Distance Line From Selected Target
setting.distanceLine.description = Displays dotted lines and numbers to indicate how far away the target is.
setting.spawnerarrow.name = Indicate Wave Spawn-Point
setting.spawnerarrow.description = Displays arrow pointing to wave spawn-points.
setting.elementdebug.name = Element Debug
setting.elementdebug.description = Show all Element outline
setting.hiddenElem.name = Display hidden element
setting.hiddenElem.description = display hidden element outline too.
setting.autoShooting.name = Enable Auto Shooting
setting.autoShooting.description = no don't do hack

View File

@@ -79,8 +79,12 @@ setting.deadTarget.name = 고정 목표물이 죽더라도 계속 고정하기
setting.deadTarget.description = 고정 목표물이 죽어도 그 좌표와 대상 정보를 계속 표시합니다.
setting.distanceLine.name = 목표물과의 거리선 표시
setting.distanceLine.description = 목표물과 어느정도나 멀어졌는지 점선과 숫자로 표시합니다.
setting.spawnerarrow.name = 적 단계 생성지점을 가르키는 화살표를 표시합니다.
setting.spawnerarrow.description =
setting.spawnerarrow.name = 스폰포인트 화살표
setting.spawnerarrow.description = 적 단계 생성지점을 가르키는 화살표를 표시합니다.
setting.elementdebug.name = UI 디버깅
setting.elementdebug.description = 모든 UI 요소의 외곽선을 표시합니다.
setting.hiddenElem.name = 숨겨진 요소 표시
setting.hiddenElem.description = 숨겨진 요소의 외곽선도 표시합니다.
setting.autoShooting.name = 자동 사격 활성화
setting.autoShooting.description =

View File

@@ -1,32 +1,53 @@
package UnitInfo.core;
import UnitInfo.shaders.*;
import UnitInfo.ui.ElementDisplay;
import UnitInfo.ui.HUDFragment;
import UnitInfo.ui.MindowsTex;
import UnitInfo.ui.windows.CoreDisplay;
import UnitInfo.ui.windows.WindowTable;
import UnitInfo.ui.windows.WindowTables;
import arc.*;
import arc.graphics.g2d.Draw;
import arc.graphics.g2d.Lines;
import arc.scene.Element;
import arc.scene.Group;
import arc.scene.event.Touchable;
import arc.scene.ui.layout.WidgetGroup;
import arc.struct.Seq;
import arc.struct.SnapshotSeq;
import arc.util.Tmp;
import mindustry.*;
import mindustry.editor.MapEditorDialog;
import mindustry.game.EventType.*;
import mindustry.graphics.Layer;
import mindustry.logic.LogicDialog;
import mindustry.mod.*;
import mindustry.ui.dialogs.*;
import mindustry.ui.fragments.*;
import static UnitInfo.SVars.*;
import static UnitInfo.ui.windows.UnitDisplay.getTarget;
import static arc.Core.*;
import static mindustry.Vars.ui;
public class Main extends Mod {
@Override
public void init(){
turretRange = new RangeShader();
lineShader = new LineShader();
Core.app.post(() -> {
Mods.ModMeta meta = Vars.mods.locateMod("unitinfo").meta;
meta.displayName = "[#B5FFD9]Unit Information[]";
meta.author = "[#B5FFD9]Sharlotte[lightgray]#0018[][]";
meta.description = bundle.get("shar-description");
scene.add(new ElementDisplay());
Seq.with(
ui.picker, ui.editor, ui.controls, ui.restart, ui.join, ui.discord,
ui.load, ui.custom, ui.language, ui.database, ui.settings, ui.host,
ui.paused, ui.about, ui.bans, ui.admins, ui.traces, ui.maps, ui.content,
ui.planet, ui.research, ui.mods, ui.schematics, ui.logic
).forEach(dialog-> dialog.add(new ElementDisplay(dialog)));
});
Events.run(Trigger.class, () -> {

View File

@@ -8,6 +8,8 @@ import arc.graphics.g2d.*;
import arc.graphics.gl.*;
import arc.math.*;
import arc.math.geom.*;
import arc.scene.Element;
import arc.scene.Group;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
@@ -54,7 +56,6 @@ public class OverDrawer {
public static void setEvent(){
Events.run(EventType.Trigger.draw, () -> {
effectBuffer.resize(graphics.getWidth(), graphics.getHeight());
Draw.drawRange(158, 1f, () -> effectBuffer.begin(Color.clear), () -> {
effectBuffer.end();

View File

@@ -143,6 +143,8 @@ public class SettingS {
addGraphicCheckSetting("deadTarget", false, drawSeq);
addGraphicCheckSetting("distanceLine", false, drawSeq);
addGraphicCheckSetting("spawnerarrow", false, drawSeq);
addGraphicCheckSetting("elementdebug", false, drawSeq);
addGraphicCheckSetting("hiddenElem", false, drawSeq);
Seq<SharSetting> etcSeq = new Seq<>();
addGraphicCheckSetting("autoShooting", false, etcSeq);

View File

@@ -0,0 +1,61 @@
package UnitInfo.ui;
import arc.graphics.g2d.Draw;
import arc.graphics.g2d.Lines;
import arc.scene.Element;
import arc.scene.Group;
import arc.scene.event.Touchable;
import arc.struct.SnapshotSeq;
import arc.util.Tmp;
import mindustry.graphics.Layer;
import mindustry.graphics.Pal;
import static arc.Core.scene;
import static arc.Core.settings;
public class ElementDisplay extends Element {
Group root;
public ElementDisplay() {
this(scene.root);
}
public ElementDisplay(Group root) {
this.root = root;
fillParent = true;
touchable = Touchable.disabled;
}
@Override
public void draw() {
super.draw();
if(!settings.getBool("elementdebug")) return;
Draw.z(Layer.max);
Lines.stroke(1);
addRect(root.getChildren());
}
void addRect(SnapshotSeq<Element> elements) {
elements.forEach(elem-> {
elem.updateVisibility();
if(elem.visible || settings.getBool("hiddenElem")) {
elem.localToStageCoordinates(Tmp.v1.set(0, 0));
if(elem.hasMouse()) {
Draw.color(Pal.accent);
Lines.stroke(3);
}
if(elem.hasScroll()) {
Draw.color(Pal.lancerLaser);
Lines.stroke(3);
}
if(elem.hasKeyboard()) {
Draw.color(Pal.sap);
Lines.stroke(5);
}
Lines.rect(Tmp.v1.x, Tmp.v1.y, elem.getWidth(), elem.getHeight());
Draw.color();
Lines.stroke(1);
if(elem instanceof Group group) addRect(group.getChildren());
}
});
}
}