diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 368482a798..c3c7e19247 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -50,8 +50,6 @@ public class Planets{ totalRadius += 2.6f; lightSrcTo = 0.5f; lightDstFrom = 0.2f; - //TODO - alwaysUnlocked = true; }}; makeAsteroid("gier", erekir, Blocks.ferricStoneWall, Blocks.carbonWall, 0.4f, 7, 1f, gen -> { @@ -76,7 +74,6 @@ public class Planets{ startSector = 10; atmosphereRadIn = -0.01f; atmosphereRadOut = 0.3f; - alwaysUnlocked = true; }}; serpulo = new Planet("serpulo", sun, 1f, 3){{ @@ -105,7 +102,6 @@ public class Planets{ private static void makeAsteroid(String name, Planet parent, Block base, Block tint, float tintThresh, int pieces, float scale, Cons cgen){ new Planet(name, parent, 0.12f){{ hasAtmosphere = false; - alwaysUnlocked = true; //for testing only! updateLighting = false; sectors.add(new Sector(this, Ptile.empty)); camRadius = 0.68f * scale; diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 396df73011..77defd4127 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1465,7 +1465,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, if(power != null){ power.graph = new PowerGraph(); power.links.clear(); - power.status = 0f; + if(block.consumes.hasPower() && !block.consumes.getPower().buffered){ + power.status = 0f; + } } } diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 5bd52e7165..556af7476d 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -11,50 +11,59 @@ import mindustry.content.*; import mindustry.core.*; import mindustry.entities.*; import mindustry.game.EventType.*; +import mindustry.game.*; import mindustry.gen.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.payloads.*; +import mindustry.world.blocks.power.*; /** An entity that holds a payload. */ @Component abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{ @Import float x, y, rotation; + @Import Team team; @Import UnitType type; Seq payloads = new Seq<>(); //uncomment for insanity - /* + private transient @Nullable PowerGraph payloadPower; @Override public void update(){ - if(payloadPower != null){ - payloadPower.clear(); - } + if(Vars.state.rules.unitPayloadUpdate){ + if(payloadPower != null){ + payloadPower.clear(); + } - //update power graph first, resolve everything - for(Payload pay : payloads){ - if(pay instanceof BuildPayload pb && pb.build.power != null){ - if(payloadPower == null) payloadPower = new PowerGraph(); + //update power graph first, resolve everything + for(Payload pay : payloads){ + if(pay instanceof BuildPayload pb && pb.build.power != null){ + if(payloadPower == null) payloadPower = new PowerGraph(); - pb.build.power.graph = null; - payloadPower.add(pb.build); + pb.build.team = team; + pb.build.power.graph = null; + payloadPower.add(pb.build); + } + } + + if(payloadPower != null){ + payloadPower.update(); + } + + for(Payload pay : payloads){ + if(pay instanceof BuildPayload build){ + build.build.team = team; + } + pay.set(x, y, rotation); + pay.update(true); } } - - if(payloadPower != null){ - payloadPower.update(); - } - - for(Payload pay : payloads){ - pay.set(x, y, rotation); - pay.update(true); - } - }*/ + } float payloadUsed(){ return payloads.sumf(p -> p.size() * p.size()); diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 4e01e48435..7289947532 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -49,6 +49,8 @@ public class Rules{ public boolean fire = true; /** Whether units use and require ammo. */ public boolean unitAmmo = false; + /** EXPERIMENTAL! If true, blocks will update in units and share power. */ + public boolean unitPayloadUpdate = false; /** Whether cores add to unit limit */ public boolean unitCapVariable = true; /** If true, unit spawn points are shown. */ diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index a0f0c7de7e..3fdee15e27 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -126,7 +126,7 @@ public class Block extends UnlockableContent{ public boolean autoResetEnabled = true; /** if true, the block stops updating when disabled */ public boolean noUpdateDisabled = false; - /** if true, this block updates when it's a payload in a unit. Currently unused! */ + /** if true, this block updates when it's a payload in a unit. */ public boolean updateInUnits = true; /** Whether to use this block's color in the minimap. Only used for overlays. */ public boolean useColor = true; diff --git a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java index ea9ca99e57..da83bd4ae6 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java @@ -36,7 +36,6 @@ public class BaseTurret extends Block{ priority = TargetPriority.turret; group = BlockGroup.turrets; flags = EnumSet.of(BlockFlag.turret); - updateInUnits = false; } @Override diff --git a/core/src/mindustry/world/blocks/power/NuclearReactor.java b/core/src/mindustry/world/blocks/power/NuclearReactor.java index f152cac052..54ec929eb6 100644 --- a/core/src/mindustry/world/blocks/power/NuclearReactor.java +++ b/core/src/mindustry/world/blocks/power/NuclearReactor.java @@ -49,7 +49,6 @@ public class NuclearReactor extends PowerGenerator{ public NuclearReactor(String name){ super(name); - updateInUnits = false; itemCapacity = 30; liquidCapacity = 30; hasItems = true;