mirror of
https://github.com/yawaflua/Informatis.git
synced 2025-12-10 03:59:26 +02:00
display enemy resources
This commit is contained in:
@@ -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
|
||||
@@ -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 = 닫음
|
||||
@@ -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<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});
|
||||
|
||||
|
||||
CoresItemsDisplay coreItems = new CoresItemsDisplay(Team.baseTeams);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Teamc> T getTarget(){
|
||||
Seq<Unit> 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<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, () -> {
|
||||
uiIndex = 0;
|
||||
buttons.items[0].setChecked(true);
|
||||
@@ -119,6 +129,7 @@ public class HudUi {
|
||||
buttons.items[2].setChecked(false);
|
||||
buttons.items[3].setChecked(false);
|
||||
buttons.items[4].setChecked(false);
|
||||
buttons.items[5].setChecked(false);
|
||||
label.setText(Core.bundle.get("hud.unit"));
|
||||
addBars();
|
||||
addWeapon();
|
||||
@@ -126,9 +137,10 @@ public class HudUi {
|
||||
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, 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;
|
||||
}).size(5*8f).get();
|
||||
t.row();
|
||||
@@ -139,6 +151,7 @@ public class HudUi {
|
||||
buttons.items[2].setChecked(false);
|
||||
buttons.items[3].setChecked(false);
|
||||
buttons.items[4].setChecked(false);
|
||||
buttons.items[5].setChecked(false);
|
||||
label.setText(Core.bundle.get("hud.wave"));
|
||||
addBars();
|
||||
addWeapon();
|
||||
@@ -146,9 +159,10 @@ public class HudUi {
|
||||
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, 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;
|
||||
}).size(5*8f).get();
|
||||
t.row();
|
||||
@@ -159,6 +173,7 @@ public class HudUi {
|
||||
buttons.items[2].setChecked(true);
|
||||
buttons.items[3].setChecked(false);
|
||||
buttons.items[4].setChecked(false);
|
||||
buttons.items[5].setChecked(false);
|
||||
label.setText(Core.bundle.get("hud.core"));
|
||||
addBars();
|
||||
addWeapon();
|
||||
@@ -166,9 +181,10 @@ public class HudUi {
|
||||
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, 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;
|
||||
}).size(5*8f).get();
|
||||
t.row();
|
||||
@@ -179,6 +195,7 @@ public class HudUi {
|
||||
buttons.items[2].setChecked(false);
|
||||
buttons.items[3].setChecked(true);
|
||||
buttons.items[4].setChecked(false);
|
||||
buttons.items[5].setChecked(false);
|
||||
label.setText(Core.bundle.get("hud.tile"));
|
||||
addBars();
|
||||
addWeapon();
|
||||
@@ -186,19 +203,44 @@ public class HudUi {
|
||||
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, 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;
|
||||
}).size(5*8f).get();
|
||||
t.row();
|
||||
buttons.items[4] = t.button(Icon.cancel, Styles.clearToggleTransi, () -> {
|
||||
buttons.items[4] = t.button(Icon.copy, Styles.clearToggleTransi, () -> {
|
||||
uiIndex = 4;
|
||||
buttons.items[0].setChecked(false);
|
||||
buttons.items[1].setChecked(false);
|
||||
buttons.items[2].setChecked(false);
|
||||
buttons.items[3].setChecked(false);
|
||||
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"));
|
||||
addBars();
|
||||
addWeapon();
|
||||
@@ -208,7 +250,7 @@ public class HudUi {
|
||||
addTileTable();
|
||||
table.removeChild(baseTable);
|
||||
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;
|
||||
}).size(5*8f).get();
|
||||
});
|
||||
@@ -383,7 +425,7 @@ public class HudUi {
|
||||
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));
|
||||
|
||||
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);
|
||||
WeaponMount mount = ((Unit) getTarget()).mounts[r];
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import mindustry.game.Team;
|
||||
import mindustry.gen.Building;
|
||||
import mindustry.gen.Groups;
|
||||
import mindustry.gen.Teamc;
|
||||
import mindustry.gen.Unit;
|
||||
import mindustry.graphics.Drawf;
|
||||
import mindustry.graphics.Layer;
|
||||
import mindustry.graphics.Pal;
|
||||
@@ -30,6 +31,7 @@ import mindustry.mod.Mod;
|
||||
import mindustry.ui.Fonts;
|
||||
import mindustry.world.Block;
|
||||
import mindustry.world.blocks.defense.turrets.BaseTurret;
|
||||
import mindustry.world.blocks.defense.turrets.Turret;
|
||||
|
||||
import static arc.Core.*;
|
||||
import static mindustry.Vars.*;
|
||||
@@ -111,8 +113,11 @@ public class Main extends Mod {
|
||||
Draw.reset();
|
||||
});
|
||||
|
||||
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 -> {
|
||||
if(settings.getBool("rangeNearby")) Groups.all.each(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 margin = settings.getInt("rangeRadius") * tilesize;
|
||||
if(Vars.player.dst((Position) entityc) <= range + margin)
|
||||
|
||||
@@ -295,5 +295,6 @@ public class Setting {
|
||||
addGraphicCheckSetting("shar2", false);
|
||||
addGraphicCheckSetting("shar3", false);
|
||||
addGraphicCheckSetting("gaycursor", false);
|
||||
addGraphicCheckSetting("allTeam", false);
|
||||
}
|
||||
}
|
||||
|
||||
66
src/UnitInfo/ui/CoresItemsDisplay.java
Normal file
66
src/UnitInfo/ui/CoresItemsDisplay.java
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user