This commit is contained in:
Anuken
2020-10-27 13:13:54 -04:00
parent 6eab4ebd1c
commit 5582a8bf1b
6 changed files with 21 additions and 26 deletions

View File

@@ -649,6 +649,8 @@ stat.minetier = Mine Tier
stat.payloadcapacity = Payload Capacity stat.payloadcapacity = Payload Capacity
stat.commandlimit = Command Limit stat.commandlimit = Command Limit
stat.abilities = Abilities stat.abilities = Abilities
stat.canboost = Can Boost
stat.flying = Flying
ability.forcefield = Force Field ability.forcefield = Force Field
ability.repairfield = Repair Field ability.repairfield = Repair Field

View File

@@ -245,7 +245,7 @@ public class Logic implements ApplicationListener{
if(!(content instanceof UnlockableContent u)) return; if(!(content instanceof UnlockableContent u)) return;
state.rules.researched.add(u.name); state.rules.researched.add(u.name);
ui.hudfrag.showUnlock(u); Events.fire(new UnlockEvent(u));
} }
@Override @Override

View File

@@ -53,13 +53,13 @@ public class Predict{
public static Vec2 intercept(Position src, Position dst, float v){ public static Vec2 intercept(Position src, Position dst, float v){
float ddx = 0, ddy = 0; float ddx = 0, ddy = 0;
if(dst instanceof Hitboxc){ if(dst instanceof Hitboxc h){
ddx += ((Hitboxc)dst).deltaX(); ddx += h.deltaX();
ddy += ((Hitboxc)dst).deltaY(); ddy += h.deltaY();
} }
if(src instanceof Hitboxc){ if(src instanceof Hitboxc h){
ddx -= ((Hitboxc)src).deltaX()/(Time.delta); ddx -= h.deltaX()/(Time.delta);
ddy -= ((Hitboxc)src).deltaY()/(Time.delta); ddy -= h.deltaY()/(Time.delta);
} }
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v); return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v);
} }

View File

@@ -87,7 +87,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
to.addItem(item, removed); to.addItem(item, removed);
for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){ 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) @Remote(called = Loc.server, unreliable = true)
public static void transferItemTo(Item item, int amount, float x, float y, Building build){ public static void transferItemTo(Item item, int amount, float x, float y, Building build){
if(build == null || build.items == null) return; 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, () -> {})); Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {}));
} }
build.items.add(item, amount); build.items.add(item, amount);
@@ -135,13 +135,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
//remove item for every controlling unit //remove item for every controlling unit
player.unit().eachGroup(unit -> { player.unit().eachGroup(unit -> {
int removed = Math.min(unit.maxAccepted(item), tile.removeStack(item, amount)); Call.takeItems(tile, item, unit.maxAccepted(item), unit);
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));
}
if(unit == player.unit()){ if(unit == player.unit()){
Events.fire(new WithdrawEvent(tile, player, item, amount)); 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); int accepted = tile.acceptStack(item, unit.stack.amount, unit);
unit.stack.amount -= accepted; unit.stack.amount -= accepted;
tile.getStackOffset(item, stackTrns); Call.transferItemTo(item, accepted, unit.x, unit.y, tile);
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),
() -> {}
);
if(unit == player.unit()){ if(unit == player.unit()){
Events.fire(new DepositEvent(tile, player, item, accepted)); Events.fire(new DepositEvent(tile, player, item, accepted));

View File

@@ -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){ if(inst instanceof Minerc && mineTier >= 1){
stats.addPercent(Stat.mineSpeed, mineSpeed); 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)); stats.add(Stat.mineTier, new BlockFilterValue(b -> b instanceof Floor f && f.itemDrop != null && f.itemDrop.hardness <= mineTier && !f.playerUnmineable));

View File

@@ -18,6 +18,7 @@ public enum Stat{
heatCapacity, heatCapacity,
viscosity, viscosity,
temperature, temperature,
flying,
speed, speed,
buildSpeed, buildSpeed,
mineSpeed, mineSpeed,
@@ -28,6 +29,7 @@ public enum Stat{
lightningChance, lightningChance,
lightningDamage, lightningDamage,
abilities, abilities,
canBoost,
itemCapacity(StatCat.items), itemCapacity(StatCat.items),
itemsMoved(StatCat.items), itemsMoved(StatCat.items),