display enemy resources

This commit is contained in:
Sharlotte
2021-07-22 18:54:22 +09:00
parent 4eec3508a4
commit c88d044572
6 changed files with 184 additions and 10 deletions

View File

@@ -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.shar2.name = Change Bar style [lightgray](made by shar)[]
setting.shar3.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.gaycursor.name = Enable mouse trail effect. [lightgray](only for desktop)[]
setting.allTeam.name = Display all teams' item
#Dialog #Dialog
editmaxwave = edit waves(int) editmaxwave = edit waves(int)
@@ -69,4 +70,5 @@ hud.unit = Unit Info
hud.wave = Wave Info hud.wave = Wave Info
hud.core = Core Info hud.core = Core Info
hud.tile = Tile Info hud.tile = Tile Info
hud.item = Item Info
hud.cancel = Hidden hud.cancel = Hidden

View File

@@ -58,6 +58,7 @@ setting.shar1.name = 바 스타일 변경 [lightgray](shar 만듬)[]
setting.shar2.name = 바 스타일 변경 [lightgray](shar 만듬)[] setting.shar2.name = 바 스타일 변경 [lightgray](shar 만듬)[]
setting.shar3.name = 바 스타일 변경 [lightgray](shar 만듬)[] setting.shar3.name = 바 스타일 변경 [lightgray](shar 만듬)[]
setting.gaycursor.name = 마우스 꼬리효과 [lightgray](PC 전용)[] setting.gaycursor.name = 마우스 꼬리효과 [lightgray](PC 전용)[]
setting.allTeam.name = 모든 팀 자원 표시
#Dialog #Dialog
editmaxwave = 최대 단계 수정하기(정수) editmaxwave = 최대 단계 수정하기(정수)
@@ -71,4 +72,5 @@ hud.unit = 유닛 정보
hud.wave = 단계 정보 hud.wave = 단계 정보
hud.core = 코어 정보 hud.core = 코어 정보
hud.tile = 타일 정보 hud.tile = 타일 정보
hud.item = 자원 정보
hud.cancel = 닫음 hud.cancel = 닫음

View File

