Skip to content

Commit 0fa7bc6

Browse files
committed
Fix having multiple space part draws at the same time break everything
Cursed shenanigans
1 parent 8ad36af commit 0fa7bc6

File tree

1 file changed

+38
-6
lines changed

1 file changed

+38
-6
lines changed

src/progressed/entities/part/SpacePart.java

+38-6
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
import arc.*;
44
import arc.graphics.*;
55
import arc.graphics.g2d.*;
6+
import arc.struct.*;
67
import arc.util.*;
78
import mindustry.entities.part.*;
9+
import mindustry.game.EventType.*;
810
import progressed.graphics.*;
911

1012
import static mindustry.Vars.*;
1113

1214
public class SpacePart extends DrawPart{
15+
private static ObjectMap<Float, Seq<SpaceData>> draws;
16+
1317
/** Appended to unit/weapon/block name and drawn. */
1418
public String suffix = "";
1519
/** Overrides suffix if set. */
@@ -19,16 +23,32 @@ public class SpacePart extends DrawPart{
1923

2024
public SpacePart(String suffix){
2125
this.suffix = suffix;
26+
27+
if(draws == null){
28+
draws = new ObjectMap<>();
29+
30+
Events.run(Trigger.drawOver, () -> {
31+
for(Float layer : draws.keys()){
32+
Seq<SpaceData> datas = draws.get(layer);
33+
Draw.draw(layer, () -> {
34+
renderer.effectBuffer.begin(Color.clear);
35+
for(SpaceData data : datas){
36+
Draw.rect(data.region, data.x, data.y, data.rot);
37+
}
38+
renderer.effectBuffer.end();
39+
renderer.effectBuffer.blit(PMShaders.smallSpaceShader);
40+
});
41+
}
42+
draws.clear();
43+
});
44+
}
2245
}
2346

2447
@Override
2548
public void draw(PartParams params){
26-
Draw.draw(layer > 0 ? layer : Draw.z(), () -> {
27-
renderer.effectBuffer.begin(Color.clear);
28-
Draw.rect(region, params.x, params.y, params.rotation - 90f);
29-
renderer.effectBuffer.end();
30-
renderer.effectBuffer.blit(PMShaders.smallSpaceShader);
31-
});
49+
float l = layer > 0 ? layer : Draw.z();
50+
Seq<SpaceData> data = draws.get(l, Seq::new);
51+
data.add(new SpaceData(params.x, params.y, params.rotation - 90f, region));
3252
}
3353

3454
@Override
@@ -37,4 +57,16 @@ public void load(String name){
3757

3858
region = Core.atlas.find(realName);
3959
}
60+
61+
private static class SpaceData{
62+
float x, y, rot;
63+
TextureRegion region;
64+
65+
private SpaceData(float x, float y, float rot, TextureRegion region){
66+
this.x = x;
67+
this.y = y;
68+
this.rot = rot;
69+
this.region = region;
70+
}
71+
}
4072
}

0 commit comments

Comments
 (0)