diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 26bcbcf059..c2acf3841f 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -72,8 +72,6 @@ public class Vars implements Loadable{ public static final int maxTextLength = 150; /** max player name length in bytes */ public static final int maxNameLength = 40; - /** shadow color for turrets */ - public static final float turretShadowColor = Color.toFloatBits(0, 0, 0, 0.22f); /** displayed item size when ingame. */ public static final float itemSize = 5f; /** units outside of this bound will die instantly */ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d1333c8a9a..6d4dc05687 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -208,6 +208,7 @@ public class Blocks implements ContentList{ liquidDrop = Liquids.slag; isLiquid = true; cacheLayer = CacheLayer.slag; + attributes.set(Attribute.heat, 0.85f); }}; stone = new Floor("stone"); @@ -1142,6 +1143,7 @@ public class Blocks implements ContentList{ powerProduction = 1.8f; generateEffect = Fx.redgeneratespark; size = 2; + floating = true; }}; steamGenerator = new BurnerGenerator("steam-generator"){{ diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index d0d7b30ee0..0891cbabd9 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -935,7 +935,7 @@ public class UnitTypes implements ContentList{ drag = 0.016f; flying = true; range = 140f; - hitSize = 18f; + hitSize = 20f; lowAltitude = true; armor = 5f; diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index 4da853049b..685110047a 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -84,6 +84,18 @@ public class Drawf{ Draw.color(); } + public static void shadow(TextureRegion region, float x, float y, float rotation){ + Draw.color(Pal.shadow); + Draw.rect(region, x, y, rotation); + Draw.color(); + } + + public static void shadow(TextureRegion region, float x, float y){ + Draw.color(Pal.shadow); + Draw.rect(region, x, y); + Draw.color(); + } + public static void dashCircle(float x, float y, float rad, Color color){ Lines.stroke(3f, Pal.gray); Lines.dashCircle(x, y, rad); diff --git a/core/src/mindustry/graphics/Pal.java b/core/src/mindustry/graphics/Pal.java index 771697b845..a61b363557 100644 --- a/core/src/mindustry/graphics/Pal.java +++ b/core/src/mindustry/graphics/Pal.java @@ -47,6 +47,7 @@ public class Pal{ darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), darkerGray = new Color(0.2f, 0.2f, 0.2f, 1f), darkestGray = new Color(0.1f, 0.1f, 0.1f, 1f), + shadow = new Color(0, 0, 0, 0.22f), ammo = Color.valueOf("ff8947"), rubble = Color.valueOf("1c1817"), diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 5666789a88..da7fb49b7c 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -34,7 +34,7 @@ import mindustry.world.consumers.*; import static mindustry.Vars.*; public class UnitType extends UnlockableContent{ - public static final float shadowTX = -12, shadowTY = -13, shadowColor = Color.toFloatBits(0, 0, 0, 0.22f), outlineSpace = 0.01f; + public static final float shadowTX = -12, shadowTY = -13, outlineSpace = 0.01f; private static final Vec2 legOffset = new Vec2(); /** If true, the unit is always at elevation 1. */ @@ -409,7 +409,7 @@ public class UnitType extends UnlockableContent{ } public void drawShadow(Unit unit){ - Draw.color(shadowColor); + Draw.color(Pal.shadow); float e = Math.max(unit.elevation, visualElevation); Draw.rect(shadowRegion, unit.x + shadowTX * e, unit.y + shadowTY * e, unit.rotation - 90); Draw.color(); @@ -594,7 +594,7 @@ public class UnitType extends UnlockableContent{ if(leg.moving && visualElevation > 0){ float scl = visualElevation; float elev = Mathf.slope(1f - leg.stage) * scl; - Draw.color(shadowColor); + Draw.color(Pal.shadow); Draw.rect(footRegion, leg.base.x + shadowTX * elev, leg.base.y + shadowTY * elev, position.angleTo(leg.base)); Draw.color(); } diff --git a/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java b/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java index e2fe96f7f5..5602ab3052 100644 --- a/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java +++ b/core/src/mindustry/world/blocks/defense/PointDefenseTurret.java @@ -112,9 +112,7 @@ public class PointDefenseTurret extends Block{ @Override public void draw(){ Draw.rect(baseRegion, x, y); - Draw.color(Vars.turretShadowColor); - Draw.rect(region, x - (size / 2f), y - (size / 2f), rotation - 90); - Draw.color(); + Drawf.shadow(region, x - (size / 2f), y - (size / 2f), rotation - 90); Draw.rect(region, x, y, rotation - 90); } diff --git a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java index f23df69b82..4c500774a4 100644 --- a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java +++ b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java @@ -107,9 +107,7 @@ public class TractorBeamTurret extends Block{ @Override public void draw(){ Draw.rect(baseRegion, x, y); - Draw.color(Vars.turretShadowColor); - Draw.rect(region, x - (size / 2f), y - (size / 2f), rotation - 90); - Draw.color(); + Drawf.shadow(region, x - (size / 2f), y - (size / 2f), rotation - 90); Draw.rect(region, x, y, rotation - 90); //draw laser if applicable diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 69dc25f9ef..21033668a1 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -11,7 +11,6 @@ import arc.struct.*; import arc.util.ArcAnnotate.*; import arc.util.*; import arc.util.io.*; -import mindustry.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.*; @@ -203,9 +202,7 @@ public abstract class Turret extends Block{ tr2.trns(rotation, -recoil); - Draw.color(Vars.turretShadowColor); - Draw.rect(region, x + tr2.x - (size / 2f), y + tr2.y - (size / 2f), rotation - 90); - Draw.color(); + Drawf.shadow(region, x + tr2.x - (size / 2f), y + tr2.y - (size / 2f), rotation - 90); drawer.get(this); if(heatRegion != Core.atlas.find("error")){ diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index 7880c72db6..fa6529fd72 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -188,6 +188,9 @@ public class MassDriver extends Block{ Draw.z(Layer.turret); + Drawf.shadow(region, + x + Angles.trnsx(rotation + 180f, reload * knockback) - (size / 2), + y + Angles.trnsy(rotation + 180f, reload * knockback) - (size / 2), rotation - 90); Draw.rect(region, x + Angles.trnsx(rotation + 180f, reload * knockback), y + Angles.trnsy(rotation + 180f, reload * knockback), rotation - 90); diff --git a/core/src/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/mindustry/world/blocks/power/ThermalGenerator.java index 7146de2959..e29b7a6bdb 100644 --- a/core/src/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/mindustry/world/blocks/power/ThermalGenerator.java @@ -22,7 +22,7 @@ public class ThermalGenerator extends PowerGenerator{ public void setStats(){ super.setStats(); - stats.add(BlockStat.tiles, attribute); + stats.add(BlockStat.tiles, attribute, floating); } @Override diff --git a/core/src/mindustry/world/blocks/units/RepairPoint.java b/core/src/mindustry/world/blocks/units/RepairPoint.java index 609452cc2b..6100e5c61f 100644 --- a/core/src/mindustry/world/blocks/units/RepairPoint.java +++ b/core/src/mindustry/world/blocks/units/RepairPoint.java @@ -6,6 +6,7 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; +import mindustry.*; import mindustry.annotations.Annotations.*; import mindustry.entities.*; import mindustry.gen.*; @@ -70,6 +71,7 @@ public class RepairPoint extends Block{ Draw.rect(baseRegion, x, y); Draw.z(Layer.turret); + Drawf.shadow(region, x - (size / 2), y - (size / 2), rotation - 90); Draw.rect(region, x, y, rotation - 90); if(target != null && Angles.angleDist(angleTo(target), rotation) < 30f){ diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 80b9a3bd37..1e71caa8cb 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -130,7 +130,7 @@ public class UnitFactory extends UnitBlock{ Seq units = Seq.with(plans).map(u -> u.unit).filter(u -> u.unlockedNow()); if(units.any()){ - ItemSelection.buildTable(table, units, () -> currentPlan == -1 ? null : plans[currentPlan].unit, unit -> configure(units.indexOf(unit))); + ItemSelection.buildTable(table, units, () -> currentPlan == -1 ? null : plans[currentPlan].unit, unit -> configure(Structs.indexOf(plans, u -> u.unit == unit))); }else{ table.table(Styles.black3, t -> t.add("@none").color(Color.lightGray)); } diff --git a/core/src/mindustry/world/meta/BlockStats.java b/core/src/mindustry/world/meta/BlockStats.java index 2917a92aa3..e119ff8a74 100644 --- a/core/src/mindustry/world/meta/BlockStats.java +++ b/core/src/mindustry/world/meta/BlockStats.java @@ -38,12 +38,20 @@ public class BlockStats{ } public void add(BlockStat stat, Attribute attr){ - add(stat, attr, 1f); + add(stat, attr, false, 1f); } public void add(BlockStat stat, Attribute attr, float scale){ + add(stat, attr, false, scale); + } + + public void add(BlockStat stat, Attribute attr, boolean floating){ + add(stat, attr, floating, 1f); + } + + public void add(BlockStat stat, Attribute attr, boolean floating, float scale){ for(Block block : Vars.content.blocks()){ - if(!block.isFloor() || block.asFloor().attributes.get(attr) == 0) continue; + if(!block.isFloor() || block.asFloor().attributes.get(attr) == 0 || (block.asFloor().isLiquid && !floating)) continue; add(stat, new FloorEfficiencyValue(block.asFloor(), block.asFloor().attributes.get(attr) * scale)); } }