Skip to content

Commit a19fce0

Browse files
committed
✨ 移动电网信息条到核心资源显示中
1 parent df44a32 commit a19fce0

File tree

6 files changed

+52
-102
lines changed

6 files changed

+52
-102
lines changed

assets/bundles/bundle-mdtx.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ setting.deadOverlay.name = 死亡时(观战)仍然显示界面
7373
setting.invertMapClick.name = 反转小地图的左右键点击
7474
setting.arcSpecificTable.name = 学术信息显示(左上角) [orange][重启生效]
7575
setting.logicSupport.name = 逻辑辅助器
76-
setting.powerStatistic.name = 电量统计 [orange][重启生效]
7776
setting.showOtherTeamResource.name = 队伍资源显示(左中部)
7877
setting.showQuickToolTable.name = 快捷工具(右中部) [gray]快捷设置/工具箱/建筑工具
7978
setting.quickToolOffset.name = 快捷工具偏置
@@ -126,6 +125,7 @@ setting.coreItems.columns.name = 显示列数
126125
setting.coreItems.showItem.name = 显示核心物品
127126
setting.coreItems.showUnit.name = 显示单位数量
128127
setting.coreItems.showPlan.name = 显示建筑中数量
128+
setting.coreItems.showPower.name = 显示电网信息
129129
setting.newWaveInfoDisplay.name = 新波次显示(中上部)
130130
#end SettingsV2
131131

assets/bundles/bundle-mdtx_en.properties

-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ setting.deadOverlay.name = Show UI When Dead (Spectating)
7373
setting.invertMapClick.name = Invert Mini Map Left and Right Click
7474
setting.arcSpecificTable.name = Academic Information Display (Top Left) [orange][Restart Required]
7575
setting.logicSupport.name = Logic Support
76-
setting.powerStatistic.name = Power Statistics [orange][Restart Required]
7776
setting.showOtherTeamResource.name = Team Resource Display (Middle Left)
7877
setting.showQuickToolTable.name = Quick Tools (Middle Right) [gray]Quick Settings/Toolbox/Building Tools
7978
setting.arcCoreItemsCol.name = Core Items Display Column Count

patches/client/0061-ARC-merged.patch

+9-28
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,12 @@ way-zer <[email protected]> on 2024/9/8
117117
.../ui/dialogs/SettingsMenuDialog.java | 28 +-
118118
.../mindustry/ui/fragments/ChatFragment.java | 9 +-
119119
.../ui/fragments/ConsoleFragment.java | 3 +
120-
.../mindustry/ui/fragments/HudFragment.java | 186 ++++++++++++-
120+
.../mindustry/ui/fragments/HudFragment.java | 174 +++++++++++-
121121
.../mindustry/ui/fragments/MenuFragment.java | 59 +++-
122122
.../ui/fragments/PlacementFragment.java | 169 ++++++++++--
123123
.../ui/fragments/PlayerListFragment.java | 72 ++---
124124
core/src/mindustry/world/Block.java | 7 +-
125-
29 files changed, 1560 insertions(+), 175 deletions(-)
125+
29 files changed, 1548 insertions(+), 175 deletions(-)
126126

