Heat turret support

This commit is contained in:
Anuken
2021-12-07 13:48:21 -05:00
parent 3644825dc5
commit c51e755f71
4 changed files with 55 additions and 18 deletions

View File

@@ -33,6 +33,7 @@ import mindustry.world.*;
import mindustry.world.blocks.ConstructBlock.*;
import mindustry.world.blocks.*;
import mindustry.world.blocks.environment.*;
import mindustry.world.blocks.heat.*;
import mindustry.world.blocks.logic.LogicBlock.*;
import mindustry.world.blocks.payloads.*;
import mindustry.world.blocks.power.*;
@@ -40,6 +41,8 @@ import mindustry.world.consumers.*;
import mindustry.world.meta.*;
import mindustry.world.modules.*;
import java.util.*;
import static mindustry.Vars.*;
@EntityDef(value = {Buildingc.class}, isFinal = false, genio = false, serialize = false)
@@ -281,6 +284,23 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return true;
}
public float calculateHeat(float[] sideHeat){
Arrays.fill(sideHeat, 0f);
float heat = 0f;
for(var edge : block.getEdges()){
Building build = nearby(edge.x, edge.y);
if(build != null && build.team == team && build instanceof HeatBlock heater && (!build.block.rotate || (relativeTo(build) + 2) % 4 == build.rotation)){
//heat is distributed across building size
float add = heater.heat() / build.block.size;
sideHeat[Mathf.mod(relativeTo(build), 4)] += add;
heat += add;
}
}
return heat;
}
public void applyBoost(float intensity, float duration){
//do not refresh time scale when getting a weaker intensity
if(intensity >= this.timeScale - 0.001f){