@@ -40,9 +40,11 @@ public class HudUi {
Table waveTable = new Table(); Table waveTable = new Table();
Table coreTable = new Table(); Table coreTable = new Table();
Table tileTable = new Table(); Table tileTable = new Table();
Table itemTable = new Table();
float waveScrollPos; float waveScrollPos;
float coreScrollPos; float coreScrollPos;
float tileScrollPos; float tileScrollPos;
float itemScrollPos;
Element image; Element image;
Color lastItemColor = Pal.items; Color lastItemColor = Pal.items;
@@ -61,6 +63,9 @@ public class HudUi {
Seq<Float> numbers = new Seq<>(new Float[]{0f,0f,0f,0f,0f,0f}); Seq<Float> numbers = new Seq<>(new Float[]{0f,0f,0f,0f,0f,0f});
Seq<Color> colors = new Seq<>(new Color[]{Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear}); Seq<Color> 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") @SuppressWarnings("unchecked")
public <T extends Teamc> T getTarget(){ public <T extends Teamc> T getTarget(){
Seq<Unit> units = Groups.unit.intersect(Core.input.mouseWorldX(), Core.input.mouseWorldY(), 4, 4); Seq<Unit> units = Groups.unit.intersect(Core.input.mouseWorldX(), Core.input.mouseWorldY(), 4, 4);
@@ -89,6 +94,11 @@ public class HudUi {
Draw.reset(); 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(){ 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 labelTable = new Table(t -> t.add(label).scaling(Scaling.fit).left().padRight(40 * 8f));
table.table(t -> { table.table(t -> {
Seq<Button> buttons = Seq.with(null, null, null, null, null); Seq<Button> buttons = Seq.with(null, null, null, null, null, null);
buttons.items[0] = t.button(Icon.units, Styles.clearToggleTransi, () -> { buttons.items[0] = t.button(Icon.units, Styles.clearToggleTransi, () -> {
uiIndex = 0; uiIndex = 0;
buttons.items[0].setChecked(true); buttons.items[0].setChecked(true);
@@ -119,6 +129,7 @@ public class HudUi {
buttons.items[2].setChecked(false); buttons.items[2].setChecked(false);
buttons.items[3].setChecked(false); buttons.items[3].setChecked(false);
buttons.items[4].setChecked(false); buttons.items[4].setChecked(false);
buttons.items[5].setChecked(false);
label.setText(Core.bundle.get("hud.unit")); label.setText(Core.bundle.get("hud.unit"));
addBars(); addBars();
addWeapon(); addWeapon();
@@ -126,9 +137,10 @@ public class HudUi {
addWaveTable(); addWaveTable();
addCoreTable(); addCoreTable();
addTileTable(); addTileTable();
addItemTable();
table.removeChild(baseTable); table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y); labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get(); baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f; a = 1f;
}).size(5*8f).get(); }).size(5*8f).get();
t.row(); t.row();
@@ -139,6 +151,7 @@ public class HudUi {
buttons.items[2].setChecked(false); buttons.items[2].setChecked(false);
buttons.items[3].setChecked(false); buttons.items[3].setChecked(false);
buttons.items[4].setChecked(false); buttons.items[4].setChecked(false);
buttons.items[5].setChecked(false);
label.setText(Core.bundle.get("hud.wave")); label.setText(Core.bundle.get("hud.wave"));
addBars(); addBars();
addWeapon(); addWeapon();
@@ -146,9 +159,10 @@ public class HudUi {
addWaveTable(); addWaveTable();
addCoreTable(); addCoreTable();
addTileTable(); addTileTable();
addItemTable();
table.removeChild(baseTable); table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y); labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get(); baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f; a = 1f;
}).size(5*8f).get(); }).size(5*8f).get();
t.row(); t.row();
@@ -159,6 +173,7 @@ public class HudUi {
buttons.items[2].setChecked(true); buttons.items[2].setChecked(true);
buttons.items[3].setChecked(false); buttons.items[3].setChecked(false);
buttons.items[4].setChecked(false); buttons.items[4].setChecked(false);
buttons.items[5].setChecked(false);
label.setText(Core.bundle.get("hud.core")); label.setText(Core.bundle.get("hud.core"));
addBars(); addBars();
addWeapon(); addWeapon();
@@ -166,9 +181,10 @@ public class HudUi {
addWaveTable(); addWaveTable();
addCoreTable(); addCoreTable();
addTileTable(); addTileTable();
addItemTable();
table.removeChild(baseTable); table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y); labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get(); baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f; a = 1f;
}).size(5*8f).get(); }).size(5*8f).get();
t.row(); t.row();
@@ -179,6 +195,7 @@ public class HudUi {
buttons.items[2].setChecked(false); buttons.items[2].setChecked(false);
buttons.items[3].setChecked(true); buttons.items[3].setChecked(true);
buttons.items[4].setChecked(false); buttons.items[4].setChecked(false);
buttons.items[5].setChecked(false);
label.setText(Core.bundle.get("hud.tile")); label.setText(Core.bundle.get("hud.tile"));
addBars(); addBars();
addWeapon(); addWeapon();
@@ -186,19 +203,44 @@ public class HudUi {
addWaveTable(); addWaveTable();
addCoreTable(); addCoreTable();
addTileTable(); addTileTable();
addItemTable();
table.removeChild(baseTable); table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y); labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get(); baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f; a = 1f;
}).size(5*8f).get(); }).size(5*8f).get();
t.row(); t.row();
buttons.items[4] = t.button(Icon.cancel, Styles.clearToggleTransi, () -> { buttons.items[4] = t.button(Icon.copy, Styles.clearToggleTransi, () -> {
uiIndex = 4; uiIndex = 4;
buttons.items[0].setChecked(false); buttons.items[0].setChecked(false);
buttons.items[1].setChecked(false); buttons.items[1].setChecked(false);
buttons.items[2].setChecked(false); buttons.items[2].setChecked(false);
buttons.items[3].setChecked(false); buttons.items[3].setChecked(false);
buttons.items[4].setChecked(true); buttons.items[4].setChecked(true);
buttons.items[5].setChecked(false);
label.setText(Core.bundle.get("hud.item"));
addBars();
addWeapon();
addUnitTable();
addWaveTable();
addCoreTable();
addTileTable();
addItemTable();
table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f;
}).size(5*8f).get();
t.row();
buttons.items[5] = t.button(Icon.cancel, Styles.clearToggleTransi, () -> {
uiIndex = 5;
buttons.items[0].setChecked(false);
buttons.items[1].setChecked(false);
buttons.items[2].setChecked(false);
buttons.items[3].setChecked(false);
buttons.items[4].setChecked(false);
buttons.items[5].setChecked(true);
label.setText(Core.bundle.get("hud.cancel")); label.setText(Core.bundle.get("hud.cancel"));
addBars(); addBars();
addWeapon(); addWeapon();
@@ -208,7 +250,7 @@ public class HudUi {
addTileTable(); addTileTable();
table.removeChild(baseTable); table.removeChild(baseTable);
labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y); labelTable.setPosition(buttons.items[uiIndex].x, buttons.items[uiIndex].y);
baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get(); baseTable = table.table(tt -> tt.stack(unitTable, coreTable, waveTable, tileTable, itemTable, labelTable).align(Align.left).left().visible(() -> settings.getBool("infoui"))).get();
a = 1f; a = 1f;
}).size(5*8f).get(); }).size(5*8f).get();
}); });
@@ -383,7 +425,7 @@ public class HudUi {
tx.add(new Table(scene.getStyle(Button.ButtonStyle.class).up, tt -> { 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)); tt.left().top().defaults().width(Scl.scl(24/3f * 8f)).minHeight(Scl.scl(12/3f * 8f));
for(int r = 0; r < ((Unit) getTarget()).type.weapons.size; r++){ if(getTarget() instanceof Unit && ((Unit) getTarget()).type != null) for(int r = 0; r < ((Unit) getTarget()).type.weapons.size; r++){
Weapon weapon = ((Unit) getTarget()).type.weapons.get(r); Weapon weapon = ((Unit) getTarget()).type.weapons.get(r);
WeaponMount mount = ((Unit) getTarget()).mounts[r]; WeaponMount mount = ((Unit) getTarget()).mounts[r];
TextureRegion region = !weapon.name.equals("") && weapon.outlineRegion.found() ? weapon.outlineRegion : ((Unit) getTarget()).type.uiIcon; TextureRegion region = !weapon.name.equals("") && weapon.outlineRegion.found() ? weapon.outlineRegion : ((Unit) getTarget()).type.uiIcon;
@@ -875,4 +917,60 @@ public class HudUi {
table.visibility = () -> uiIndex == 3; table.visibility = () -> uiIndex == 3;
}); });
} }
public void setItem(Table table){
table.table(t -> {
for(int i = 0; i < coreItems.tables.size; i++){
int finalI = i;
t.table(Tex.underline2, head -> {
head.table(label -> {
label.center();
label.label(() -> "[#" + coreItems.teams[finalI].color.toString() + "]" + coreItems.teams[finalI].name + "[]");
});
});
t.row();
t.table(tt -> {
tt.left();
tt.add(coreItems.tables.get(finalI));
});
t.row();
}
});
}
public void addItemTable(){
if(uiIndex != 4) return;
ScrollPane tilePane = new ScrollPane(new Image(Core.atlas.find("clear")).setScaling(Scaling.fit), Styles.smallPane);
tilePane.setScrollingDisabled(true, false);
tilePane.setScrollYForce(tileScrollPos);
tilePane.update(() -> {
if(tilePane.hasScroll()){
Element result = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true);
if(result == null || !result.isDescendantOf(tilePane)){
Core.scene.setScrollFocus(null);
}
}
itemScrollPos = tilePane.getScrollY();
});
tilePane.setWidget(new Table(this::setItem).left());
tilePane.setOverscroll(false, false);
itemTable = new Table(table -> {
table.add(new Table(scene.getStyle(Button.ButtonStyle.class).up, t -> {
t.defaults().minWidth(Scl.scl(25 * 8f)).scaling(Scaling.fit).left();
t.add(tilePane).maxHeight(Scl.scl(32 * 8f));
}){
@Override
protected void drawBackground(float x, float y) {
if(getBackground() == null) return;
Draw.color(color.r, color.g, color.b, (settings.getInt("uiopacity") / 100f) * this.parentAlpha);
getBackground().draw(x, y, width, height);
Draw.reset();
}
}).padRight(Scl.scl(39 * 8f));
table.fillParent = true;
table.visibility = () -> uiIndex == 4;
});
}
} }

