diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index b08d5d0c5f..a6fe69c9aa 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -380,6 +380,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, for(var edge : block.getEdges()){ Building build = nearby(edge.x, edge.y); if(build != null && build.team == team && build instanceof HeatBlock heater){ + //massive hack but I don't really care anymore + if(heater instanceof HeatConductorBuild cond){ + cond.updateHeat(); + } boolean split = build.block instanceof HeatConductor cond && cond.splitHeat; // non-routers must face us, routers must face away - next to a redirector, they're forced to face away due to cycles anyway diff --git a/core/src/mindustry/world/blocks/heat/HeatConductor.java b/core/src/mindustry/world/blocks/heat/HeatConductor.java index b742388501..8ca9446de3 100644 --- a/core/src/mindustry/world/blocks/heat/HeatConductor.java +++ b/core/src/mindustry/world/blocks/heat/HeatConductor.java @@ -4,6 +4,7 @@ import arc.*; import arc.graphics.g2d.*; import arc.struct.*; import arc.util.*; +import mindustry.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -52,6 +53,7 @@ public class HeatConductor extends Block{ public float heat = 0f; public float[] sideHeat = new float[4]; public IntSet cameFrom = new IntSet(); + public long lastHeatUpdate = -1; @Override public void draw(){ @@ -76,6 +78,13 @@ public class HeatConductor extends Block{ @Override public void updateTile(){ + updateHeat(); + } + + public void updateHeat(){ + if(lastHeatUpdate == Vars.state.updateId) return; + + lastHeatUpdate = Vars.state.updateId; heat = calculateHeat(sideHeat, cameFrom); }