From 5cefecced8af326f5fd91995656096a1c601bc9f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 27 Jun 2018 11:57:37 -0400 Subject: [PATCH] Fixed fog not clearing, movement bug, items stuck in blocks --- build.gradle | 2 +- core/src/io/anuke/mindustry/core/Logic.java | 4 +-- .../src/io/anuke/mindustry/core/Renderer.java | 2 +- .../io/anuke/mindustry/entities/Player.java | 4 +-- .../io/anuke/mindustry/entities/Units.java | 6 ++--- .../mindustry/entities/effect/ItemDrop.java | 6 ++++- .../anuke/mindustry/graphics/FogRenderer.java | 3 +++ .../mindustry/graphics/OverlayRenderer.java | 4 +-- .../mindustry/ui/fragments/DebugFragment.java | 6 +++++ .../mindustry/world/blocks/defense/Door.java | 27 +++++++++++-------- 10 files changed, 40 insertions(+), 24 deletions(-) diff --git a/build.gradle b/build.gradle index dba7e3ef23..20035fcc3f 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ allprojects { gdxVersion = '1.9.8' roboVMVersion = '2.3.0' aiVersion = '1.8.1' - uCoreVersion = 'da40998ac6' + uCoreVersion = 'dbc818f4ab' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 49a54ba3af..21c355a530 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -126,9 +126,7 @@ public class Logic extends Module { Timers.update(); } - if(!debug){ - checkGameOver(); - } + checkGameOver(); if(!state.is(State.paused) || Net.active()){ diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 86881af83a..012aacfc2d 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -151,7 +151,7 @@ public class Renderer extends RendererModule{ Vector2 position = averagePosition(); if(!mobile){ - setCamera(position.x, position.y); + setCamera(position.x + 0.0001f, position.y + 0.0001f); } clampCamera(-tilesize / 2f, -tilesize / 2f + 1, world.width() * tilesize - tilesize / 2f, world.height() * tilesize - tilesize / 2f); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index b71bb35817..40c361b57d 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -279,8 +279,8 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra float px = x, py =y; if(snap){ - x = (int)x; - y = (int)y; + x = (int)(x + 0.0001f); + y = (int)(y + 0.0001f); } float ft = Mathf.sin(walktime, 6f, 2f) * (1f-boostHeat); diff --git a/core/src/io/anuke/mindustry/entities/Units.java b/core/src/io/anuke/mindustry/entities/Units.java index e549b63fe5..86b74a1968 100644 --- a/core/src/io/anuke/mindustry/entities/Units.java +++ b/core/src/io/anuke/mindustry/entities/Units.java @@ -52,11 +52,11 @@ public class Units { boolean[] value = new boolean[1]; Units.getNearby(rect, unit -> { - if(value[0]) return; - if(!unit.isFlying()){ + if (value[0]) return; + if (!unit.isFlying()) { unit.getHitbox(hitrect); - if(hitrect.overlaps(rect)) { + if (hitrect.overlaps(rect)) { value[0] = true; } } diff --git a/core/src/io/anuke/mindustry/entities/effect/ItemDrop.java b/core/src/io/anuke/mindustry/entities/effect/ItemDrop.java index 5858ab2040..690a377fa2 100644 --- a/core/src/io/anuke/mindustry/entities/effect/ItemDrop.java +++ b/core/src/io/anuke/mindustry/entities/effect/ItemDrop.java @@ -166,7 +166,11 @@ public class ItemDrop extends SolidEntity implements SaveTrait, SyncTrait, DrawT Tile tile = world.tileWorld(x, y); - if(tile.floor().isLiquid){ + if(tile != null && tile.solid()){ + CallEntity.onPickup(getID()); + } + + if(tile != null && tile.floor().isLiquid){ sinktime += Timers.delta(); if(Mathf.chance(0.04 * Timers.delta())){ diff --git a/core/src/io/anuke/mindustry/graphics/FogRenderer.java b/core/src/io/anuke/mindustry/graphics/FogRenderer.java index 9dedc18cbc..bd642678ef 100644 --- a/core/src/io/anuke/mindustry/graphics/FogRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/FogRenderer.java @@ -34,6 +34,7 @@ public class FogRenderer implements Disposable{ Events.on(WorldLoadGraphicsEvent.class, () -> { dispose(); buffer = new FrameBuffer(Format.RGBA8888, world.width(), world.height(), false); + changeQueue.clear(); //clear buffer to black buffer.begin(); @@ -101,6 +102,8 @@ public class FogRenderer implements Disposable{ Fill.circle(tile.drawx(), tile.drawy(), tile.block().viewRange); } + changeQueue.clear(); + EntityDraw.setClip(true); Graphics.end(); buffer.end(); diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index c3a7d40351..3feebd3807 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -176,8 +176,8 @@ public class OverlayRenderer { float y = unit.y; if(unit == players[0] && players.length == 1 && snapCamera) { - x = (int)x; - y = (int)y; + x = (int)(x + 0.0001f); + y = (int)(y + 0.0001f); } drawEncloser(x, y - 8f, 2f); diff --git a/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java b/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java index 658a46959e..99e0e03b33 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java @@ -7,6 +7,7 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.units.BaseUnit; import io.anuke.mindustry.entities.units.UnitType; +import io.anuke.mindustry.game.Team; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.ucore.core.Timers; @@ -69,6 +70,11 @@ public class DebugFragment implements Fragment { row(); new button("fog", () -> showFog = !showFog); row(); + new button("gameover", () ->{ + state.teams.get(Team.blue).cores.get(0).entity.health = 0; + state.teams.get(Team.blue).cores.get(0).entity.damage(1); + }); + row(); new button("wave", () -> state.wavetime = 0f); row(); new button("death", () -> player.damage(99999, true)); diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java index 2ede85ae7e..c147d97e48 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/Door.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/Door.java @@ -17,6 +17,8 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import static io.anuke.mindustry.Vars.threads; + public class Door extends Wall{ protected final Rectangle rect = new Rectangle(); @@ -63,17 +65,20 @@ public class Door extends Wall{ @Override public void tapped(Tile tile, Player player){ DoorEntity entity = tile.entity(); - - if(Units.anyEntities(tile) && entity.open){ - return; - } - - entity.open = !entity.open; - if(!entity.open){ - Effects.effect(closefx, tile.drawx(), tile.drawy()); - }else{ - Effects.effect(openfx, tile.drawx(), tile.drawy()); - } + + threads.run(() -> { + + if(Units.anyEntities(tile) && entity.open){ + return; + } + + entity.open = !entity.open; + if(!entity.open){ + Effects.effect(closefx, tile.drawx(), tile.drawy()); + }else{ + Effects.effect(openfx, tile.drawx(), tile.drawy()); + } + }); } @Override