From 3d3ca3cfe1280545a5ad7dc254f94716373dfc8a Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Thu, 22 Jul 2021 16:10:16 +0900 Subject: [PATCH 1/6] clean up --- src/UnitInfo/core/Main.java | 39 +++------------ src/UnitInfo/ui/SBar.java | 95 +++++++++++++++++++------------------ 2 files changed, 54 insertions(+), 80 deletions(-) diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index 0d46d9b..3d6c60f 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -96,39 +96,12 @@ public class Main extends Mod { if(!mobile && !Vars.state.isPaused() && settings.getBool("gaycursor")) Fx.mine.at(Core.input.mouseWorldX(), Core.input.mouseWorldY(), Tmp.c2.set(Color.red).shiftHue(Time.time * 1.5f)); - Groups.unit.each(unit -> { - Draw.color(); - Tmp.c1.set(Color.white).lerp(Pal.heal, Mathf.clamp(unit.healTime - unit.hitTime)); - Draw.mixcol(Tmp.c1, Math.max(unit.hitTime, Mathf.clamp(unit.healTime))); - if(unit.drownTime > 0 && unit.floorOn().isDeep()) - Draw.mixcol(unit.floorOn().mapColor, unit.drownTime * 0.8f); - - //draw back items - if(unit.item() != null && unit.itemTime > 0.01f){ - float size = (itemSize + Mathf.absin(Time.time, 5f, 1f)) * unit.itemTime; - - Draw.mixcol(Pal.accent, Mathf.absin(Time.time, 5f, 0.1f)); - Draw.rect(unit.item().fullIcon, - unit.x + Angles.trnsx(unit.rotation + 180f, unit.type.itemOffsetY), - unit.y + Angles.trnsy(unit.rotation + 180f, unit.type.itemOffsetY), - size, size, unit.rotation); - Draw.mixcol(); - - Lines.stroke(1f, Pal.accent); - Lines.circle( - unit.x + Angles.trnsx(unit.rotation + 180f, unit.type.itemOffsetY), - unit.y + Angles.trnsy(unit.rotation + 180f, unit.type.itemOffsetY), - (3f + Mathf.absin(Time.time, 5f, 1f)) * unit.itemTime); - - if(!renderer.pixelator.enabled()){ - Fonts.outline.draw(unit.stack.amount + "", - unit.x + Angles.trnsx(unit.rotation + 180f, unit.type.itemOffsetY), - unit.y + Angles.trnsy(unit.rotation + 180f, unit.type.itemOffsetY) - 3, - Pal.accent, 0.25f * unit.itemTime / Scl.scl(1f), false, Align.center); - } - - Draw.reset(); - } + if(!renderer.pixelator.enabled()) Groups.unit.each(unit -> unit.item() != null && unit.itemTime > 0.01f, unit -> { + Fonts.outline.draw(unit.stack.amount + "", + unit.x + Angles.trnsx(unit.rotation + 180f, unit.type.itemOffsetY), + unit.y + Angles.trnsy(unit.rotation + 180f, unit.type.itemOffsetY) - 3, + Pal.accent, 0.25f * unit.itemTime / Scl.scl(1f), false, Align.center); + Draw.reset(); }); }); } diff --git a/src/UnitInfo/ui/SBar.java b/src/UnitInfo/ui/SBar.java index 6aaf4fd..7c01344 100644 --- a/src/UnitInfo/ui/SBar.java +++ b/src/UnitInfo/ui/SBar.java @@ -20,6 +20,9 @@ public class SBar extends Element{ private String name = ""; private float value, lastValue, blink; private final Color blinkColor = new Color(); + NinePatchDrawable bar; + NinePatchDrawable top; + float spriteWidth; public SBar(Prov name, Prov color, Floatp fraction){ this.fraction = fraction; @@ -37,55 +40,15 @@ public class SBar extends Element{ this.name = ""; } }); - } - - public Drawable drawable(String name, int left, int right, int top, int bottom){ - Drawable out; - - TextureAtlas.AtlasRegion region = Core.atlas.find(name); - - int[] splits = {left, right, top, bottom}; - NinePatch patch = new NinePatch(region, splits[0], splits[1], splits[2], splits[3]); - int[] pads = region.pads; - if(pads != null) patch.setPadding(pads[0], pads[1], pads[2], pads[3]); - out = new ScaledNinePatchDrawable(patch, 1f); - - return out; - } - - @Override - public void draw(){ - if(fraction == null) return; boolean ssim = Core.settings.getBool("ssim"); boolean shar = Core.settings.getBool("shar"); boolean shar1 = Core.settings.getBool("shar1"); boolean shar2 = Core.settings.getBool("shar2"); boolean shar3 = Core.settings.getBool("shar3"); - float computed; - try{ - computed = Mathf.clamp(fraction.get()); - }catch(Exception e){ //getting the fraction may involve referring to invalid data - computed = 0f; - } - if(lastValue > computed){ - blink = 1f; - lastValue = computed; - } - - if(Float.isNaN(lastValue)) lastValue = 0; - if(Float.isInfinite(lastValue)) lastValue = 1f; - if(Float.isNaN(value)) value = 0; - if(Float.isInfinite(value)) value = 1f; - if(Float.isNaN(computed)) computed = 0; - if(Float.isInfinite(computed)) computed = 1f; - - blink = Mathf.lerpDelta(blink, 0f, 0.2f); - value = Mathf.lerpDelta(value, computed, 0.05f); - - NinePatchDrawable bar = (NinePatchDrawable) drawable("unitinfo-barS", 10, 10, 9, 9); - NinePatchDrawable top = (NinePatchDrawable) drawable("unitinfo-barS-top", 10, 10, 9, 9); - float spriteWidth = Core.atlas.find("unitinfo-barS").width; + bar = (NinePatchDrawable) drawable("unitinfo-barS", 10, 10, 9, 9); + top = (NinePatchDrawable) drawable("unitinfo-barS-top", 10, 10, 9, 9); + spriteWidth = Core.atlas.find("unitinfo-barS").width; if(ssim){ bar = (NinePatchDrawable) drawable("unitinfo-barSS", 14, 14, 19, 19); top = (NinePatchDrawable) drawable("unitinfo-barSS-top", 14, 14, 19, 19); @@ -112,13 +75,53 @@ public class SBar extends Element{ spriteWidth = Core.atlas.find("unitinfo-barSSSSSS").width; } + } + + public Drawable drawable(String name, int left, int right, int top, int bottom){ + Drawable out; + + TextureAtlas.AtlasRegion region = Core.atlas.find(name); + + int[] splits = {left, right, top, bottom}; + NinePatch patch = new NinePatch(region, splits[0], splits[1], splits[2], splits[3]); + int[] pads = region.pads; + if(pads != null) patch.setPadding(pads[0], pads[1], pads[2], pads[3]); + out = new ScaledNinePatchDrawable(patch, 1f); + + return out; + } + + @Override + public void draw(){ + if(fraction == null) return; + float computed; + try{ + computed = Mathf.clamp(fraction.get()); + }catch(Exception e){ //getting the fraction may involve referring to invalid data + computed = 0f; + } + + if(lastValue > computed){ + blink = 1f; + lastValue = computed; + } + + if(Float.isNaN(lastValue)) lastValue = 0; + if(Float.isInfinite(lastValue)) lastValue = 1f; + if(Float.isNaN(value)) value = 0; + if(Float.isInfinite(value)) value = 1f; + if(Float.isNaN(computed)) computed = 0; + if(Float.isInfinite(computed)) computed = 1f; + + blink = Mathf.lerpDelta(blink, 0f, 0.2f); + value = Mathf.lerpDelta(value, computed, 0.05f); Draw.colorl(0.1f); bar.draw(x, y, width, height); + + Draw.color(color.cpy().mul(Pal.lightishGray), blinkColor, blink); - float topWidth = width * value; - if(topWidth > spriteWidth){ top.draw(x, y, topWidth, height); }else{ @@ -130,7 +133,6 @@ public class SBar extends Element{ Draw.color(color, blinkColor, blink); float topWidthReal = width * (Math.min(value, computed)); - if(topWidthReal > spriteWidth){ top.draw(x, y, topWidthReal, height); }else{ @@ -141,7 +143,6 @@ public class SBar extends Element{ } Draw.color(); - Font font = Fonts.outline; GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new); font.getData().setScale(Scl.scl()); From 7856672eeaed82e43956741d160028cf81d0c8a3 Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Thu, 22 Jul 2021 16:44:22 +0900 Subject: [PATCH 2/6] near range --- assets/bundles/bundle.properties | 6 ++++-- assets/bundles/bundle_ko.properties | 6 ++++-- src/UnitInfo/core/Main.java | 14 +++++++++++++- src/UnitInfo/core/Setting.java | 3 ++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index cd4ed1f..549198a 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -39,8 +39,10 @@ setting.uiopacity.description = set opacityof ui background by slider. setting.scan.name = Enable block scanner setting.scan.description = enable scanner that shows nearly turret and wall hp. -setting.range.name = Display turret range -setting.range.description = enable scanner can show turret range too. +setting.rangeNearby.name = Display near range +setting.rangeNearby.description = display range circle when you approached enemy ranges. +setting.rangeRadius.name = Near range margin +setting.rangeRadius.description = set additional distances to show range. setting.rangemax.name = Block scanner range setting.rangemax.description = set scan radius of scanner\ntype number to tap pencil button. diff --git a/assets/bundles/bundle_ko.properties b/assets/bundles/bundle_ko.properties index 7502d71..c440236 100644 --- a/assets/bundles/bundle_ko.properties +++ b/assets/bundles/bundle_ko.properties @@ -33,8 +33,10 @@ setting.wavemax.description = 연필 아이콘을 눌러서 인게임 단계 탭 setting.scan.name = 블록 스캐너 활성화 setting.scan.description = 주변 포탑과 벽의 체력을 표시하는 스캐터를 활성화합니다. -setting.range.name = 포탑 사거리 표시 -setting.range.description = 스캐터가 포탑 사거리도 표시하게 만듭니다. +setting.rangeNearby.name = 주변 사거리 표시 +setting.rangeNearby.description = 적 사거리에 접근했을 경우 사거리를 표시합니다. +setting.rangeRadius.name = 사거리 접근 거리 +setting.rangeRadius.description = 사거리를 표시할 추가 거리를 설정합니다. setting.rangemax.name = 블록 스캐너 사거리 setting.rangemax.description = 연필 아이콘을 눌러서 스캐너 사거리를 설정합니다. diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index 3d6c60f..f08412e 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -9,8 +9,10 @@ import arc.graphics.g2d.Fill; import arc.graphics.g2d.Lines; import arc.math.Angles; import arc.math.Mathf; +import arc.math.geom.Position; import arc.scene.ui.layout.Scl; import arc.util.Align; +import arc.util.Log; import arc.util.Time; import arc.util.Tmp; import mindustry.Vars; @@ -18,8 +20,11 @@ import mindustry.content.Fx; import mindustry.game.EventType.*; import mindustry.game.Team; import mindustry.gen.Groups; +import mindustry.gen.Teamc; +import mindustry.graphics.Drawf; import mindustry.graphics.Layer; import mindustry.graphics.Pal; +import mindustry.logic.Ranged; import mindustry.mod.Mod; import mindustry.ui.Fonts; import mindustry.world.Block; @@ -90,9 +95,9 @@ public class Main extends Mod { Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 90 + Time.time % 360); Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 180 + Time.time % 360); Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 270 + Time.time % 360); - Draw.reset(); } + if(!mobile && !Vars.state.isPaused() && settings.getBool("gaycursor")) Fx.mine.at(Core.input.mouseWorldX(), Core.input.mouseWorldY(), Tmp.c2.set(Color.red).shiftHue(Time.time * 1.5f)); @@ -103,6 +108,13 @@ public class Main extends Mod { Pal.accent, 0.25f * unit.itemTime / Scl.scl(1f), false, Align.center); Draw.reset(); }); + + if(settings.getBool("rangeNearby")) Groups.all.each(entityc -> entityc instanceof Ranged && player != null && player.team() != ((Ranged) entityc).team(), entityc -> { + float range = ((Ranged) entityc).range(); + float margin = settings.getInt("rangeRadius") * tilesize; + if(Vars.player.dst((Position) entityc) <= range + margin) + Drawf.dashCircle(((Ranged) entityc).x(), ((Ranged) entityc).y(), range, ((Ranged) entityc).team().color); + }); }); } diff --git a/src/UnitInfo/core/Setting.java b/src/UnitInfo/core/Setting.java index fc75c32..6c12d94 100644 --- a/src/UnitInfo/core/Setting.java +++ b/src/UnitInfo/core/Setting.java @@ -274,7 +274,8 @@ public class Setting { Seq scanSeq = new Seq<>(); addGraphicCheckSetting("scan", false, scanSeq); - addGraphicCheckSetting("range", false, scanSeq); + addGraphicCheckSetting("rangeNearby", true, scanSeq); + addGraphicSlideSetting("rangeRadius", 5, 0, 20, 1, s -> s + "tiles", scanSeq); addGraphicTypeSetting("rangemax", 10, "@editrange","@invalid", 100, scanSeq); addGraphicDialogSetting("wavesetting", scanSeq, scanTable); From 4eec3508a4204be27a0dbffa1d27a06162571415 Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Thu, 22 Jul 2021 17:52:14 +0900 Subject: [PATCH 3/6] clean and up --- src/UnitInfo/core/HudUi.java | 33 +++++++++++++-------------------- src/UnitInfo/core/Main.java | 5 ++++- src/UnitInfo/core/Setting.java | 2 +- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/UnitInfo/core/HudUi.java b/src/UnitInfo/core/HudUi.java index f7ece07..1d5a241 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/UnitInfo/core/HudUi.java @@ -54,7 +54,7 @@ public class HudUi { //to update tables int waveamount; int coreamount; - int weaponamount; + Teamc target; BarInfo info = new BarInfo(); Seq strings = new Seq<>(new String[]{"","","","","",""}); @@ -379,7 +379,7 @@ public class HudUi { public void addWeapon(){ weapon = new Table(tx -> { tx.left().defaults().minSize(Scl.scl(12 * 8f)); - weaponamount = ((Unit) getTarget()).type.weapons.size; + target = getTarget(); tx.add(new Table(scene.getStyle(Button.ButtonStyle.class).up, tt -> { tt.left().top().defaults().width(Scl.scl(24/3f * 8f)).minHeight(Scl.scl(12/3f * 8f)); @@ -409,8 +409,10 @@ public class HudUi { if(getDrawable() instanceof TransformDrawable){ float rotation = getRotation(); if(scaleX != 1 || scaleY != 1 || rotation != 0){ - getDrawable().draw(x + imageX, y + imageY, originX - imageX, originY - imageY, - imageWidth, imageHeight, scaleX, scaleY, rotation); + getDrawable().draw(x + imageX, y + imageY, + originX - imageX, originY - imageY, + imageWidth, imageHeight, + scaleX, scaleY, rotation); return; } } @@ -465,7 +467,7 @@ public class HudUi { Stack stack = new Stack(){{ add(new Table(ttt -> ttt.add(new Image(){{ update(() -> { - TextureRegion region = Core.atlas.find("clear"); + TextureRegion region = atlas.find("clear"); if(getTarget() instanceof Unit && ((Unit) getTarget()).type() != null) region = ((Unit) getTarget()).type().uiIcon; else if(getTarget() instanceof Building && ((Building) getTarget()).block() != null) { if(getTarget() instanceof ConstructBlock.ConstructBuild) region = ((ConstructBlock.ConstructBuild) getTarget()).current.uiIcon; @@ -479,29 +481,19 @@ public class HudUi { add(new Table(temp -> { Image image = new Image(Icon.defenseSmall); temp.add(image).center(); - }){ - @Override - public void draw() { - if(getTarget() instanceof Building) return; - super.draw(); - } - }); + })); + add(new Table(temp -> { Label label = new Label(() -> (getTarget() instanceof Unit && ((Unit) getTarget()).type() != null ? (int)((Unit) getTarget()).type().armor+"" : "")); label.setColor(Pal.surge); label.setFontScale(0.5f); temp.add(label).center(); temp.pack(); - }){ - @Override - public void draw() { - if(getTarget() instanceof Building) return; - super.draw(); - } - }); + })); }}).padLeft(Scl.scl(2 * 8f)).padBottom(Scl.scl(2 * 8f)); })); }}; + stack.visibility = () -> !(getTarget() == null || getTarget() instanceof Building); Label label = new Label(() -> { String name = "";if (getTarget() instanceof Unit && ((Unit) getTarget()).type() != null) @@ -521,6 +513,7 @@ public class HudUi { ui.content.show(((Buildingc) getTarget()).block()); } }); + button.visibility = () -> getTarget() != null; tt.top(); tt.add(stack); @@ -559,7 +552,7 @@ public class HudUi { if (settings.getBool("weaponui") && getTarget() instanceof Unit && ((Unit) getTarget()).type != null - && weaponamount != ((Unit) getTarget()).type.weapons.size) { + && target != getTarget()) { table.removeChild(weapon); addWeapon(); table.row(); diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index f08412e..9b9063c 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -19,6 +19,7 @@ import mindustry.Vars; import mindustry.content.Fx; import mindustry.game.EventType.*; import mindustry.game.Team; +import mindustry.gen.Building; import mindustry.gen.Groups; import mindustry.gen.Teamc; import mindustry.graphics.Drawf; @@ -28,6 +29,7 @@ import mindustry.logic.Ranged; import mindustry.mod.Mod; import mindustry.ui.Fonts; import mindustry.world.Block; +import mindustry.world.blocks.defense.turrets.BaseTurret; import static arc.Core.*; import static mindustry.Vars.*; @@ -109,7 +111,8 @@ public class Main extends Mod { Draw.reset(); }); - if(settings.getBool("rangeNearby")) Groups.all.each(entityc -> entityc instanceof Ranged && player != null && player.team() != ((Ranged) entityc).team(), entityc -> { + if(settings.getBool("rangeNearby")) Groups.all.each(entityc -> entityc instanceof BaseTurret.BaseTurretBuild || + (!(entityc instanceof Building) && entityc instanceof Ranged && player != null && player.team() != ((Ranged) entityc).team()), entityc -> { float range = ((Ranged) entityc).range(); float margin = settings.getInt("rangeRadius") * tilesize; if(Vars.player.dst((Position) entityc) <= range + margin) diff --git a/src/UnitInfo/core/Setting.java b/src/UnitInfo/core/Setting.java index 6c12d94..e0e3bc7 100644 --- a/src/UnitInfo/core/Setting.java +++ b/src/UnitInfo/core/Setting.java @@ -274,7 +274,7 @@ public class Setting { Seq scanSeq = new Seq<>(); addGraphicCheckSetting("scan", false, scanSeq); - addGraphicCheckSetting("rangeNearby", true, scanSeq); + addGraphicCheckSetting("rangeNearby", false, scanSeq); addGraphicSlideSetting("rangeRadius", 5, 0, 20, 1, s -> s + "tiles", scanSeq); addGraphicTypeSetting("rangemax", 10, "@editrange","@invalid", 100, scanSeq); addGraphicDialogSetting("wavesetting", scanSeq, scanTable); From c88d04457247dfea901b0b9a6a1cad51992b7f53 Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Thu, 22 Jul 2021 18:54:22 +0900 Subject: [PATCH 4/6] display enemy resources --- assets/bundles/bundle.properties | 2 + assets/bundles/bundle_ko.properties | 2 + src/UnitInfo/core/HudUi.java | 114 +++++++++++++++++++++++-- src/UnitInfo/core/Main.java | 9 +- src/UnitInfo/core/Setting.java | 1 + src/UnitInfo/ui/CoresItemsDisplay.java | 66 ++++++++++++++ 6 files changed, 184 insertions(+), 10 deletions(-) create mode 100644 src/UnitInfo/ui/CoresItemsDisplay.java diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index 549198a..3d42a35 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -56,6 +56,7 @@ setting.shar1.name = Change Bar style [lightgray](made by shar)[] setting.shar2.name = Change Bar style [lightgray](made by shar)[] setting.shar3.name = Change Bar style [lightgray](made by shar)[] setting.gaycursor.name = Enable mouse trail effect. [lightgray](only for desktop)[] +setting.allTeam.name = Display all teams' item #Dialog editmaxwave = edit waves(int) @@ -69,4 +70,5 @@ hud.unit = Unit Info hud.wave = Wave Info hud.core = Core Info hud.tile = Tile Info +hud.item = Item Info hud.cancel = Hidden \ No newline at end of file diff --git a/assets/bundles/bundle_ko.properties b/assets/bundles/bundle_ko.properties index c440236..93bffbc 100644 --- a/assets/bundles/bundle_ko.properties +++ b/assets/bundles/bundle_ko.properties @@ -58,6 +58,7 @@ setting.shar1.name = 바 스타일 변경 [lightgray](shar 만듬)[] setting.shar2.name = 바 스타일 변경 [lightgray](shar 만듬)[] setting.shar3.name = 바 스타일 변경 [lightgray](shar 만듬)[] setting.gaycursor.name = 마우스 꼬리효과 [lightgray](PC 전용)[] +setting.allTeam.name = 모든 팀 자원 표시 #Dialog editmaxwave = 최대 단계 수정하기(정수) @@ -71,4 +72,5 @@ hud.unit = 유닛 정보 hud.wave = 단계 정보 hud.core = 코어 정보 hud.tile = 타일 정보 +hud.item = 자원 정보 hud.cancel = 닫음 \ No newline at end of file diff --git a/src/UnitInfo/core/HudUi.java b/src/UnitInfo/core/HudUi.java index 1d5a241..32c13ee 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/UnitInfo/core/HudUi.java @@ -40,9 +40,11 @@ public class HudUi { Table waveTable = new Table(); Table coreTable = new Table(); Table tileTable = new Table(); + Table itemTable = new Table(); float waveScrollPos; float coreScrollPos; float tileScrollPos; + float itemScrollPos; Element image; Color lastItemColor = Pal.items; @@ -61,6 +63,9 @@ public class HudUi { Seq numbers = new Seq<>(new Float[]{0f,0f,0f,0f,0f,0f}); Seq colors = new Seq<>(new Color[]{Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear}); + + CoresItemsDisplay coreItems = new CoresItemsDisplay(Team.baseTeams); + @SuppressWarnings("unchecked") public T getTarget(){ Seq units = Groups.unit.intersect(Core.input.mouseWorldX(), Core.input.mouseWorldY(), 4, 4); @@ -89,6 +94,11 @@ public class HudUi { Draw.reset(); } }); + Events.on(EventType.ResetEvent.class, e -> { + if(settings.getBool("allTeam")) coreItems.teams = Team.all; + coreItems.resetUsed(); + coreItems.tables.each(Group::clear); + }); } public void addTable(){ @@ -111,7 +121,7 @@ public class HudUi { Table labelTable = new Table(t -> t.add(label).scaling(Scaling.fit).left().padRight(40 * 8f)); table.table(t -> { - Seq