View File

@@ -22,6 +22,7 @@ import mindustry.game.Team;
import mindustry.gen.Building; import mindustry.gen.Building;
import mindustry.gen.Groups; import mindustry.gen.Groups;
import mindustry.gen.Teamc; import mindustry.gen.Teamc;
import mindustry.gen.Unit;
import mindustry.graphics.Drawf; import mindustry.graphics.Drawf;
import mindustry.graphics.Layer; import mindustry.graphics.Layer;
import mindustry.graphics.Pal; import mindustry.graphics.Pal;
@@ -30,6 +31,7 @@ import mindustry.mod.Mod;
import mindustry.ui.Fonts; import mindustry.ui.Fonts;
import mindustry.world.Block; import mindustry.world.Block;
import mindustry.world.blocks.defense.turrets.BaseTurret; import mindustry.world.blocks.defense.turrets.BaseTurret;
import mindustry.world.blocks.defense.turrets.Turret;
import static arc.Core.*; import static arc.Core.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
@@ -111,8 +113,11 @@ public class Main extends Mod {
Draw.reset(); Draw.reset();
}); });
if(settings.getBool("rangeNearby")) Groups.all.each(entityc -> entityc instanceof BaseTurret.BaseTurretBuild || if(settings.getBool("rangeNearby")) Groups.all.each(entityc ->
(!(entityc instanceof Building) && entityc instanceof Ranged && player != null && player.team() != ((Ranged) entityc).team()), entityc -> { (entityc instanceof BaseTurret.BaseTurretBuild || entityc instanceof Unit)
&& player != null && player.team() != ((Ranged) entityc).team(), entityc -> {
if(entityc instanceof Turret.TurretBuild
&& !(player.unit().isFlying() && ((Turret)((Turret.TurretBuild) entityc).block).targetAir || !(player.unit().isFlying()) && ((Turret)((Turret.TurretBuild) entityc).block).targetGround)) return;
float range = ((Ranged) entityc).range(); float range = ((Ranged) entityc).range();
float margin = settings.getInt("rangeRadius") * tilesize; float margin = settings.getInt("rangeRadius") * tilesize;
if(Vars.player.dst((Position) entityc) <= range + margin) if(Vars.player.dst((Position) entityc) <= range + margin)

View File

@@ -295,5 +295,6 @@ public class Setting {
addGraphicCheckSetting("shar2", false); addGraphicCheckSetting("shar2", false);
addGraphicCheckSetting("shar3", false); addGraphicCheckSetting("shar3", false);
addGraphicCheckSetting("gaycursor", false); addGraphicCheckSetting("gaycursor", false);
addGraphicCheckSetting("allTeam", false);
} }
} }

View File

@@ -0,0 +1,66 @@
package UnitInfo.ui;
import arc.scene.ui.layout.Table;
import arc.struct.ObjectSet;
import arc.struct.Seq;
import mindustry.core.UI;
import mindustry.game.Team;
import mindustry.type.Item;
import mindustry.ui.Styles;
import mindustry.world.blocks.storage.CoreBlock;
import static mindustry.Vars.content;
import static mindustry.Vars.iconSmall;
public class CoresItemsDisplay {
private final ObjectSet<Item> usedItems = new ObjectSet<>();
private CoreBlock.CoreBuild core;
public Team[] teams;
public Seq<Table> tables = new Seq<>();
public CoresItemsDisplay(Team[] teams) {
this.teams = teams;
rebuild();
}
public void resetUsed(){
usedItems.clear();
tables.each(t->t.background(null));
}
Seq<Table> rebuild(){
tables.clear();
for(Team team : teams) {
tables.add(new Table(t -> {
t.clear();
if(usedItems.size > 0){
t.background(Styles.black6);
t.margin(4);
}
t.update(() -> {
core = team.core();
if(content.items().contains(item -> core != null && core.items.get(item) > 0 && usedItems.add(item))){
rebuild();
}
});
int i = 0;
for(Item item : content.items()){
if(usedItems.contains(item)){
t.image(item.uiIcon).size(iconSmall).padRight(3).tooltip(tt -> tt.background(Styles.black6).margin(4f).add(item.localizedName).style(Styles.outlineLabel));
t.label(() -> core == null ? "0" : UI.formatAmount(core.items.get(item))).padRight(3).minWidth(52f).left();
if(++i % 4 == 0){
t.row();
}
}
}
}));
}
return tables;
}
}