Skip to content

Commit

Permalink
fixup! UI&ARC: logic Support 处理器编辑增强
Browse files Browse the repository at this point in the history
重制内存元显示
  • Loading branch information
way-zer committed Jul 14, 2024
1 parent e5d14dc commit 074cf4d
Showing 1 changed file with 32 additions and 87 deletions.
119 changes: 32 additions & 87 deletions core/src/mindustry/world/blocks/logic/MemoryBlock.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
package mindustry.world.blocks.logic;

import arc.Core;
import arc.*;
import arc.graphics.Color;
import arc.scene.event.Touchable;
import arc.scene.ui.Label;
import arc.scene.event.*;
import arc.scene.ui.layout.Table;
import arc.util.Time;
import arc.util.io.*;
import mindustry.gen.*;
import mindustry.ui.Styles;
import mindustry.world.*;
import mindustry.world.meta.*;
import mindustryX.features.*;
import mindustryX.features.ui.*;

import static mindustry.Vars.*;

public class MemoryBlock extends Block{
public int memoryCapacity = 32;

boolean showInfo = false;
int numPerRow = 10;
int period = 15;

Table infoTable = new Table();

public MemoryBlock(String name){
super(name);
destructible = true;
Expand Down Expand Up @@ -53,8 +46,8 @@ public boolean canBreak(Tile tile){

public class MemoryBuild extends Building{
public double[] memory = new double[memoryCapacity];
float counter = 0f;
int deci = -1;
private static int numPerRow = 10;
private static final Format format = new Format(0, true);

//massive byte size means picking up causes sync issues
@Override
Expand Down Expand Up @@ -96,88 +89,40 @@ public void buildConfiguration(Table table){
return;
}

rebuildInfo();
table.add(infoTable);
}

private void rebuildInfo(){
infoTable.clear();
if(!showInfo){
infoTable.button(Icon.pencil, Styles.cleari, () -> {
showInfo = !showInfo;
rebuildInfo();
}).size(40);
return;
}
infoTable.update(()->{
counter+= Time.delta;
if(counter>period){
counter=0;
}
});
infoTable.setColor(Color.lightGray);
infoTable.table(t->{
t.button(Icon.pencil, Styles.cleari, () -> {
showInfo = !showInfo;
rebuildInfo();
}).size(40);
t.button(Icon.refreshSmall,Styles.cleari,()->{
rebuildInfo();
UIExt.announce("已更新内存元!");
}).size(40);

Label rowNum = t.add("每行 "+numPerRow).get();
t.slider(2, 15,1, numPerRow, res -> {
Table vars = new Table();
table.background(Styles.black3);
table.table(t -> {
t.add("每行 " + numPerRow).get();
t.slider(2, 15, 1, numPerRow, res -> {
numPerRow = (int)res;
rowNum.setText("每行 "+numPerRow);
vars.clear();
buildVarsPane(vars);
table.pack();
});

Label deciL = t.add(deci==-1?"不约化":("约化 "+deci)).get();
t.slider(-1, 15,1, deci, res -> {
deci = (int)res;
deciL.setText(deci==-1?"不约化":("约化 "+deci));
});
t.add("保留小数: ");
t.slider(0, 8, 1, format.getDecimal(), res -> format.setDecimal((int)res));
}).row();
table.pane(vars).maxWidth(1000f).maxHeight(500f).pad(4);

Label refresh = t.add("刷新 "+period).get();
t.slider(1, 60,1, 20, res -> {
period = (int)res;
refresh.setText("刷新 "+period);
});
});
infoTable.row();
infoTable.pane(t->{
int index = 0;
for(double v : memory){
Label textR = t.add(index + " ").get();
int finalIndex = index;

t.table(tt->{
Label text = tt.add(showString(memory[finalIndex])).get();
tt.update(()->{
if(counter + Time.delta>period){
textR.setText((memory[finalIndex]==0?"[gray]":"") + finalIndex + " ");
text.setText(showString(memory[finalIndex]));
}
});
tt.touchable = Touchable.enabled;
tt.tapped(()->{
Core.app.setClipboardText(memory[finalIndex]+"");
UIExt.announce("[cyan]复制内存[white]\n " + memory[finalIndex]);
});
});
index+=1;
if(index % numPerRow==0) t.row();
else t.add(" " + ((index % numPerRow) % 2 == 0?"[cyan]":"[acid]") + "|[white] ");
}
}).maxWidth(1000f).maxHeight(500f);
buildVarsPane(vars);
}

public String showString(double number){
if(number == 0) return "[gray]-";
else if(deci == 0 || number == (int)number) return "[orange]" + (int)number + "";
if(deci == -1) return "[orange]" + number + "";
else return "[orange]" + String.format("%." + deci + "f", number) + "";
public void buildVarsPane(Table t){
for(int i = 0; i < memory.length; i++){
int finalI = i;
t.add("" + i).color(Color.lightGray);
t.label(() -> format.format((float)memory[finalI])).padLeft(8)
.touchable(Touchable.enabled).get().tapped(() -> {
Core.app.setClipboardText(memory[finalI] + "");
UIExt.announce("[cyan]复制内存[white]\n " + memory[finalI]);
});
if((i + 1) % numPerRow == 0) t.row();
else t.add("|").color(((i % numPerRow) % 2 == 0) ? Color.cyan : Color.acid)
.padLeft(12).padRight(12);
}
}

@Override
public void read(Reads read, byte revision){
super.read(read, revision);
Expand Down

0 comments on commit 074cf4d

Please sign in to comment.