diff --git a/core/assets-raw/sprites/units/revenant.png b/core/assets-raw/sprites/units/revenant.png new file mode 100644 index 0000000000..cbdbe065a1 Binary files /dev/null and b/core/assets-raw/sprites/units/revenant.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 66955c6d72..91bdd75551 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -93,6 +93,7 @@ text.server.kicked.customClient=This server does not support custom builds. Down text.host.info=The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings. text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP. text.hostserver=Host Server +text.hostserver.mobile=Host\nServer text.host=Host text.hosting=[accent]Opening server... text.hosts.refresh=Refresh @@ -340,6 +341,7 @@ text.category.shooting=Shooting setting.fpscap.name=Max FPS setting.fpscap.none=None setting.fpscap.text={0} FPS +setting.difficulty.training=training setting.difficulty.easy=easy setting.difficulty.normal=normal setting.difficulty.hard=hard diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index e5798b39f6..903d3cb131 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -35,6 +35,8 @@ public class Vars{ public static final String crashReportURL = "http://mindustry.us.to/report"; //time between waves in frames (on normal mode) public static final float wavespace = 60 * 60 * 1.5f; + + public static final float mineTransferRange = 300f; //set ridiculously high for now public static final float coreBuildRange = 999999f; //team of the player by default diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 8352554e88..b86a5109fe 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -35,7 +35,7 @@ public class Recipes implements ContentList{ new Recipe(defense, DefenseBlocks.surgeWallLarge, new ItemStack(Items.surgealloy, 12 * 4)); //projectors - new Recipe(defense, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 250)); + new Recipe(defense, DefenseBlocks.mendProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 50), new ItemStack(Items.silicon, 180)); new Recipe(defense, DefenseBlocks.overdriveProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); new Recipe(defense, DefenseBlocks.forceProjector, new ItemStack(Items.lead, 200), new ItemStack(Items.densealloy, 150), new ItemStack(Items.titanium, 150), new ItemStack(Items.silicon, 250)); @@ -54,8 +54,8 @@ public class Recipes implements ContentList{ new Recipe(weapon, TurretBlocks.ripple, new ItemStack(Items.copper, 300), new ItemStack(Items.densealloy, 220), new ItemStack(Items.thorium, 120)); new Recipe(weapon, TurretBlocks.cyclone, new ItemStack(Items.copper, 400), new ItemStack(Items.densealloy, 400), new ItemStack(Items.surgealloy, 200), new ItemStack(Items.plastanium, 150)); new Recipe(weapon, TurretBlocks.fuse, new ItemStack(Items.copper, 450), new ItemStack(Items.densealloy, 450), new ItemStack(Items.surgealloy, 250)); - new Recipe(weapon, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 400), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 400)); - new Recipe(weapon, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 500), new ItemStack(Items.surgealloy, 600), new ItemStack(Items.silicon, 550)); + new Recipe(weapon, TurretBlocks.spectre, new ItemStack(Items.copper, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 500), new ItemStack(Items.plastanium, 350), new ItemStack(Items.thorium, 500)); + new Recipe(weapon, TurretBlocks.meltdown, new ItemStack(Items.copper, 500), new ItemStack(Items.lead, 700), new ItemStack(Items.densealloy, 600), new ItemStack(Items.surgealloy, 650), new ItemStack(Items.silicon, 650)); //DISTRIBUTION new Recipe(distribution, DistributionBlocks.conveyor, new ItemStack(Items.copper, 1)); diff --git a/core/src/io/anuke/mindustry/content/UnitTypes.java b/core/src/io/anuke/mindustry/content/UnitTypes.java index 79d5a6e631..38a62b4b54 100644 --- a/core/src/io/anuke/mindustry/content/UnitTypes.java +++ b/core/src/io/anuke/mindustry/content/UnitTypes.java @@ -8,7 +8,7 @@ import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.type.ContentType; public class UnitTypes implements ContentList{ - public static UnitType drone, alphaDrone, dagger, interceptor, monsoon, titan, fortress, fabricator; + public static UnitType drone, alphaDrone, dagger, wraith, monsoon, revenant, titan, fortress, fabricator; @Override public void load(){ @@ -18,7 +18,7 @@ public class UnitTypes implements ContentList{ speed = 0.2f; maxVelocity = 0.8f; range = 50f; - healSpeed = 0.05f; + healSpeed = 0.25f; health = 60; }}; @@ -46,7 +46,7 @@ public class UnitTypes implements ContentList{ drag = 0.4f; range = 40f; weapon = Weapons.chainBlaster; - health = 180; + health = 150; }}; titan = new UnitType("titan", Titan.class, Titan::new){{ @@ -55,7 +55,7 @@ public class UnitTypes implements ContentList{ drag = 0.4f; range = 10f; weapon = Weapons.flamethrower; - health = 500; + health = 440; }}; fortress = new UnitType("fortress", Fortress.class, Fortress::new){{ @@ -63,11 +63,11 @@ public class UnitTypes implements ContentList{ speed = 0.18f; drag = 0.4f; range = 10f; - weapon = Weapons.flamethrower; + weapon = Weapons.artillery; health = 500; }}; - interceptor = new UnitType("interceptor", Interceptor.class, Interceptor::new){{ + wraith = new UnitType("wraith", Wraith.class, Wraith::new){{ speed = 0.3f; maxVelocity = 1.9f; drag = 0.01f; @@ -85,6 +85,15 @@ public class UnitTypes implements ContentList{ weapon = Weapons.bomber; }}; + revenant = new UnitType("revenant", Revenant.class, Revenant::new){{ + health = 250; + speed = 0.2f; + maxVelocity = 1.4f; + drag = 0.01f; + isFlying = true; + weapon = Weapons.bomber; + }}; + fabricator = new UnitType("fabricator", Fabricator.class, Fabricator::new){{ isFlying = true; drag = 0.01f; @@ -95,7 +104,7 @@ public class UnitTypes implements ContentList{ health = 220; buildPower = 0.9f; minePower = 1.1f; - healSpeed = 0.09f; + healSpeed = 0.55f; toMine = ObjectSet.with(Items.lead, Items.copper, Items.titanium); }}; } diff --git a/core/src/io/anuke/mindustry/content/Weapons.java b/core/src/io/anuke/mindustry/content/Weapons.java index a722e57e1f..d599518c5a 100644 --- a/core/src/io/anuke/mindustry/content/Weapons.java +++ b/core/src/io/anuke/mindustry/content/Weapons.java @@ -7,7 +7,8 @@ import io.anuke.mindustry.type.ContentType; import io.anuke.mindustry.type.Weapon; public class Weapons implements ContentList{ - public static Weapon blaster, blasterSmall, glaiveBlaster, droneBlaster, healBlaster, chainBlaster, shockgun, sapper, swarmer, bomber, bomberTrident, flakgun, flamethrower, missiles; + public static Weapon blaster, blasterSmall, glaiveBlaster, droneBlaster, healBlaster, chainBlaster, shockgun, + sapper, swarmer, bomber, bomberTrident, flakgun, flamethrower, missiles, artillery; @Override public void load(){ @@ -119,6 +120,15 @@ public class Weapons implements ContentList{ ammo = AmmoTypes.flamerThermite; }}; + artillery = new Weapon("artillery"){{ + length = 1f; + reload = 60f; + roundrobin = true; + recoil = 1f; + ejectEffect = ShootFx.shellEjectMedium; + ammo = AmmoTypes.artilleryExplosive; + }}; + sapper = new Weapon("sapper"){{ length = 1.5f; reload = 12f; diff --git a/core/src/io/anuke/mindustry/content/blocks/StorageBlocks.java b/core/src/io/anuke/mindustry/content/blocks/StorageBlocks.java index 5ed63fe208..dee532688d 100644 --- a/core/src/io/anuke/mindustry/content/blocks/StorageBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/StorageBlocks.java @@ -12,7 +12,7 @@ public class StorageBlocks extends BlockList implements ContentList{ @Override public void load(){ core = new CoreBlock("core"){{ - health = 800; + health = 1400; }}; vault = new Vault("vault"){{ diff --git a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java index 0411b4bacd..721f33b094 100644 --- a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java @@ -30,8 +30,8 @@ public class UnitBlocks extends BlockList implements ContentList{ consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)}); }}; - interceptorPad = new UnitPad("interceptor-pad"){{ - type = UnitTypes.interceptor; + interceptorPad = new UnitPad("wraith-pad"){{ + type = UnitTypes.wraith; produceTime = 1800; size = 2; consumes.power(0.1f); diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index db784e4a48..6cf768ac0b 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -169,7 +169,6 @@ public class UI extends SceneModule{ content = new ContentInfoDialog(); sectors = new SectorsDialog(); missions = new MissionDialog(); - graph = new UnlockGraphDialog(); Group group = Core.scene.getRoot(); diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 74086d14fb..c8ca675c5e 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -24,10 +24,7 @@ import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.graphics.Shapes; -import io.anuke.ucore.util.Angles; -import io.anuke.ucore.util.Geometry; -import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Translator; +import io.anuke.ucore.util.*; import java.io.DataInput; import java.io.DataOutput; @@ -246,12 +243,18 @@ public interface BuilderTrait extends Entity{ Item item = tile.floor().drops.item; unit.rotation = Mathf.slerpDelta(unit.rotation, unit.angleTo(tile.worldx(), tile.worldy()), 0.4f); - if(core.items.get(item) < core.tile.block().getMaximumAccepted(core.tile, item) && - Mathf.chance(Timers.delta() * (0.06 - item.hardness * 0.01) * getMinePower())){ + if(Mathf.chance(Timers.delta() * (0.06 - item.hardness * 0.01) * getMinePower())){ - Call.transferItemTo(item, 1, - tile.worldx() + Mathf.range(tilesize / 2f), - tile.worldy() + Mathf.range(tilesize / 2f), core.tile); + if(unit.distanceTo(core) < mineTransferRange && core.items.get(item) < core.tile.block().getMaximumAccepted(core.tile, item)){ + Call.transferItemTo(item, 1, + tile.worldx() + Mathf.range(tilesize / 2f), + tile.worldy() + Mathf.range(tilesize / 2f), core.tile); + }else if(unit.inventory.canAcceptItem(item)){ + Call.transferItemToUnit(item, + tile.worldx() + Mathf.range(tilesize / 2f), + tile.worldy() + Mathf.range(tilesize / 2f), + unit); + } } if(Mathf.chance(0.06 * Timers.delta())){ diff --git a/core/src/io/anuke/mindustry/entities/units/UnitType.java b/core/src/io/anuke/mindustry/entities/units/UnitType.java index bd4d8d037b..fb22a63e0e 100644 --- a/core/src/io/anuke/mindustry/entities/units/UnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/UnitType.java @@ -41,7 +41,7 @@ public class UnitType extends UnlockableContent{ public float carryWeight = 1f; public int itemCapacity = 30; public ObjectSet toMine = ObjectSet.with(Items.lead, Items.copper); - public float buildPower = 0.3f, minePower = 0.7f, healSpeed = 0.1f; + public float buildPower = 0.3f, minePower = 0.7f, healSpeed = 2f; public Weapon weapon = Weapons.blaster; public float weaponOffsetX, weaponOffsetY; public Color trailColor = Color.valueOf("ffa665"); diff --git a/core/src/io/anuke/mindustry/entities/units/types/Drone.java b/core/src/io/anuke/mindustry/entities/units/types/Drone.java index 3f1585e059..0144f827af 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Drone.java +++ b/core/src/io/anuke/mindustry/entities/units/types/Drone.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.entities.units.types; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.utils.Queue; import io.anuke.mindustry.content.blocks.Blocks; +import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.entities.effect.ItemDrop; @@ -23,6 +24,7 @@ import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.BuildBlock; import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity; import io.anuke.mindustry.world.meta.BlockFlag; +import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Events; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.EntityGroup; @@ -43,6 +45,7 @@ import static io.anuke.mindustry.Vars.*; public class Drone extends FlyingUnit implements BuilderTrait{ protected static float discoverRange = 120f; protected static boolean initialized; + protected static int timerRepairEffect = timerIndex++; protected Item targetItem; protected Tile mineTile; @@ -116,8 +119,11 @@ public class Drone extends FlyingUnit implements BuilderTrait{ circle(type.range); }else{ TileEntity entity = (TileEntity) target; - entity.health += type.healSpeed * Timers.delta(); - entity.health = Mathf.clamp(entity.health, 0, entity.tile.block().health); + entity.healBy(type.healSpeed * entity.tile.block().health / 100f * Timers.delta()); + + if(timer.get(timerRepairEffect, 30)){ + Effects.effect(BlockFx.healBlockFull, Palette.heal, entity.x, entity.y, entity.tile.block().size); + } } } }, diff --git a/core/src/io/anuke/mindustry/entities/units/types/Revenant.java b/core/src/io/anuke/mindustry/entities/units/types/Revenant.java new file mode 100644 index 0000000000..65aa6d2c15 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/units/types/Revenant.java @@ -0,0 +1,6 @@ +package io.anuke.mindustry.entities.units.types; + +import io.anuke.mindustry.entities.units.FlyingUnit; + +public class Revenant extends FlyingUnit{ +} diff --git a/core/src/io/anuke/mindustry/entities/units/types/Interceptor.java b/core/src/io/anuke/mindustry/entities/units/types/Wraith.java similarity index 70% rename from core/src/io/anuke/mindustry/entities/units/types/Interceptor.java rename to core/src/io/anuke/mindustry/entities/units/types/Wraith.java index e37188a99d..5033690101 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Interceptor.java +++ b/core/src/io/anuke/mindustry/entities/units/types/Wraith.java @@ -2,6 +2,6 @@ package io.anuke.mindustry.entities.units.types; import io.anuke.mindustry.entities.units.FlyingUnit; -public class Interceptor extends FlyingUnit{ +public class Wraith extends FlyingUnit{ } diff --git a/core/src/io/anuke/mindustry/game/Difficulty.java b/core/src/io/anuke/mindustry/game/Difficulty.java index 643692dab6..bfbbdd1e90 100644 --- a/core/src/io/anuke/mindustry/game/Difficulty.java +++ b/core/src/io/anuke/mindustry/game/Difficulty.java @@ -3,7 +3,8 @@ package io.anuke.mindustry.game; import io.anuke.ucore.util.Bundles; public enum Difficulty{ - easy(1.2f, 1.5f), + training(3f, 3f), + easy(1.4f, 1.5f), normal(1f, 1f), hard(0.5f, 0.75f), insane(0.25f, 0.5f); diff --git a/core/src/io/anuke/mindustry/game/Waves.java b/core/src/io/anuke/mindustry/game/Waves.java index 02134030e6..792f0add0b 100644 --- a/core/src/io/anuke/mindustry/game/Waves.java +++ b/core/src/io/anuke/mindustry/game/Waves.java @@ -16,7 +16,7 @@ public class Waves{ unitScaling = 1; }}, - new SpawnGroup(UnitTypes.interceptor){{ + new SpawnGroup(UnitTypes.wraith){{ begin = 12; end = 14; }}, @@ -69,7 +69,7 @@ public class Waves{ effect = StatusEffects.overdrive; }}, - new SpawnGroup(UnitTypes.interceptor){{ + new SpawnGroup(UnitTypes.wraith){{ begin = 16; unitScaling = 2; spacing = 2; @@ -124,7 +124,7 @@ public class Waves{ max = 8; }}, - new SpawnGroup(UnitTypes.interceptor){{ + new SpawnGroup(UnitTypes.wraith){{ begin = 50; unitAmount = 4; unitScaling = 3; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java index 401cfc9515..7a8942b15c 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/PausedDialog.java @@ -106,7 +106,7 @@ public class PausedDialog extends FloatingDialog{ content().row(); content().addRowImageTextButton("$text.load", "icon-load", isize, load::show).disabled(b -> Net.active()); - content().addRowImageTextButton("$text.host", "icon-host", isize, ui.host::show).disabled(b -> Net.active()); + content().addRowImageTextButton("$text.hostserver.mobile", "icon-host", isize, ui.host::show).disabled(b -> Net.active()); content().addRowImageTextButton("$text.quit", "icon-quit", isize, () -> { ui.showConfirm("$text.confirm", "$text.quit.confirm", () -> { if(Net.client()) netClient.disconnectQuietly(); diff --git a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java index 08c92cd5e8..9cf67392bd 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java @@ -128,7 +128,7 @@ public class MenuFragment extends Fragment{ out.add(new MenuButton("icon-menu", "$text.changelog.title", ui.changelog::show)); - out.add(new MenuButton("icon-unlocks", "$text.unlocks", ui.graph::show)); + out.add(new MenuButton("icon-unlocks", "$text.unlocks", ui.unlocks::show)); out.row(); diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java index 506354c8e2..86d3bb641d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/MendProjector.java @@ -16,6 +16,10 @@ import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.util.Mathf; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.world; @@ -126,5 +130,17 @@ public class MendProjector extends Block{ float heat; float charge; float phaseHeat; + + @Override + public void write(DataOutputStream stream) throws IOException{ + stream.writeFloat(heat); + stream.writeFloat(phaseHeat); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + heat = stream.readFloat(); + phaseHeat = stream.readFloat(); + } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java index 631d48ad0d..0c07aa646e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/OverdriveProjector.java @@ -16,6 +16,10 @@ import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.util.Mathf; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + import static io.anuke.mindustry.Vars.tilesize; import static io.anuke.mindustry.Vars.world; @@ -127,5 +131,17 @@ public class OverdriveProjector extends Block{ float heat; float charge; float phaseHeat; + + @Override + public void write(DataOutputStream stream) throws IOException{ + stream.writeFloat(heat); + stream.writeFloat(phaseHeat); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + heat = stream.readFloat(); + phaseHeat = stream.readFloat(); + } } } \ No newline at end of file diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index 72f8756517..2cd79ac7c1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -185,24 +185,16 @@ public class Conveyor extends Block{ float centerDstScl = 3f; float tx = Geometry.d4[tile.getRotation()].x, ty = Geometry.d4[tile.getRotation()].y; - float min; float centerx = 0f, centery = 0f; if(Math.abs(tx) > Math.abs(ty)){ - float rx = tile.worldx() - tx / 2f * tilesize; - min = Mathf.clamp((unit.x - rx) * tx / tilesize); centery = Mathf.clamp((tile.worldy() - unit.y) / centerDstScl, -centerSpeed, centerSpeed); if(Math.abs(tile.worldy() - unit.y) < 1f) centery = 0f; }else{ - float ry = tile.worldy() - ty / 2f * tilesize; - min = Mathf.clamp((unit.y - ry) * ty / tilesize); centerx = Mathf.clamp((tile.worldx() - unit.x) / centerDstScl, -centerSpeed, centerSpeed); if(Math.abs(tile.worldx() - unit.x) < 1f) centerx = 0f; } - entity.minCarry = Math.min(entity.minCarry, min); - entity.carrying += unit.getMass(); - if(entity.convey.size * itemSpace < 0.9f){ unit.getVelocity().add((tx * speed + centerx) * entity.delta(), (ty * speed + centery) * entity.delta()); } @@ -215,7 +207,6 @@ public class Conveyor extends Block{ entity.minitem = 1f; int minremove = Integer.MAX_VALUE; - float speed = Math.max(this.speed - (1f - (carryCapacity - entity.carrying) / carryCapacity), 0f); for(int i = entity.convey.size - 1; i >= 0; i--){ long value = entity.convey.get(i); @@ -228,9 +219,6 @@ public class Conveyor extends Block{ } float nextpos = (i == entity.convey.size - 1 ? 100f : pos2.set(entity.convey.get(i + 1), ItemPos.updateShorts).y) - itemSpace; - if(entity.minCarry >= pos.y && entity.minCarry <= nextpos){ - nextpos = entity.minCarry; - } float maxmove = Math.min(nextpos - pos.y, speed * entity.delta()); if(maxmove > minmove){ @@ -260,9 +248,6 @@ public class Conveyor extends Block{ entity.clogHeat = Mathf.lerpDelta(entity.clogHeat, 0f, 1f); } - entity.carrying = 0f; - entity.minCarry = 2f; - if(entity.items.total() == 0){ entity.sleep(); }else{ @@ -366,9 +351,6 @@ public class Conveyor extends Block{ ConveyorEntity entity = tile.entity(); Array arr = super.getDebugInfo(tile); arr.addAll(Array.with( - "mincarry", entity.minCarry, - "minitem", entity.minCarry, - "carrying", entity.carrying, "clogHeat", entity.clogHeat, "sleeping", entity.isSleeping() )); @@ -384,8 +366,6 @@ public class Conveyor extends Block{ LongArray convey = new LongArray(); float minitem = 1; - float carrying; - float minCarry = 2f; int blendshadowrot = -1; int blendbits; diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 00347950c5..5d8af4f5a4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -162,6 +162,11 @@ public class CoreBlock extends StorageBlock{ } } + @Override + public int getMaximumAccepted(Tile tile, Item item){ + return itemCapacity; + } + @Override public boolean acceptItem(Item item, Tile tile, Tile source){ return tile.entity.items.get(item) < itemCapacity && item.type == ItemType.material;