127127
diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java
128128
index 7f944a3eb06180f9e2b760bbd5aa41709ddf6611..4972f424edd41b8a29d926a09bc55987066d33aa 100644
@@ -2459,7 +2459,7 @@ index e74e6a12e3da57eb58598eb4e679a7990c109def..013255ce5aa828d538814fa25dc64c6a
24592459
//special case for 'clear' command
24602460
if(message.equals("clear")){
24612461
diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java
2462-
index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066f01142d1 100644
2462+
index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..51c10a9342bd7a2610443c6b4b9885711aa4c15e 100644
24632463
--- a/core/src/mindustry/ui/fragments/HudFragment.java
24642464
+++ b/core/src/mindustry/ui/fragments/HudFragment.java
24652465
@@ -29,11 +29,13 @@ import mindustry.net.Packets.*;
@@ -2487,36 +2487,23 @@ index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066
24872487
//wave info button with text
24882488
s.add(makeStatusTable()).grow().name("status");
24892489

2490-
@@ -323,6 +329,12 @@ public class HudFragment{
2491-
logic.skipWave();
2492-
}
2493-
}).growY().fillX().right().width(40f).disabled(b -> !canSkipWave()).name("skip").get().toBack();
2494-
+ // Power bar display
2495-
+ if (Core.settings.getBool("powerStatistic")){
2496-
+ s.row();
2497-
+ s.add(ArcPowerInfo.getBars()).growX().colspan(s.getColumns());
2498-
+ }
2499-
+
2500-
}).width(dsize * 5 + 4f).name("statustable");
2501-
2502-
wavesMain.row();
2503-
@@ -331,6 +343,7 @@ public class HudFragment{
2490+
@@ -331,6 +337,7 @@ public class HudFragment{
25042491

25052492
editorMain.name = "editor";
25062493
editorMain.table(Tex.buttonEdge4, t -> {
25072494
+ t.visible(() -> UIExt.advanceToolTable != null && UIExt.advanceToolTable.parent.visible);
25082495
t.name = "teams";
25092496
t.top().table(teams -> {
25102497
teams.left();
2511-
@@ -346,6 +359,7 @@ public class HudFragment{
2498+
@@ -346,6 +353,7 @@ public class HudFragment{
25122499
teams.row();
25132500
}
25142501
}
25152502
+ teams.button("更多", () -> UIExt.teamSelect.pickOne(team -> Call.setPlayerTeamEditor(player, team), player.team())).center().row();
25162503
}).top().left();
25172504

25182505
t.row();
2519-
@@ -417,6 +431,8 @@ public class HudFragment{
2506+
@@ -417,6 +425,8 @@ public class HudFragment{
25202507
IntFormat mem = new IntFormat("memory");
25212508
IntFormat memnative = new IntFormat("memory2");
25222509

@@ -2525,7 +2512,7 @@ index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066
25252512
info.label(() -> fps.get(Core.graphics.getFramesPerSecond())).left().style(Styles.outlineLabel).name("fps");
25262513
info.row();
25272514
info.label(() -> Strings.format("LG/DW/UI(ms) @/@/@", Time.nanosToMillis(DebugUtil.logicTime), Time.nanosToMillis(DebugUtil.rendererTime), Time.nanosToMillis(DebugUtil.uiTime)))
2528-
@@ -426,6 +442,11 @@ public class HudFragment{
2515+
@@ -426,6 +436,11 @@ public class HudFragment{
25292516
DebugUtil.lastDrawRequests, DebugUtil.lastVertices, DebugUtil.lastSwitchTexture, DebugUtil.lastFlushCount)).left().style(Styles.outlineLabel).name("draw"), ()->DebugUtil.renderDebug);
25302517
info.row();
25312518

@@ -2537,7 +2524,7 @@ index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066
25372524
if(android){
25382525
info.label(() -> memnative.get((int)(Core.app.getJavaHeap() / 1024 / 1024), (int)(Core.app.getNativeHeap() / 1024 / 1024))).left().style(Styles.outlineLabel).name("memory2");
25392526
}else{
2540-
@@ -1038,6 +1059,169 @@ public class HudFragment{
2527+
@@ -1038,6 +1053,163 @@ public class HudFragment{
25412528
return table;
25422529
}
25432530

@@ -2585,12 +2572,6 @@ index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066
25852572
+
25862573
+ table.table(this::buildArcStatus).growX().pad(4f);
25872574
+
2588-
+ // Power bar display
2589-
+ if (Core.settings.getBool("powerStatistic")){
2590-
+ table.row();
2591-
+ table.add(ArcPowerInfo.getBars()).growX().colspan(table.getColumns());
2592-
+ }
2593-
+
25942575
+ return table;
25952576
+ }
25962577
+
@@ -2707,7 +2688,7 @@ index ca1ef15de7fdf940eff0d1e1b1a9f36ebc78aafd..0fb8b07b1d30070ae7e3f924563ba066
27072688
private void addInfoTable(Table table){
27082689
table.name = "infotable";
27092690
table.left();
2710-
@@ -1082,7 +1266,7 @@ public class HudFragment{
2691+
@@ -1082,7 +1254,7 @@ public class HudFragment{
27112692
}
27122693

27132694
private boolean canSkipWave(){

src/mindustryX/features/Settings.java

-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public static void addSettings(){
4040
c.checkPref("invertMapClick", false);
4141
c.checkPref("arcSpecificTable", true);
4242
c.checkPref("logicSupport", true);
43-
c.checkPref("powerStatistic", true);
4443
c.checkPref("showOtherTeamResource", false);
4544
c.checkPref("showQuickToolTable", true);
4645
c.sliderPref("itemSelectionHeight", 4, 4, 12, i -> i + "行");

src/mindustryX/features/ui/ArcPowerInfo.java

-69
This file was deleted.

src/mindustryX/features/ui/NewCoreItemsDisplay.java

+42-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
import arc.*;
44
import arc.graphics.*;
5+
import arc.math.*;
56
import arc.scene.ui.*;
67
import arc.scene.ui.layout.*;
78
import arc.struct.*;
89
import arc.util.*;
910
import kotlin.collections.*;
11+
import mindustry.*;
1012
import mindustry.core.*;
1113
import mindustry.entities.*;
1214
import mindustry.game.EventType.*;
15+
import mindustry.gen.*;
1316
import mindustry.graphics.*;
1417
import mindustry.type.*;
1518
import mindustry.ui.*;
@@ -29,7 +32,7 @@
2932
public class NewCoreItemsDisplay extends Table{
3033
public static final float MIN_WIDTH = 64f;
3134

32-
private Table itemsTable, unitsTable, plansTable;
35+
private Table itemsTable, unitsTable, plansTable, powerTable;
3336

3437
private static final Interval timer = new Interval(2);
3538

@@ -45,7 +48,8 @@ public class NewCoreItemsDisplay extends Table{
4548
private final SettingsV2.Data<Boolean> showItem = CheckPref.INSTANCE.create("coreItems.showItem", true);
4649
private final SettingsV2.Data<Boolean> showUnit = CheckPref.INSTANCE.create("coreItems.showUnit", true);
4750
private final SettingsV2.Data<Boolean> showPlan = CheckPref.INSTANCE.create("coreItems.showPlan", true);
48-
final List<Data<?>> settings = CollectionsKt.listOf(columns, showItem, showUnit, showPlan);
51+
private final SettingsV2.Data<Boolean> showPower = CheckPref.INSTANCE.create("coreItems.showPower", true);
52+
final List<Data<?>> settings = CollectionsKt.listOf(columns, showItem, showUnit, showPlan, showPower);
4953

5054
public NewCoreItemsDisplay(){
5155
itemDelta = new int[content.items().size];
@@ -64,6 +68,7 @@ public NewCoreItemsDisplay(){
6468
}
6569

6670
private void setup(){
71+
collapser(powerTable = new Table(Styles.black3), showPower::getValue).growX().row();
6772
collapser(itemsTable = new Table(Styles.black3), showItem::getValue).growX().row();
6873
collapser(unitsTable = new Table(Styles.black3), showUnit::getValue).growX().row();
6974

@@ -100,6 +105,41 @@ private void setup(){
100105
rebuildPlans();
101106
}
102107
});
108+
buildPower();
109+
}
110+
111+
private float balance, stored, capacity, produced, need, satisfaction;
112+
113+
private void buildPower(){
114+
powerTable.update(() -> {
115+
balance = 0;
116+
stored = 0;
117+
capacity = 0;
118+
produced = 0;
119+
need = 0;
120+
Groups.powerGraph.each(item -> {
121+
var graph = item.graph();
122+
if(graph.all.isEmpty() || graph.all.first().team != Vars.player.team()) return;
123+
balance += graph.getPowerBalance();
124+
stored += graph.getLastPowerStored();
125+
capacity += graph.getLastCapacity();
126+
produced += graph.getLastPowerProduced();
127+
need += graph.getLastPowerNeeded();
128+
});
129+
balance *= Time.toSeconds;
130+
satisfaction = produced == 0 ? 1 : need == 0 ? 1 : Mathf.clamp(produced / need, 0, 1);
131+
});
132+
powerTable.margin(2f).stack(
133+
new Bar("", Pal.powerBar, () -> capacity == 0 ? (balance > 0 ? 1 : 0) : stored / capacity),
134+
new Table(t -> {
135+
t.add().growX();
136+
t.label(() -> Core.bundle.format("bar.powerbalance", (balance >= 0 ? "+" : "") + UI.formatAmount((long)balance)) +
137+
(satisfaction >= 1 ? "" : " [gray]" + (int)(satisfaction * 100) + "%"));
138+
t.add().width(16);
139+
t.label(() -> Core.bundle.format("bar.powerstored", UI.formatAmount((long)stored), UI.formatAmount((long)capacity)));
140+
t.add().growX();
141+
})
142+
).growX();
103143
}
104144

105145
private void updateItemMeans(){

0 commit comments

Comments
 (0)