From d6532c26bbe93198f9f1865917f5678bc6d4b1ed Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 10 Jan 2018 10:28:43 -0500 Subject: [PATCH] Bugfixes for 3.3 beta --- android/AndroidManifest.xml | 4 ++-- core/src/io/anuke/mindustry/core/NetClient.java | 12 +++++++----- core/src/io/anuke/mindustry/core/NetServer.java | 7 +++---- core/src/io/anuke/mindustry/entities/Player.java | 4 ++-- .../anuke/mindustry/entities/enemies/EnemyType.java | 12 ++++++------ .../io/anuke/mindustry/ui/dialogs/FileChooser.java | 13 ++++++++----- .../anuke/mindustry/ui/fragments/ChatFragment.java | 2 +- .../mindustry/ui/fragments/PlacementFragment.java | 3 ++- 8 files changed, 31 insertions(+), 26 deletions(-) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index a111ec0bae..8e9131fbce 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="49" + android:versionName="3.3b1" > diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index 6d00c15242..b93fc1b0f2 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -139,7 +139,7 @@ public class NetClient extends Module { Player player = Vars.control.playerGroup.getByID(packet.playerid); Weapon weapon = (Weapon) Upgrade.getByID(packet.weaponid); - weapon.shoot(player, packet.x, packet.y, packet.rotation); + Gdx.app.postRunnable(() -> weapon.shoot(player, packet.x, packet.y, packet.rotation)); }); Net.handle(PlacePacket.class, packet -> { @@ -183,14 +183,16 @@ public class NetClient extends Module { Net.handle(BulletPacket.class, packet -> { //TODO shoot effects for enemies, clientside as well as serverside BulletType type = (BulletType) BaseBulletType.getByID(packet.type); - Entity owner = Vars.control.enemyGroup.getByID(packet.owner); - new Bullet(type, owner, packet.x, packet.y, packet.angle).add(); + Gdx.app.postRunnable(() -> { + Entity owner = Vars.control.enemyGroup.getByID(packet.owner); + new Bullet(type, owner, packet.x, packet.y, packet.angle).add(); + }); }); Net.handle(BlockDestroyPacket.class, packet -> { Tile tile = Vars.world.tile(packet.position % Vars.world.width(), packet.position / Vars.world.width()); if(tile.entity != null){ - tile.entity.onDeath(true); + Gdx.app.postRunnable(() -> tile.entity.onDeath(true)); } }); @@ -227,7 +229,7 @@ public class NetClient extends Module { Player player = Vars.control.playerGroup.getByID(packet.playerid); if(player != null){ - player.remove(); + Gdx.app.postRunnable(player::remove); } }); diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 6e27351e29..197a00eb9e 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -87,8 +87,7 @@ public class NetServer extends Module{ } sendMessage("[accent]"+Bundles.format("text.server.disconnected", player.name)); - - player.remove(); + Gdx.app.postRunnable(player::remove); DisconnectPacket dc = new DisconnectPacket(); dc.playerid = player.id; @@ -112,7 +111,7 @@ public class NetServer extends Module{ }); Net.handleServer(PlacePacket.class, packet -> { - Vars.control.input.placeBlockInternal(packet.x, packet.y, Block.getByID(packet.block), packet.rotation, true, false); + Gdx.app.postRunnable(() -> Vars.control.input.placeBlockInternal(packet.x, packet.y, Block.getByID(packet.block), packet.rotation, true, false)); packet.playerid = connections.get(Net.getLastConnection()).id; Recipe recipe = Recipes.getByResult(Block.getByID(packet.block)); @@ -126,7 +125,7 @@ public class NetServer extends Module{ }); Net.handleServer(BreakPacket.class, packet -> { - Vars.control.input.breakBlockInternal(packet.x, packet.y, false); + Gdx.app.postRunnable(() -> Vars.control.input.breakBlockInternal(packet.x, packet.y, false)); packet.playerid = connections.get(Net.getLastConnection()).id; Net.sendExcept(Net.getLastConnection(), packet, SendMode.tcp); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 7662e5f59a..2ebf1c70f2 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -89,7 +89,7 @@ public class Player extends DestructibleEntity implements Syncable{ angle = Mathf.lerpAngDelta(angle, targetAngle, 0.2f); } - if((Vars.debug && (!Vars.showPlayer || !Vars.showUI)) || (isAndroid && isLocal)) return; + if((Vars.debug && (!Vars.showPlayer || !Vars.showUI)) || (isAndroid && isLocal) ) return; boolean snap = Vars.snapCamera && Settings.getBool("smoothcam") && Settings.getBool("pixelate") && isLocal; String part = isAndroid ? "ship" : "mech"; @@ -116,7 +116,7 @@ public class Player extends DestructibleEntity implements Syncable{ @Override public void update(){ - if(!isLocal || isAndroid){ + if(!isLocal || isAndroid || Vars.ui.chatfrag.chatOpen()){ if(!isDead() && !isLocal) inter.update(this); return; } diff --git a/core/src/io/anuke/mindustry/entities/enemies/EnemyType.java b/core/src/io/anuke/mindustry/entities/enemies/EnemyType.java index 0f595d5ce9..853a773124 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/EnemyType.java +++ b/core/src/io/anuke/mindustry/entities/enemies/EnemyType.java @@ -209,14 +209,14 @@ public class EnemyType { public void onShoot(Enemy enemy, BulletType type, float rotation){} public void onDeath(Enemy enemy){ - Effects.effect(Fx.explosion, enemy); - Effects.shake(3f, 4f, enemy); - Effects.sound("bang2", enemy); - enemy.remove(); - enemy.dead = true; - if(Net.active() && Net.server()){ Vars.netServer.handleEnemyDeath(enemy); + }else if(!Net.active()){ //must be client + Effects.effect(Fx.explosion, enemy); + Effects.shake(3f, 4f, enemy); + Effects.sound("bang2", enemy); + enemy.remove(); + enemy.dead = true; } } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java index b07cc5853c..acd0d97b3f 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Pools; import io.anuke.mindustry.Mindustry; import io.anuke.ucore.core.Core; +import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Predicate; import io.anuke.ucore.scene.event.Touchable; @@ -38,9 +39,6 @@ public class FileChooser extends FloatingDialog { this.open = open; this.filter = filter; this.selectListener = result; - setupWidgets(); - - Mindustry.platforms.requestWritePerms(); } private void setupWidgets(){ @@ -253,8 +251,13 @@ public class FileChooser extends FloatingDialog { @Override public Dialog show(){ - super.show(); - Core.scene.setScrollFocus(pane); + Mindustry.platforms.requestWritePerms(); + Timers.runTask(2f, () -> { + content().clear(); + setupWidgets(); + super.show(); + Core.scene.setScrollFocus(pane); + }); return this; } diff --git a/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java b/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java index 98d40e9c4c..969d615333 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java @@ -190,7 +190,7 @@ public class ChatFragment extends Table implements Fragment{ if(sender == null){ //no sender, this is a server message? formattedMessage = message; }else{ - formattedMessage = "[ROYAL]["+sender+"]: [YELLOW]"+message; + formattedMessage = "[CORAL]["+sender+"]: [YELLOW]"+message; } } } diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java index e0f226f238..6a64598ba0 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlacementFragment.java @@ -18,6 +18,7 @@ import io.anuke.ucore.scene.ui.ButtonGroup; import io.anuke.ucore.scene.ui.ImageButton; import io.anuke.ucore.scene.ui.Label; import io.anuke.ucore.scene.ui.layout.Table; +import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; @@ -34,7 +35,7 @@ public class PlacementFragment implements Fragment{ InputHandler input = control.getInput(); float s = 50f; - float translation = 54f; + float translation = Unit.dp.scl(54f); new table(){{ visible(() -> !GameState.is(State.menu));