diff --git a/annotations/src/main/java/mindustry/annotations/BaseProcessor.java b/annotations/src/main/java/mindustry/annotations/BaseProcessor.java index 310f8e2906..e933eafdbf 100644 --- a/annotations/src/main/java/mindustry/annotations/BaseProcessor.java +++ b/annotations/src/main/java/mindustry/annotations/BaseProcessor.java @@ -91,7 +91,7 @@ public abstract class BaseProcessor extends AbstractProcessor{ } public static TypeName tname(String pack, String simple){ - return ClassName.get(pack, simple ); + return ClassName.get(pack, simple); } public static TypeName tname(String name){ diff --git a/core/assets-raw/sprites/blocks/power/rtg-generator.png b/core/assets-raw/sprites/blocks/power/rtg-generator.png index 0a6766ab69..6c95894959 100644 Binary files a/core/assets-raw/sprites/blocks/power/rtg-generator.png and b/core/assets-raw/sprites/blocks/power/rtg-generator.png differ diff --git a/core/assets-raw/sprites/units/weapons/flakgun.png b/core/assets-raw/sprites/units/weapons/flakgun.png deleted file mode 100644 index 12ee89862f..0000000000 Binary files a/core/assets-raw/sprites/units/weapons/flakgun.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/weapons/missiles.png b/core/assets-raw/sprites/units/weapons/missiles.png deleted file mode 100644 index 38c0548ca6..0000000000 Binary files a/core/assets-raw/sprites/units/weapons/missiles.png and /dev/null differ diff --git a/core/assets/sounds/wind3.ogg b/core/assets/sounds/wind3.ogg index 35e732725b..315edc4146 100644 Binary files a/core/assets/sounds/wind3.ogg and b/core/assets/sounds/wind3.ogg differ diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 78c9a33ff4..54768c73ee 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -45,7 +45,7 @@ public class Vars implements Loadable{ /** Name of current Steam player. */ public static String steamPlayerName = ""; /** Default accessible content types used for player-selectable icons. */ - public static final ContentType[] defaultContentIcons = {ContentType.item, ContentType.liquid, ContentType.block}; + public static final ContentType[] defaultContentIcons = {ContentType.item, ContentType.liquid, ContentType.block, ContentType.unit}; /** Wall darkness radius. */ public static final int darkRadius = 4; /** Maximum extra padding around deployment schematics. */ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index e0917e4484..a6879619f1 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -755,8 +755,8 @@ public class Blocks implements ContentList{ rotate = false; solid = true; outputsLiquid = true; - drawer = new DrawMixer(); envEnabled = Env.any; + drawer = new DrawMixer(true); consumes.power(1f); consumes.item(Items.titanium); diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 80859f48bc..ac7352a3ad 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -288,7 +288,7 @@ public class SectorInfo{ public void eachImport(Planet planet, Cons cons){ for(Sector sector : planet.sectors){ Sector dest = sector.info.getRealDestination(); - if(sector.hasBase() && sector.info != this && dest != null && dest.info == this){ + if(sector.hasBase() && sector.info != this && dest != null && dest.info == this && sector.info.anyExports()){ cons.get(sector); } } diff --git a/core/src/mindustry/graphics/Trail.java b/core/src/mindustry/graphics/Trail.java index 5fc194c51d..ebcef4a3ca 100644 --- a/core/src/mindustry/graphics/Trail.java +++ b/core/src/mindustry/graphics/Trail.java @@ -77,6 +77,8 @@ public class Trail{ if(points.size >= 3){ points.removeRange(0, 2); } + + counter = 0f; } } diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 94b4e6fa5d..1fcf1b37d1 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -715,6 +715,7 @@ public class LExecutor{ if((base instanceof Building && timer.get(30f)) || (ai != null && ai.checkTargetTimer(this))){ //if any of the targets involve enemies boolean enemies = target1 == RadarTarget.enemy || target2 == RadarTarget.enemy || target3 == RadarTarget.enemy; + boolean allies = target1 == RadarTarget.ally || target2 == RadarTarget.ally || target3 == RadarTarget.ally; best = null; bestValue = 0; @@ -726,6 +727,11 @@ public class LExecutor{ find(r, range, sortDir, data.items[i].team); } } + }else if(!allies){ + Seq data = state.teams.present; + for(int i = 0; i < data.size; i++){ + find(r, range, sortDir, data.items[i].team); + } }else{ find(r, range, sortDir, r.team()); } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 2914e75809..80f647e409 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -686,7 +686,7 @@ public class UnitType extends UnlockableContent{ } public void drawControl(Unit unit){ - Draw.z(Layer.groundUnit - 2); + Draw.z(unit.isFlying() ? Layer.flyingUnitLow : Layer.groundUnit - 2); Draw.color(Pal.accent, Color.white, Mathf.absin(4f, 0.3f)); Lines.poly(unit.x, unit.y, 4, unit.hitSize + 1.5f); diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 7f8d771664..501804f32e 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -24,6 +24,8 @@ import mindustry.ui.*; import static mindustry.Vars.*; public class JoinDialog extends BaseDialog{ + //TODO unused + Seq commmunityHosts = new Seq<>(); Seq servers = new Seq<>(); Dialog add; Server renaming; @@ -358,6 +360,7 @@ public class JoinDialog extends BaseDialog{ } void refreshCommunity(){ + commmunityHosts.clear(); int cur = refreshes; global.clear(); @@ -378,6 +381,8 @@ public class JoinDialog extends BaseDialog{ if(refreshes != cur) return; res.port = resport; + commmunityHosts.add(res); + //add header if(groupTable[0] == null){ global.table(t -> groupTable[0] = t).row(); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 8c1dc4701d..003a1036be 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -521,7 +521,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ pt.button(planet.localizedName, Styles.clearTogglet, () -> { selected = null; launchSector = null; - renderer.planets.planet = planet; + if(renderer.planets.planet != planet){ + renderer.planets.planet = planet; + rebuildList(); + } settings.put("lastplanet", planet.name); }).width(200).height(40).growX().update(bb -> bb.setChecked(renderer.planets.planet == planet)); pt.row(); diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index dbe7caa19f..bd343988fa 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -60,7 +60,7 @@ public class ResearchDialog extends BaseDialog{ //add global counts of each sector for(Planet planet : content.planets()){ for(Sector sector : planet.sectors){ - if(sector.hasSave() && sector.hasBase()){ + if(sector.hasBase()){ ItemSeq cached = sector.items(); cache.put(sector, cached); cached.each((item, amount) -> { diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index 3dce3ebf0a..a23dfd9881 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -155,7 +155,7 @@ public class SchematicsDialog extends BaseDialog{ }); buttons.button(Icon.pencil, style, () -> { - new Dialog("@schematic.rename"){{ + new BaseDialog("@schematic.rename"){{ setFillParent(true); cont.margin(30); diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 5fc4654cd2..cf54cb6eae 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -207,7 +207,7 @@ public class HudFragment extends Fragment{ logic.skipWave(); } }).growY().fillX().right().width(40f).disabled(b -> !canSkipWave()).name("skip"); - }).width(dsize * 5 + 4f); + }).width(dsize * 5 + 4f).name("statustable"); wavesMain.row(); diff --git a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java index 299b457388..0d0a912a5e 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LaserTurret.java @@ -90,7 +90,7 @@ public class LaserTurret extends PowerTurret{ return; } - if(reload <= 0 && (consValid() || cheating())){ + if(reload <= 0 && (consValid() || cheating()) && !charging){ BulletType type = peekAmmo(); shoot(type); diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 108405ad48..11ba66255b 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -40,6 +40,7 @@ public class Conduit extends LiquidBlock implements Autotiler{ floating = true; conveyorPlacement = true; noUpdateDisabled = true; + canOverdrive = false; } @Override diff --git a/core/src/mindustry/world/blocks/liquid/LiquidRouter.java b/core/src/mindustry/world/blocks/liquid/LiquidRouter.java index d3befe8233..478ccef7d8 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidRouter.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidRouter.java @@ -9,6 +9,7 @@ public class LiquidRouter extends LiquidBlock{ super(name); noUpdateDisabled = true; + canOverdrive = false; } public class LiquidRouterBuild extends LiquidBuild{ diff --git a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java index 1ef6010f2b..a8462502ea 100644 --- a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -29,6 +29,7 @@ public class ItemLiquidGenerator extends PowerGenerator{ public float maxLiquidGenerate = 0.4f; public Effect generateEffect = Fx.generatespark; + public float generateEffectRnd = 3f; public Effect explodeEffect = Fx.generatespark; public Color heatColor = Color.valueOf("ff9b59"); public @Load("@-top") TextureRegion topRegion; @@ -128,12 +129,12 @@ public class ItemLiquidGenerator extends PowerGenerator{ productionEfficiency = baseLiquidEfficiency * used / maximumPossible; if(used > 0.001f && Mathf.chance(0.05 * delta())){ - generateEffect.at(x + Mathf.range(3f), y + Mathf.range(3f)); + generateEffect.at(x + Mathf.range(generateEffectRnd), y + Mathf.range(generateEffectRnd)); } }else if(hasItems){ // No liquids accepted or none supplied, try using items if accepted if(generateTime <= 0f && items.total() > 0){ - generateEffect.at(x + Mathf.range(3f), y + Mathf.range(3f)); + generateEffect.at(x + Mathf.range(generateEffectRnd), y + Mathf.range(generateEffectRnd)); Item item = items.take(); productionEfficiency = getItemEfficiency(item); explosiveness = item.explosiveness; diff --git a/core/src/mindustry/world/blocks/power/PowerGraph.java b/core/src/mindustry/world/blocks/power/PowerGraph.java index 5e5ff19022..80567af1ad 100644 --- a/core/src/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/mindustry/world/blocks/power/PowerGraph.java @@ -176,7 +176,7 @@ public class PowerGraph{ public void distributePower(float needed, float produced, boolean charged){ //distribute even if not needed. this is because some might be requiring power but not using it; it updates consumers - float coverage = Mathf.zero(needed) && Mathf.zero(produced) && !charged ? 0f : Mathf.zero(needed) ? 1f : Math.min(1, produced / needed); + float coverage = Mathf.zero(needed) && Mathf.zero(produced) && !charged && Mathf.zero(lastPowerStored) ? 0f : Mathf.zero(needed) ? 1f : Math.min(1, produced / needed); for(Building consumer : consumers){ Consumers consumes = consumer.block.consumes; if(consumes.hasPower()){ diff --git a/core/src/mindustry/world/blocks/power/SingleTypeGenerator.java b/core/src/mindustry/world/blocks/power/SingleTypeGenerator.java index ff5da52aaa..95919f105b 100644 --- a/core/src/mindustry/world/blocks/power/SingleTypeGenerator.java +++ b/core/src/mindustry/world/blocks/power/SingleTypeGenerator.java @@ -3,6 +3,7 @@ package mindustry.world.blocks.power; import mindustry.type.*; public class SingleTypeGenerator extends ItemLiquidGenerator{ + public boolean useItems = true; public SingleTypeGenerator(String name){ super(name); @@ -11,11 +12,11 @@ public class SingleTypeGenerator extends ItemLiquidGenerator{ @Override protected float getItemEfficiency(Item item){ - return 1f; + return useItems ? 1f : 0f; } @Override protected float getLiquidEfficiency(Liquid liquid){ - return 0f; + return useItems ? 0f : 1f; } } diff --git a/core/src/mindustry/world/blocks/production/SolidPump.java b/core/src/mindustry/world/blocks/production/SolidPump.java index 30dd69ef87..9c2908efef 100644 --- a/core/src/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/mindustry/world/blocks/production/SolidPump.java @@ -40,7 +40,7 @@ public class SolidPump extends Pump{ drawPotentialLinks(x, y); if(attribute != null){ - drawPlaceText(Core.bundle.formatFloat("bar.efficiency", Math.max(sumAttribute(attribute, x, y) / size / size + baseEfficiency, 0f) * 100 * percentSolid(x, y), 1), x, y, valid); + drawPlaceText(Core.bundle.format("bar.efficiency", Math.round(Math.max(sumAttribute(attribute, x, y) / size / size + baseEfficiency, 0f) * 100 * percentSolid(x, y))), x, y, valid); } } diff --git a/core/src/mindustry/world/draw/DrawLiquid.java b/core/src/mindustry/world/draw/DrawLiquid.java index 16cfd14934..ae246a5c67 100644 --- a/core/src/mindustry/world/draw/DrawLiquid.java +++ b/core/src/mindustry/world/draw/DrawLiquid.java @@ -3,18 +3,36 @@ package mindustry.world.draw; import arc.*; import arc.graphics.g2d.*; import mindustry.graphics.*; +import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.production.*; import mindustry.world.blocks.production.GenericCrafter.*; +import mindustry.world.consumers.*; public class DrawLiquid extends DrawBlock{ - public TextureRegion liquid, top; + public TextureRegion inLiquid, liquid, top; + public boolean useOutputSprite = false; + + public DrawLiquid(){ + } + + public DrawLiquid(boolean useOutputSprite){ + this.useOutputSprite = useOutputSprite; + } @Override public void draw(GenericCrafterBuild build){ Draw.rect(build.block.region, build.x, build.y); GenericCrafter type = (GenericCrafter)build.block; + if((inLiquid.found() || useOutputSprite) && type.consumes.has(ConsumeType.liquid)){ + Liquid input = type.consumes.get(ConsumeType.liquid).liquid; + Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y, + build.liquids.get(input) / type.liquidCapacity, + input.color + ); + } + if(type.outputLiquid != null && build.liquids.get(type.outputLiquid.liquid) > 0){ Drawf.liquid(liquid, build.x, build.y, build.liquids.get(type.outputLiquid.liquid) / type.liquidCapacity, @@ -29,6 +47,7 @@ public class DrawLiquid extends DrawBlock{ public void load(Block block){ top = Core.atlas.find(block.name + "-top"); liquid = Core.atlas.find(block.name + "-liquid"); + inLiquid = Core.atlas.find(block.name + "-input-liquid"); } @Override diff --git a/core/src/mindustry/world/draw/DrawMixer.java b/core/src/mindustry/world/draw/DrawMixer.java index 850ac5c6dd..a2ff14b7f8 100644 --- a/core/src/mindustry/world/draw/DrawMixer.java +++ b/core/src/mindustry/world/draw/DrawMixer.java @@ -2,19 +2,37 @@ package mindustry.world.draw; import arc.*; import arc.graphics.g2d.*; +import mindustry.graphics.*; +import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.production.*; import mindustry.world.blocks.production.GenericCrafter.*; +import mindustry.world.consumers.*; public class DrawMixer extends DrawBlock{ - public TextureRegion liquid, top, bottom; + public TextureRegion inLiquid, liquid, top, bottom; + public boolean useOutputSprite; + + public DrawMixer(){ + } + + public DrawMixer(boolean useOutputSprite){ + this.useOutputSprite = useOutputSprite; + } @Override public void draw(GenericCrafterBuild build){ float rotation = build.block.rotate ? build.rotdeg() : 0; - Draw.rect(bottom, build.x, build.y, rotation); + if((inLiquid.found() || useOutputSprite) && build.block.consumes.has(ConsumeType.liquid)){ + Liquid input = build.block.consumes.get(ConsumeType.liquid).liquid; + Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y, + build.liquids.get(input) / build.block.liquidCapacity, + input.color + ); + } + if(build.liquids.total() > 0.001f){ Draw.color(((GenericCrafter)build.block).outputLiquid.liquid.color); Draw.alpha(build.liquids.get(((GenericCrafter)build.block).outputLiquid.liquid) / build.block.liquidCapacity); @@ -27,6 +45,7 @@ public class DrawMixer extends DrawBlock{ @Override public void load(Block block){ + inLiquid = Core.atlas.find(block.name + "-input-liquid"); liquid = Core.atlas.find(block.name + "-liquid"); top = Core.atlas.find(block.name + "-top"); bottom = Core.atlas.find(block.name + "-bottom"); diff --git a/gradle.properties b/gradle.properties index 09cc4bfc63..b38510c7c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,4 +11,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works http.socketTimeout=80000 http.connectionTimeout=80000 -archash=dd43cacc5c5a68bd7160234a97b4fd48d9a816d7 +archash=98c420de77661889ab0330a956d50721f27f33d9 diff --git a/servers_v6.json b/servers_v6.json index 59224c074f..f9bb12257a 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -57,7 +57,7 @@ }, { "name": "Omega", - "address": ["178.170.47.34:20204", "157.90.213.2:30308", "157.90.180.53:25738", "185.86.230.61:25578", "mindustry.me:7172"] + "address": ["yeeth.mindustry.me:2004"] }, { "name": "md.obvilionnetwork.ru", diff --git a/servers_v7.json b/servers_v7.json index eccd6ced6d..b7dbd2b066 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -13,7 +13,7 @@ }, { "name": "Omega", - "address": ["yeet.mindustry.me", "yeet.mindustry.me:2345", "n3.mindustry.me:4444","n2.mindustry.me:4040", "n2.mindustry.me:4002", "n2.mindustry.me:4001", "n3.mindustry.me", "n2.mindustry.me:4004"] + "address": ["yeet.mindustry.me", "yeeth.mindustry.me:2006", "yeeth.mindustry.me:2003","yeeth.mindustry.me:2002", "yeeth.mindustry.me:2001", "yeeth.mindustry.me:2007", "yeeth.mindustry.me:2005"] }, { "name": "MeowLand",