From 5582a8bf1baf14160be3b6c5a02b9890f7d20c9f Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 Oct 2020 13:13:54 -0400 Subject: [PATCH] Fixed #3153 / Fixed #3152 --- core/assets/bundles/bundle.properties | 2 ++ core/src/mindustry/core/Logic.java | 2 +- core/src/mindustry/entities/Predict.java | 12 +++++------ core/src/mindustry/input/InputHandler.java | 23 ++++------------------ core/src/mindustry/type/UnitType.java | 6 ++++++ core/src/mindustry/world/meta/Stat.java | 2 ++ 6 files changed, 21 insertions(+), 26 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 6306e04bbe..4ce05d5e0f 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -649,6 +649,8 @@ stat.minetier = Mine Tier stat.payloadcapacity = Payload Capacity stat.commandlimit = Command Limit stat.abilities = Abilities +stat.canboost = Can Boost +stat.flying = Flying ability.forcefield = Force Field ability.repairfield = Repair Field diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index f033c1e650..ce08b21c0a 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -245,7 +245,7 @@ public class Logic implements ApplicationListener{ if(!(content instanceof UnlockableContent u)) return; state.rules.researched.add(u.name); - ui.hudfrag.showUnlock(u); + Events.fire(new UnlockEvent(u)); } @Override diff --git a/core/src/mindustry/entities/Predict.java b/core/src/mindustry/entities/Predict.java index 03c41e5778..4186ef4bbb 100644 --- a/core/src/mindustry/entities/Predict.java +++ b/core/src/mindustry/entities/Predict.java @@ -53,13 +53,13 @@ public class Predict{ public static Vec2 intercept(Position src, Position dst, float v){ float ddx = 0, ddy = 0; - if(dst instanceof Hitboxc){ - ddx += ((Hitboxc)dst).deltaX(); - ddy += ((Hitboxc)dst).deltaY(); + if(dst instanceof Hitboxc h){ + ddx += h.deltaX(); + ddy += h.deltaY(); } - if(src instanceof Hitboxc){ - ddx -= ((Hitboxc)src).deltaX()/(Time.delta); - ddy -= ((Hitboxc)src).deltaY()/(Time.delta); + if(src instanceof Hitboxc h){ + ddx -= h.deltaX()/(Time.delta); + ddy -= h.deltaY()/(Time.delta); } return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v); } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 7cd53c2789..c282feaba5 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -87,7 +87,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ to.addItem(item, removed); for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){ - Time.run(j * 3f, () -> Call.transferItemEffect(item, build.x, build.y, to)); + Time.run(j * 3f, () -> transferItemEffect(item, build.x, build.y, to)); } } @@ -100,7 +100,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ @Remote(called = Loc.server, unreliable = true) public static void transferItemTo(Item item, int amount, float x, float y, Building build){ if(build == null || build.items == null) return; - for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){ + for(int i = 0; i < Mathf.clamp(amount / 5, 1, 8); i++){ Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {})); } build.items.add(item, amount); @@ -135,13 +135,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ //remove item for every controlling unit player.unit().eachGroup(unit -> { - int removed = Math.min(unit.maxAccepted(item), tile.removeStack(item, amount)); - - unit.addItem(item, removed); - - for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){ - Time.run(j * 3f, () -> Call.transferItemEffect(item, tile.x, tile.y, unit)); - } + Call.takeItems(tile, item, unit.maxAccepted(item), unit); if(unit == player.unit()){ Events.fire(new WithdrawEvent(tile, player, item, amount)); @@ -167,16 +161,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int accepted = tile.acceptStack(item, unit.stack.amount, unit); unit.stack.amount -= accepted; - tile.getStackOffset(item, stackTrns); - tile.handleStack(item, accepted, unit); - - createItemTransfer( - item, - accepted, - unit.x + Angles.trnsx(unit.rotation + 180f, backTrns), unit.y + Angles.trnsy(unit.rotation + 180f, backTrns), - new Vec2(tile.x + stackTrns.x, tile.y + stackTrns.y), - () -> {} - ); + Call.transferItemTo(item, accepted, unit.x, unit.y, tile); if(unit == player.unit()){ Events.fire(new DepositEvent(tile, player, item, accepted)); diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 531a739579..2c425c0223 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -214,6 +214,12 @@ public class UnitType extends UnlockableContent{ } } + stats.add(Stat.flying, flying); + + if(!flying){ + stats.add(Stat.canBoost, canBoost); + } + if(inst instanceof Minerc && mineTier >= 1){ stats.addPercent(Stat.mineSpeed, mineSpeed); stats.add(Stat.mineTier, new BlockFilterValue(b -> b instanceof Floor f && f.itemDrop != null && f.itemDrop.hardness <= mineTier && !f.playerUnmineable)); diff --git a/core/src/mindustry/world/meta/Stat.java b/core/src/mindustry/world/meta/Stat.java index 21ad80c675..718dbb8f2d 100644 --- a/core/src/mindustry/world/meta/Stat.java +++ b/core/src/mindustry/world/meta/Stat.java @@ -18,6 +18,7 @@ public enum Stat{ heatCapacity, viscosity, temperature, + flying, speed, buildSpeed, mineSpeed, @@ -28,6 +29,7 @@ public enum Stat{ lightningChance, lightningDamage, abilities, + canBoost, itemCapacity(StatCat.items), itemsMoved(StatCat.items),