From 8eb2a13efdbebe284c1debc48f1e3f4e4a5de3c1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 12:25:56 -0400 Subject: [PATCH 01/23] Added host/join info text --- core/assets/bundles/bundle.properties | 2 ++ core/assets/version.properties | 4 ++-- core/src/io/anuke/mindustry/core/UI.java | 4 ++-- core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java | 6 +++++- core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java | 6 ++++++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 00fab558a9..63a3e099d4 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -42,6 +42,8 @@ text.server.kicked.recentKick=You have been kicked recently.\nWait before connec text.server.connected={0} has joined. text.server.disconnected={0} has disconnected. text.nohost=Can't host server on a custom map! +text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\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.host=Host text.hosting=[accent]Opening server... diff --git a/core/assets/version.properties b/core/assets/version.properties index de2bec133e..2db0c0a4c1 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Fri Mar 23 22:41:58 EDT 2018 +#Sat Mar 24 12:13:33 EDT 2018 version=release -androidBuildCode=458 +androidBuildCode=459 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index c8a19b6c47..fe28e973cd 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -221,8 +221,8 @@ public class UI extends SceneModule{ public void showInfo(String info){ new Dialog("$text.info.title", "dialog"){{ - content().margin(15).add(info); - buttons().addButton("$text.ok", this::hide).size(90, 50).pad(4).get().getLabelCell().width(400f).get().setWrap(true); + content().margin(15).add(info).width(600f).get().setWrap(true); + buttons().addButton("$text.ok", this::hide).size(90, 50).pad(4); }}.show(); } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index 51ee677775..0bf06a6dbf 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -40,10 +40,12 @@ public class HostDialog extends FloatingDialog{ }); }).size(50f, 54f).get(); button.update(() -> button.getStyle().imageUpColor = player.getColor()); - }).width(w).height(70f).pad(4); + }).width(w).height(70f).pad(4).colspan(3); content().row(); + content().add().width(65f); + content().addButton("$text.host", () -> { ui.loadfrag.show("$text.hosting"); Timers.runTask(5f, () -> { @@ -57,5 +59,7 @@ public class HostDialog extends FloatingDialog{ hide(); }); }).width(w).height(70f); + + content().addButton("?", () -> ui.showInfo("$text.host.info")).size(65f, 70f).padLeft(6f); } } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java index c86285f8cf..270d911f26 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/JoinDialog.java @@ -38,8 +38,14 @@ public class JoinDialog extends FloatingDialog { loadServers(); + buttons().add().width(60f); + buttons().add().growX(); + addCloseButton(); + buttons().add().growX(); + buttons().addButton("?", () -> ui.showInfo("$text.join.info")).size(60f, 64f); + add = new FloatingDialog("$text.joingame.title"); add.content().add("$text.joingame.ip").padRight(5f).left(); From 5c748fbe543193752f10678e82e2f25a720bddfe Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 14:07:07 -0400 Subject: [PATCH 02/23] Upgrade purchase verification, various bugfixes for 3.5 --- build.gradle | 2 +- core/assets/version.properties | 4 +-- .../io/anuke/mindustry/core/NetClient.java | 13 +++++++++ .../io/anuke/mindustry/core/NetServer.java | 28 +++++++++++++------ core/src/io/anuke/mindustry/io/SaveIO.java | 4 +-- .../src/io/anuke/mindustry/net/NetEvents.java | 8 ++++-- .../ui/fragments/BackgroundFragment.java | 4 +-- .../types/production/WeaponFactory.java | 11 ++++---- .../anuke/mindustry/server/ServerControl.java | 8 ++++-- 9 files changed, 55 insertions(+), 27 deletions(-) diff --git a/build.gradle b/build.gradle index 0e44959044..47bbaa9dfd 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = '9503bcb' + uCoreVersion = '238babe' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/version.properties b/core/assets/version.properties index 2db0c0a4c1..255d51b647 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 12:13:33 EDT 2018 +#Sat Mar 24 14:04:34 EDT 2018 version=release -androidBuildCode=459 +androidBuildCode=470 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index b0ad4a281c..a8cebfdbb3 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -16,11 +16,15 @@ import io.anuke.mindustry.net.Net.SendMode; import io.anuke.mindustry.net.NetworkIO; import io.anuke.mindustry.net.Packets.*; import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.resource.Upgrade; +import io.anuke.mindustry.resource.UpgradeRecipes; +import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Map; import io.anuke.mindustry.world.Placement; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.ProductionBlocks; +import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.BaseBulletType; import io.anuke.ucore.entities.Entities; @@ -298,6 +302,15 @@ public class NetClient extends Module { Player player = playerGroup.getByID(packet.info.playerid); ui.traces.show(player, packet.info); }); + + Net.handleClient(UpgradePacket.class, packet -> { + Weapon weapon = (Weapon) Upgrade.getByID(packet.id); + + state.inventory.removeItems(UpgradeRecipes.get(weapon)); + control.upgrades().addWeapon(weapon); + ui.hudfrag.updateWeapons(); + Effects.sound("purchase"); + }); } @Override diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 312208a0e3..152237017e 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -60,6 +60,8 @@ public class NetServer extends Module{ TraceInfo trace = admins.getTrace(Net.getConnection(id).address); PlayerInfo info = admins.getInfo(uuid); + trace.uuid = uuid; + trace.android = packet.android; if(admins.isIDBanned(uuid)){ kick(id, KickReason.banned); @@ -74,8 +76,6 @@ public class NetServer extends Module{ String ip = Net.getConnection(id).address; admins.updatePlayerJoined(uuid, ip, packet.name); - trace.uuid = uuid; - trace.android = packet.android; if(packet.version != Version.build && Version.build != -1 && packet.version != -1){ kick(id, packet.version > Version.build ? KickReason.serverOutdated : KickReason.clientOutdated); @@ -121,7 +121,7 @@ public class NetServer extends Module{ Player player = connections.get(id); ByteArrayOutputStream stream = new ByteArrayOutputStream(); - NetworkIO.writeWorld(player, weapons.get(player.name, new ByteArray()), stream); + NetworkIO.writeWorld(player, weapons.get(admins.getTrace(Net.getConnection(id).address).uuid, new ByteArray()), stream); WorldData data = new WorldData(); data.stream = new ByteArrayInputStream(stream.toByteArray()); Net.sendStream(id, data); @@ -178,7 +178,7 @@ public class NetServer extends Module{ info.fastShots ++; }else{ - if(info.fastShots - 2 > (int)(wtrc / (weapon.getReload() / 2f))){ + if(info.fastShots - 1 > (int)(wtrc / (weapon.getReload() / 2f))){ kick(id, KickReason.kick); } @@ -246,11 +246,22 @@ public class NetServer extends Module{ Player player = connections.get(id); Weapon weapon = (Weapon) Upgrade.getByID(packet.id); + String uuid = admins.getTrace(Net.getConnection(id).address).uuid; - if (!weapons.containsKey(player.name)) weapons.put(player.name, new ByteArray()); - if (!weapons.get(player.name).contains(weapon.id)) weapons.get(player.name).add(weapon.id); + if(!state.inventory.hasItems(UpgradeRecipes.get(weapon))){ + return; + } + + if (!weapons.containsKey(uuid)) weapons.put(uuid, new ByteArray()); + + if (!weapons.get(uuid).contains(weapon.id)){ + weapons.get(uuid).add(weapon.id); + }else{ + return; + } state.inventory.removeItems(UpgradeRecipes.get(weapon)); + Net.sendTo(id, packet, SendMode.tcp); }); Net.handleServer(WeaponSwitchPacket.class, (id, packet) -> { @@ -348,9 +359,8 @@ public class NetServer extends Module{ Log.info("Kicking connection #{0} / IP: {1}. Reason: {2}", connection, con.address, reason); } - PlayerInfo info = admins.getInfo(admins.getTrace(con.address).uuid); - - if(reason == KickReason.kick || reason == KickReason.banned){ + if((reason == KickReason.kick || reason == KickReason.banned) && admins.getTrace(con.address).uuid != null){ + PlayerInfo info = admins.getInfo(admins.getTrace(con.address).uuid); info.timesKicked ++; info.lastKicked = TimeUtils.millis(); } diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index e5ed643607..662f71ea7c 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -12,9 +12,7 @@ import io.anuke.ucore.core.Settings; import java.io.*; -import static io.anuke.mindustry.Vars.gwt; -import static io.anuke.mindustry.Vars.logic; -import static io.anuke.mindustry.Vars.saveDirectory; +import static io.anuke.mindustry.Vars.*; public class SaveIO{ public static final IntMap versions = new IntMap<>(); diff --git a/core/src/io/anuke/mindustry/net/NetEvents.java b/core/src/io/anuke/mindustry/net/NetEvents.java index 8b75515d9f..ccb59f36a1 100644 --- a/core/src/io/anuke/mindustry/net/NetEvents.java +++ b/core/src/io/anuke/mindustry/net/NetEvents.java @@ -96,9 +96,13 @@ public class NetEvents { public static void handleSendMessage(String message){ ChatPacket packet = new ChatPacket(); packet.text = message; - packet.name = Vars.player.name; - packet.id = Vars.player.id; + packet.name = player.name; + packet.id = player.id; Net.send(packet, SendMode.tcp); + + if(Net.server() && !headless){ + ui.chatfrag.addMessage(message, netCommon.colorizeName(player.id, player.name)); + } } public static void handleShoot(Weapon weapon, float x, float y, float angle){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java index a786df7686..e920593899 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java @@ -18,7 +18,7 @@ public class BackgroundFragment implements Fragment { Draw.color(); TextureRegion back = Draw.region("background"); - float backscl = Math.max(Gdx.graphics.getWidth() / (float)back.getRegionWidth() * 1.5f, Unit.dp.scl(5f)); + float backscl = (int)Math.max(Gdx.graphics.getWidth() / (float)back.getRegionWidth() * 1.5f, Unit.dp.scl(5f)); Draw.alpha(0.5f); Core.batch.draw(back, w/2 - back.getRegionWidth()*backscl/2, h/2 - back.getRegionHeight()*backscl/2, @@ -31,7 +31,7 @@ public class BackgroundFragment implements Fragment { float logoh = logo.getRegionHeight()*logoscl; Draw.color(); - Core.batch.draw(logo, w/2 - logow/2, h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0), logow, logoh); + Core.batch.draw(logo, (int)(w/2 - logow/2), (int)(h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0)), logow, logoh); }).visible(() -> state.is(State.menu)).grow(); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/WeaponFactory.java b/core/src/io/anuke/mindustry/world/blocks/types/production/WeaponFactory.java index 11b55a631c..062288cc6c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/WeaponFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/WeaponFactory.java @@ -89,14 +89,15 @@ public class WeaponFactory extends Block{ tip.setInstant(true); ImageButton button = content.addImageButton("white", 8*4, () -> { - state.inventory.removeItems(requirements); - control.upgrades().addWeapon(weapon); - ui.hudfrag.updateWeapons(); - run.listen(); - Effects.sound("purchase"); if(Net.client()){ NetEvents.handleUpgrade(weapon); + }else{ + state.inventory.removeItems(requirements); + control.upgrades().addWeapon(weapon); + ui.hudfrag.updateWeapons(); + run.listen(); + Effects.sound("purchase"); } }).size(49f, 54f).padBottom(-5).get(); diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 4404ab6b46..39b91c3f6d 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -147,11 +147,12 @@ public class ServerControl extends Module { return; } }else{ - while(result == null || result.visible) + while(result == null || !result.visible) result = world.maps().getAllMaps().random(); + Log.info("&ly&fiNo map specified, so &lb{0}&ly was chosen randomly.", result.name); } - GameMode mode = null; + GameMode mode; try{ mode = arg.length < 2 ? GameMode.waves : GameMode.valueOf(arg[1]); }catch (IllegalArgumentException e){ @@ -441,7 +442,7 @@ public class ServerControl extends Module { }else{ Log.info("&lyAdmins:"); for(PlayerInfo info : admins){ - Log.info(" &luy {0} / ID: '{1}' / IP: '{2}'", info.lastName, info.id, info.lastIP); + Log.info(" &lm {0} / ID: '{1}' / IP: '{2}'", info.lastName, info.id, info.lastIP); } } }); @@ -545,6 +546,7 @@ public class ServerControl extends Module { Log.info(" &lyIP: {0}", info.lastIP); Log.info(" &lyall IPs used: {0}", info.ips); Log.info(" &lytimes joined: {0}", info.timesJoined); + Log.info(" &lytimes kicked: {0}", info.timesKicked); Log.info(""); Log.info(" &lytotal blocks broken: {0}", info.totalBlocksBroken); Log.info(" &lytotal blocks placed: {0}", info.totalBlockPlaced); From b20a2f74c42a3e11e579f33bd00a8af4f2e95e51 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 14:23:39 -0400 Subject: [PATCH 03/23] 3.5 release --- build.gradle | 2 +- core/assets/version.properties | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 47bbaa9dfd..30ab95a1b0 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ allprojects { version = 'release' ext { - versionNumber = '3.4' + versionNumber = '3.5' versionType = 'release' appName = 'Mindustry' gdxVersion = '1.9.8' diff --git a/core/assets/version.properties b/core/assets/version.properties index 255d51b647..a1547a7cd4 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 14:04:34 EDT 2018 +#Sat Mar 24 14:20:21 EDT 2018 version=release -androidBuildCode=470 +androidBuildCode=473 name=Mindustry -code=3.4 -build=custom build +code=3.5 +build=35 From 7f40247b89562572520249203613333868d8ec29 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 19:10:17 -0400 Subject: [PATCH 04/23] Fixed overly sensitive shoot-kicking --- core/assets/version.properties | 4 ++-- core/src/io/anuke/mindustry/core/NetServer.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index a1547a7cd4..736bc24674 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 14:20:21 EDT 2018 +#Sat Mar 24 18:20:40 EDT 2018 version=release -androidBuildCode=473 +androidBuildCode=474 name=Mindustry code=3.5 build=35 diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 152237017e..9c2e3f40ef 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -172,13 +172,13 @@ public class NetServer extends Module{ TraceInfo info = admins.getTrace(Net.getConnection(id).address); Weapon weapon = (Weapon)Upgrade.getByID(packet.weaponid); - float wtrc = 40f; + float wtrc = 60f; if(!Timers.get(info.ip + "-weapontrace", wtrc)){ info.fastShots ++; }else{ - if(info.fastShots - 1 > (int)(wtrc / (weapon.getReload() / 2f))){ + if(info.fastShots - 6 > (int)(wtrc / (weapon.getReload() / 2f))){ kick(id, KickReason.kick); } From fd352f4ab1471f34485de3d00b3040937bbb76cd Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 19:19:24 -0400 Subject: [PATCH 05/23] Changed kicking again --- core/assets/version.properties | 2 +- core/src/io/anuke/mindustry/core/NetServer.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 736bc24674..67dc310935 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,5 +1,5 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 18:20:40 EDT 2018 +#Sat Mar 24 19:17:04 EDT 2018 version=release androidBuildCode=474 name=Mindustry diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 9c2e3f40ef..3dcc8e2564 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -174,14 +174,13 @@ public class NetServer extends Module{ float wtrc = 60f; - if(!Timers.get(info.ip + "-weapontrace", wtrc)){ + if(!Timers.get(info.uuid + "-weapontrace", wtrc)){ info.fastShots ++; - }else{ - if(info.fastShots - 6 > (int)(wtrc / (weapon.getReload() / 2f))){ + if(info.fastShots - 10 > (int)(wtrc / (weapon.getReload() / 2f))){ kick(id, KickReason.kick); } - + }else{ info.fastShots = 0; } From e0c1bb8da17c1ddc06820c6bf58778875b515b36 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 24 Mar 2018 19:30:16 -0400 Subject: [PATCH 06/23] Final kick revision (?) --- core/assets/version.properties | 2 +- core/src/io/anuke/mindustry/core/NetServer.java | 9 +++++++-- core/src/io/anuke/mindustry/net/TraceInfo.java | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 67dc310935..68da519df1 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,5 +1,5 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 19:17:04 EDT 2018 +#Sat Mar 24 19:29:29 EDT 2018 version=release androidBuildCode=474 name=Mindustry diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 3dcc8e2564..dd1d6c2c38 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -172,9 +172,9 @@ public class NetServer extends Module{ TraceInfo info = admins.getTrace(Net.getConnection(id).address); Weapon weapon = (Weapon)Upgrade.getByID(packet.weaponid); - float wtrc = 60f; + float wtrc = 60; - if(!Timers.get(info.uuid + "-weapontrace", wtrc)){ + if(TimeUtils.millis() < info.lastFastShot + wtrc*1000){ info.fastShots ++; if(info.fastShots - 10 > (int)(wtrc / (weapon.getReload() / 2f))){ @@ -182,6 +182,7 @@ public class NetServer extends Module{ } }else{ info.fastShots = 0; + info.lastFastShot = TimeUtils.millis(); } packet.playerid = connections.get(id).id; @@ -264,6 +265,10 @@ public class NetServer extends Module{ }); Net.handleServer(WeaponSwitchPacket.class, (id, packet) -> { + TraceInfo info = admins.getTrace(Net.getConnection(id).address); + info.fastShots = 0; + info.lastFastShot = TimeUtils.millis(); + packet.playerid = connections.get(id).id; Net.sendExcept(id, packet, SendMode.tcp); }); diff --git a/core/src/io/anuke/mindustry/net/TraceInfo.java b/core/src/io/anuke/mindustry/net/TraceInfo.java index 940f98726f..9548ec9860 100644 --- a/core/src/io/anuke/mindustry/net/TraceInfo.java +++ b/core/src/io/anuke/mindustry/net/TraceInfo.java @@ -10,6 +10,7 @@ public class TraceInfo { public boolean android; public int fastShots; + public long lastFastShot; public int totalBlocksBroken; public int structureBlocksBroken; From 30fc96e4da2c846662b37e44c1d0721a66cad911 Mon Sep 17 00:00:00 2001 From: iczero Date: Mon, 26 Mar 2018 00:12:06 -0700 Subject: [PATCH 07/23] Make chat scrollable, other chat fixes --- .../mindustry/input/DefaultKeybinds.java | 10 ++++---- .../mindustry/ui/fragments/ChatFragment.java | 23 +++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java index 72608d7d20..1f6870bfb7 100644 --- a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java +++ b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java @@ -26,8 +26,9 @@ public class DefaultKeybinds { "block_info", Input.CONTROL_LEFT, "player_list", Input.TAB, "chat", Input.ENTER, - "chat_scroll_up", Input.UP, - "chat_scroll_down", Input.DOWN, + "chat_history_prev", Input.UP, + "chat_history_next", Input.DOWN, + "chat_scroll", new Axis(Input.SCROLL), "console", Input.GRAVE, "weapon_1", Input.NUM_1, "weapon_2", Input.NUM_2, @@ -55,8 +56,9 @@ public class DefaultKeybinds { "rotate", new Axis(Input.CONTROLLER_A, Input.CONTROLLER_B), "player_list", Input.CONTROLLER_START, "chat", Input.ENTER, - "chat_scroll_up", Input.UP, - "chat_scroll_down", Input.DOWN, + "chat_history_prev", Input.UP, + "chat_history_next", Input.DOWN, + "chat_scroll", new Axis(Input.SCROLL), "console", Input.GRAVE, "weapon_1", Input.NUM_1, "weapon_2", Input.NUM_2, diff --git a/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java b/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java index 2f7f5d71c4..f4acb97e59 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/ChatFragment.java @@ -19,8 +19,7 @@ import io.anuke.ucore.scene.ui.Label.LabelStyle; import io.anuke.ucore.scene.ui.TextField; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; -import io.anuke.ucore.util.Log; -import java.util.Arrays; +import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.state; import static io.anuke.ucore.core.Core.scene; @@ -30,7 +29,7 @@ public class ChatFragment extends Table implements Fragment{ private final static int messagesShown = 10; private final static int maxLength = 150; private Array messages = new Array<>(); - private float fadetime, lastfade; + private float fadetime; private boolean chatOpen = false; private TextField chatfield; private Label fieldlabel = new Label(">"); @@ -42,6 +41,7 @@ public class ChatFragment extends Table implements Fragment{ private float textspacing = Unit.dp.scl(10); private Array history = new Array(); private int historyPos = 0; + private int scrollPos = 0; public ChatFragment(){ super(); @@ -62,15 +62,16 @@ public class ChatFragment extends Table implements Fragment{ } if (chatOpen) { - if (Inputs.keyTap("chat_scroll_up") && historyPos < history.size - 1) { + if (Inputs.keyTap("chat_history_prev") && historyPos < history.size - 1) { if (historyPos == 0) history.set(0, chatfield.getText()); historyPos++; updateChat(); } - if (Inputs.keyTap("chat_scroll_down") && historyPos > 0) { + if (Inputs.keyTap("chat_history_next") && historyPos > 0) { historyPos--; updateChat(); } + scrollPos = (int)Mathf.clamp(scrollPos + Inputs.getAxis("chat_scroll"), 0, Math.max(0, messages.size - messagesShown)); } }); @@ -134,16 +135,16 @@ public class ChatFragment extends Table implements Fragment{ batch.setColor(shadowColor); float theight = offsety + spacing + getMarginBottom(); - for(int i = 0; i < messagesShown && i < messages.size && i < fadetime; i ++){ + for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || chatOpen); i++){ layout.setText(font, messages.get(i).formattedMessage, Color.WHITE, textWidth, Align.bottomLeft, true); theight += layout.height+textspacing; - if(i == 0) theight -= textspacing+1; + if(i - scrollPos == 0) theight -= textspacing+1; font.getCache().clear(); font.getCache().addText(messages.get(i).formattedMessage, fontoffsetx + offsetx, offsety + theight, textWidth, Align.bottomLeft, true); - if(fadetime-i < 1f && fadetime-i >= 0f){ + if(!chatOpen && fadetime-i < 1f && fadetime-i >= 0f){ font.getCache().setAlphas(fadetime-i); batch.setColor(0, 0, 0, shadowColor.a*(fadetime-i)); } @@ -163,10 +164,10 @@ public class ChatFragment extends Table implements Fragment{ private void sendMessage(){ String message = chatfield.getText(); clearChatInput(); - history.insert(1, message); if(message.replaceAll(" ", "").isEmpty()) return; + history.insert(1, message); NetEvents.handleSendMessage(message); } @@ -176,12 +177,10 @@ public class ChatFragment extends Table implements Fragment{ scene.setKeyboardFocus(chatfield); chatfield.fireClick(); chatOpen = !chatOpen; - lastfade = fadetime; - fadetime = messagesShown + 1; }else{ scene.setKeyboardFocus(null); chatOpen = !chatOpen; - fadetime = lastfade; + scrollPos = 0; sendMessage(); } } From c54df7cbd1e8e62015e601343fd7d7218b94dd7c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 Mar 2018 00:22:07 -0400 Subject: [PATCH 08/23] Fixed host bug, server failing to kick people firing too fast --- build.gradle | 2 +- core/assets/version.properties | 4 ++-- core/src/io/anuke/mindustry/core/NetServer.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 30ab95a1b0..ac5295027d 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = '238babe' + uCoreVersion = 'a4f1863' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/version.properties b/core/assets/version.properties index 68da519df1..244390133a 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sat Mar 24 19:29:29 EDT 2018 +#Wed Mar 28 00:20:39 EDT 2018 version=release -androidBuildCode=474 +androidBuildCode=476 name=Mindustry code=3.5 build=35 diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index dd1d6c2c38..828f58a3cd 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -174,10 +174,10 @@ public class NetServer extends Module{ float wtrc = 60; - if(TimeUtils.millis() < info.lastFastShot + wtrc*1000){ + if(TimeUtils.millis() < info.lastFastShot + (int)(wtrc/60f*1000)){ info.fastShots ++; - if(info.fastShots - 10 > (int)(wtrc / (weapon.getReload() / 2f))){ + if(info.fastShots - 6 > (int)(wtrc / (weapon.getReload() / 2f))){ kick(id, KickReason.kick); } }else{ From 795464e73745281984b656c8f307ffe2aea16aa8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 Mar 2018 00:22:39 -0400 Subject: [PATCH 09/23] Updated uCore --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ac5295027d..a6a170316c 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = 'a4f1863' + uCoreVersion = '1d4cc71' getVersionString = { String buildVersion = getBuildVersion() From f0302ca7dc41614135bdd4541e4b049054b0a362 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 Mar 2018 09:39:29 -0400 Subject: [PATCH 10/23] Changed file sorting comparator to ignore case --- core/assets/version.properties | 6 +++--- core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 244390133a..140a039c40 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Mar 28 00:20:39 EDT 2018 +#Wed Mar 28 09:37:55 EDT 2018 version=release -androidBuildCode=476 +androidBuildCode=477 name=Mindustry code=3.5 -build=35 +build=custom build diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java index eda9d315ad..a96d8ebc8c 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java @@ -159,7 +159,7 @@ public class FileChooser extends FloatingDialog { Arrays.sort(handles, (a, b) ->{ if(a.isDirectory() && !b.isDirectory()) return -1; if( !a.isDirectory() && b.isDirectory()) return 1; - return a.name().compareTo(b.name()); + return a.name().toUpperCase().compareTo(b.name().toUpperCase()); }); return handles; } From 84548187f521b43383b7242b3cc538ef124d510d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 30 Mar 2018 18:05:58 -0400 Subject: [PATCH 11/23] Changed tunnel acceptance algorithm --- core/assets/version.properties | 4 ++-- .../blocks/types/distribution/TunnelConveyor.java | 14 +------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 140a039c40..c6803a8f40 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Mar 28 09:37:55 EDT 2018 +#Fri Mar 30 18:03:34 EDT 2018 version=release -androidBuildCode=477 +androidBuildCode=478 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java index 0e6d91c202..ee6d9ce429 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java @@ -71,19 +71,7 @@ public class TunnelConveyor extends Block{ @Override public boolean acceptItem(Item item, Tile tile, Tile source){ TunnelEntity entity = tile.entity(); - - if(entity.index >= entity.buffer.length - 1) return false; - - int rot = source.relativeTo(tile.x, tile.y); - if(rot != (tile.getRotation() + 2)%4) return false; - Tile tunnel = getDestTunnel(tile, item); - - if(tunnel != null){ - Tile to = tunnel.getNearby(tunnel.getRotation()); - return to != null && to.block().acceptItem(item, to, tunnel); - }else{ - return false; - } + return entity.index < entity.buffer.length - 1; } @Override From ed276ac79e1515779f4cae4ff70d84a02c5aecb3 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 30 Mar 2018 19:18:33 -0400 Subject: [PATCH 12/23] Fixed random collision deaths --- build.gradle | 2 +- core/assets/version.properties | 4 ++-- core/src/io/anuke/mindustry/entities/Player.java | 14 +++----------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index a6a170316c..ccf5fef38e 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = '1d4cc71' + uCoreVersion = 'd7c7094' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/version.properties b/core/assets/version.properties index c6803a8f40..836de62cd0 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Fri Mar 30 18:03:34 EDT 2018 +#Fri Mar 30 19:18:12 EDT 2018 version=release -androidBuildCode=478 +androidBuildCode=482 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 0a53034999..42f4367697 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -42,7 +42,6 @@ public class Player extends SyncEntity{ public Mech mech = Mech.standard; public float targetAngle = 0f; - public float stucktime = 0f; public boolean dashing = false; public int clientid = -1; @@ -54,7 +53,7 @@ public class Player extends SyncEntity{ public Player(){ hitbox.setSize(5); - hitboxTile.setSize(5f); + hitboxTile.setSize(4f); maxhealth = 200; heal(); @@ -161,15 +160,8 @@ public class Player extends SyncEntity{ Tile tile = world.tileWorld(x, y); //if player is in solid block - if(tile != null && ((tile.floor().liquid && tile.block() == Blocks.air) || tile.solid())){ - stucktime += Timers.delta(); - }else{ - stucktime = 0f; - } - - if(stucktime > 15f){ - damage(health+1); //die instantly - stucktime = 0f; + if(tile != null && ((tile.floor().liquid && tile.block() == Blocks.air) || tile.solid())) { + damage(health + 1); //die instantly } if(ui.chatfrag.chatOpen()) return; From 537e25af9fe3f09f5e786dfaeee5758b0999954d Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 31 Mar 2018 14:04:55 -0400 Subject: [PATCH 13/23] Fixed server crash / Added graphics blending methods --- kryonet/src/io/anuke/kryonet/KryoServer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kryonet/src/io/anuke/kryonet/KryoServer.java b/kryonet/src/io/anuke/kryonet/KryoServer.java index 876f0ac3a3..42bdd4c242 100644 --- a/kryonet/src/io/anuke/kryonet/KryoServer.java +++ b/kryonet/src/io/anuke/kryonet/KryoServer.java @@ -423,7 +423,13 @@ public class KryoServer implements ServerProvider { byte[] out = Base64Coder.decode(message); ByteBuffer buffer = ByteBuffer.wrap(out); Object o = serializer.read(buffer); - Gdx.app.postRunnable(() -> Net.handleServerReceived(id, o)); + Gdx.app.postRunnable(() -> { + try { + Net.handleServerReceived(id, o); + }catch (Exception e){ + e.printStackTrace(); + } + }); } }catch (Exception e){ Log.err(e); From 0936fc655023e6eb9b8bef130a46704785862ec0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 1 Apr 2018 11:33:30 -0400 Subject: [PATCH 14/23] Multithreading crash fixes / Server 'find' command added --- core/assets/version.properties | 4 +-- core/src/io/anuke/mindustry/core/World.java | 2 +- .../anuke/mindustry/net/Administration.java | 12 +++++++++ .../io/anuke/mindustry/world/Placement.java | 15 +++++++---- .../anuke/mindustry/server/ServerControl.java | 27 +++++++++++++++++++ 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 836de62cd0..7979052ab3 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Fri Mar 30 19:18:12 EDT 2018 +#Sun Apr 01 11:24:59 EDT 2018 version=release -androidBuildCode=482 +androidBuildCode=483 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index 3a2d930d1b..18ba128b32 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -244,7 +244,7 @@ public class World extends Module{ Array removals = target.getLinkedTiles(); for(Tile toremove : removals){ //note that setting a new block automatically unlinks it - toremove.setBlock(Blocks.air); + if(toremove != null) toremove.setBlock(Blocks.air); } } } diff --git a/core/src/io/anuke/mindustry/net/Administration.java b/core/src/io/anuke/mindustry/net/Administration.java index f34fe8aafb..59aa64fb75 100644 --- a/core/src/io/anuke/mindustry/net/Administration.java +++ b/core/src/io/anuke/mindustry/net/Administration.java @@ -172,6 +172,18 @@ public class Administration { return info.admin && ip.equals(info.validAdminIP); } + public Array findByName(String name, boolean last){ + Array result = new Array<>(); + + for(PlayerInfo info : playerInfo.values()){ + if(info.lastName.toLowerCase().equals(name.toLowerCase()) || (last && info.names.contains(name, false))){ + result.add(info); + } + } + + return result; + } + public PlayerInfo getInfo(String id){ return getCreateInfo(id); } diff --git a/core/src/io/anuke/mindustry/world/Placement.java b/core/src/io/anuke/mindustry/world/Placement.java index b3da7e28b5..86e755e28e 100644 --- a/core/src/io/anuke/mindustry/world/Placement.java +++ b/core/src/io/anuke/mindustry/world/Placement.java @@ -106,13 +106,18 @@ public class Placement { rect.setCenter(offset.x + x * tilesize, offset.y + y * tilesize); synchronized (Entities.entityLock) { - for (SolidEntity e : Entities.getNearby(enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)) { - if (e == null) continue; //not sure why this happens? - Rectangle rect = e.hitbox.getRect(e.x, e.y); + //exception sometimes thrown due to multithreading, not sure what else to try at this point + try { + for (SolidEntity e : Entities.getNearby(enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)) { + if (e == null) continue; //not sure why this happens? + Rectangle rect = e.hitbox.getRect(e.x, e.y); - if (Placement.rect.overlaps(rect)) { - return false; + if (Placement.rect.overlaps(rect)) { + return false; + } } + }catch (Exception e){ + return false; } } diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 39b91c3f6d..aec207eb5a 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -537,6 +537,33 @@ public class ServerControl extends Module { } }); + handler.register("find", " [check-all-names]", "Find player info(s) by name. Can optionally check for all names a player has had.", arg -> { + boolean checkAll = arg.length == 2 && arg[1].equals("true"); + + Array infos = netServer.admins.findByName(arg[0], checkAll); + + if(infos.size == 1) { + PlayerInfo info = infos.peek(); + Log.info("&lcTrace info for player '{0}' / UUID {1}:", info.lastName, info.id); + Log.info(" &lyall names used: {0}", info.names); + Log.info(" &lyIP: {0}", info.lastIP); + Log.info(" &lyall IPs used: {0}", info.ips); + Log.info(" &lytimes joined: {0}", info.timesJoined); + Log.info(" &lytimes kicked: {0}", info.timesKicked); + Log.info(""); + Log.info(" &lytotal blocks broken: {0}", info.totalBlocksBroken); + Log.info(" &lytotal blocks placed: {0}", info.totalBlockPlaced); + }else if(infos.size > 1){ + Log.info("&lcMultiple people have been found with that name:"); + for(PlayerInfo info : infos){ + Log.info(" &ly{0}", info.id); + } + Log.info("&lcUse the info command to examine each person individually."); + }else{ + info("Nobody with that name could be found."); + } + }); + handler.register("info", "", "Get global info for a player's UUID.", arg -> { PlayerInfo info = netServer.admins.getInfoOptional(arg[0]); From 528cb6bf40fd1999311a9f4407f646ca87cb9de9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 1 Apr 2018 11:39:50 -0400 Subject: [PATCH 15/23] Fixed possible wave crash --- core/src/io/anuke/mindustry/core/Control.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 317c3d9c31..3958a0d4d9 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -172,7 +172,7 @@ public class Control extends Module{ Events.on(WaveEvent.class, () -> { Sounds.play("spawn"); - int last = Settings.getInt("hiscore" + world.getMap().name); + int last = Settings.getInt("hiscore" + world.getMap().name, 0); if(state.wave > last && !state.mode.infiniteResources && !state.mode.disableWaveTimer){ Settings.putInt("hiscore" + world.getMap().name, state.wave); From 9db7b1385d0a7ebc7e7b09b09f8fd63fb7b0dbab Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 1 Apr 2018 12:07:30 -0400 Subject: [PATCH 16/23] Updated uCore / Fixed behind-UI swipe bug --- build.gradle | 2 +- core/assets/version.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index ccf5fef38e..e73b01c766 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = 'd7c7094' + uCoreVersion = 'c5d47cc' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/version.properties b/core/assets/version.properties index 7979052ab3..7eebac802a 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sun Apr 01 11:24:59 EDT 2018 +#Sun Apr 01 12:07:12 EDT 2018 version=release -androidBuildCode=483 +androidBuildCode=492 name=Mindustry code=3.5 build=custom build From c686bf6149fcfccbdc5852bae09667b651c8cdbc Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Apr 2018 14:25:08 -0400 Subject: [PATCH 17/23] Changed tunnel buffer system (again) --- core/assets/version.properties | 4 ++-- .../blocks/types/distribution/TunnelConveyor.java | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 7eebac802a..b6508f8d15 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sun Apr 01 12:07:12 EDT 2018 +#Mon Apr 02 14:23:38 EDT 2018 version=release -androidBuildCode=492 +androidBuildCode=493 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java index ee6d9ce429..cdf94e909e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java @@ -1,10 +1,12 @@ package io.anuke.mindustry.world.blocks.types.distribution; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.NumberUtils; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.BlockBar; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Bits; @@ -21,6 +23,7 @@ public class TunnelConveyor extends Block{ solid = true; health = 70; instantTransfer = true; + bars.add(new BlockBar(Color.GREEN, true, tile -> (float)tile.entity().index/capacity)); } @Override @@ -34,11 +37,6 @@ public class TunnelConveyor extends Block{ if(entity.index >= entity.buffer.length) return; - Tile tunnel = getDestTunnel(tile, item); - if(tunnel == null) return; - Tile to = tunnel.getNearby(tunnel.getRotation()); - if(to == null) return; - entity.buffer[entity.index ++] = Bits.packLong(NumberUtils.floatToIntBits(Timers.time()), item.id); } @@ -71,6 +69,8 @@ public class TunnelConveyor extends Block{ @Override public boolean acceptItem(Item item, Tile tile, Tile source){ TunnelEntity entity = tile.entity(); + int rot = source.relativeTo(tile.x, tile.y); + if(rot != (tile.getRotation() + 2)%4) return false; return entity.index < entity.buffer.length - 1; } From a1ca9d396c2c6da04d0850990e009a714b599ff1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Apr 2018 14:39:54 -0400 Subject: [PATCH 18/23] Updated to build 37 --- core/assets/version.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index b6508f8d15..2ece6a0670 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Mon Apr 02 14:23:38 EDT 2018 +#Mon Apr 02 14:29:45 EDT 2018 version=release -androidBuildCode=493 +androidBuildCode=494 name=Mindustry code=3.5 -build=custom build +build=37 From efd9280f96b1893ed0c2f2df813e89cd82c789b7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Apr 2018 15:35:20 -0400 Subject: [PATCH 19/23] Build code fix --- core/assets/version.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 2ece6a0670..9d9b770593 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Mon Apr 02 14:29:45 EDT 2018 +#Mon Apr 02 15:23:03 EDT 2018 version=release -androidBuildCode=494 +androidBuildCode=497 name=Mindustry code=3.5 build=37 From 0559b43bdefdc33e362da8fa82e09a89ee340771 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 3 Apr 2018 23:58:33 -0400 Subject: [PATCH 20/23] Updated uCore --- build.gradle | 2 +- core/assets/version.properties | 6 +++--- core/src/io/anuke/mindustry/core/NetServer.java | 11 ++++------- core/src/io/anuke/mindustry/net/NetEvents.java | 2 ++ core/src/io/anuke/mindustry/net/TraceInfo.java | 4 ++-- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index e73b01c766..8c81534075 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = 'c5d47cc' + uCoreVersion = 'a41b4c2' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/version.properties b/core/assets/version.properties index 9d9b770593..866e1dc634 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Mon Apr 02 15:23:03 EDT 2018 +#Tue Apr 03 23:58:20 EDT 2018 version=release -androidBuildCode=497 +androidBuildCode=501 name=Mindustry code=3.5 -build=37 +build=custom build diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 828f58a3cd..77c5a8b650 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -174,15 +174,14 @@ public class NetServer extends Module{ float wtrc = 60; - if(TimeUtils.millis() < info.lastFastShot + (int)(wtrc/60f*1000)){ - info.fastShots ++; + if(!Timers.get("fastshoot-" + id + "-" + weapon.id, wtrc)){ + info.fastShots.getAndIncrement(weapon.id, 0, 1); - if(info.fastShots - 6 > (int)(wtrc / (weapon.getReload() / 2f))){ + if(info.fastShots.get(weapon.id, 0) > (int)(wtrc / (weapon.getReload() / 2f)) + 2){ kick(id, KickReason.kick); } }else{ - info.fastShots = 0; - info.lastFastShot = TimeUtils.millis(); + info.fastShots.put(weapon.id, 0); } packet.playerid = connections.get(id).id; @@ -266,8 +265,6 @@ public class NetServer extends Module{ Net.handleServer(WeaponSwitchPacket.class, (id, packet) -> { TraceInfo info = admins.getTrace(Net.getConnection(id).address); - info.fastShots = 0; - info.lastFastShot = TimeUtils.millis(); packet.playerid = connections.get(id).id; Net.sendExcept(id, packet, SendMode.tcp); diff --git a/core/src/io/anuke/mindustry/net/NetEvents.java b/core/src/io/anuke/mindustry/net/NetEvents.java index ccb59f36a1..f840180bdd 100644 --- a/core/src/io/anuke/mindustry/net/NetEvents.java +++ b/core/src/io/anuke/mindustry/net/NetEvents.java @@ -113,6 +113,8 @@ public class NetEvents { packet.rotation = angle; packet.playerid = Vars.player.id; Net.send(packet, SendMode.udp); + + handleWeaponSwitch(); } public static void handlePlace(int x, int y, Block block, int rotation){ diff --git a/core/src/io/anuke/mindustry/net/TraceInfo.java b/core/src/io/anuke/mindustry/net/TraceInfo.java index 9548ec9860..699e113e8e 100644 --- a/core/src/io/anuke/mindustry/net/TraceInfo.java +++ b/core/src/io/anuke/mindustry/net/TraceInfo.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.net; +import com.badlogic.gdx.utils.IntIntMap; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.Blocks; @@ -9,8 +10,7 @@ public class TraceInfo { public boolean modclient; public boolean android; - public int fastShots; - public long lastFastShot; + public IntIntMap fastShots = new IntIntMap(); public int totalBlocksBroken; public int structureBlocksBroken; From 53ca2d075568d2e82b7adc64dbe02d770d71ac93 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 4 Apr 2018 00:04:05 -0400 Subject: [PATCH 21/23] Removed extra line of code --- core/src/io/anuke/mindustry/net/NetEvents.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/src/io/anuke/mindustry/net/NetEvents.java b/core/src/io/anuke/mindustry/net/NetEvents.java index f840180bdd..ccb59f36a1 100644 --- a/core/src/io/anuke/mindustry/net/NetEvents.java +++ b/core/src/io/anuke/mindustry/net/NetEvents.java @@ -113,8 +113,6 @@ public class NetEvents { packet.rotation = angle; packet.playerid = Vars.player.id; Net.send(packet, SendMode.udp); - - handleWeaponSwitch(); } public static void handlePlace(int x, int y, Block block, int rotation){ From 5172ae781fa983e26c8329ff26d32437960ec43c Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 5 Apr 2018 22:30:25 -0400 Subject: [PATCH 22/23] Updates for new uCore version --- build.gradle | 2 +- core/assets/shaders/shield.fragment | 6 +- core/assets/version.properties | 4 +- .../src/io/anuke/mindustry/core/Renderer.java | 8 +- .../anuke/mindustry/entities/BulletType.java | 22 +- .../io/anuke/mindustry/entities/Player.java | 2 +- .../anuke/mindustry/entities/effect/EMP.java | 6 +- .../mindustry/entities/enemies/Enemy.java | 2 +- core/src/io/anuke/mindustry/graphics/Fx.java | 362 +++++++++--------- .../io/anuke/mindustry/input/PlaceMode.java | 6 +- .../anuke/mindustry/io/versions/Save12.java | 4 +- .../anuke/mindustry/io/versions/Save13.java | 4 +- .../anuke/mindustry/io/versions/Save14.java | 4 +- .../anuke/mindustry/io/versions/Save15.java | 4 +- .../types/production/ItemPowerGenerator.java | 4 +- 15 files changed, 220 insertions(+), 220 deletions(-) diff --git a/build.gradle b/build.gradle index 8c81534075..e70a369b41 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' aiVersion = '1.8.1' - uCoreVersion = 'a41b4c2' + uCoreVersion = 'b41a747' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets/shaders/shield.fragment b/core/assets/shaders/shield.fragment index b32e5a76bb..ba57b130ef 100644 --- a/core/assets/shaders/shield.fragment +++ b/core/assets/shaders/shield.fragment @@ -64,11 +64,11 @@ void main() { if(i >= u_hitamount) break; vec3 hit = u_hits[i]; float rad = hit.z * HIT_RADIUS; - float fract = 1.0 - hit.z; + float fin = 1.0 - hit.z; if(abs(distance(vec2(hit.x, hit.y), coords - u_texsize/2.0) - rad) < 1.0){ - color = mix(color, u_color* vec4(si, si, si, 1.0), (1.0 * fract)); - color.a = ALPHA + 0.82 *fract; + color = mix(color, u_color* vec4(si, si, si, 1.0), (1.0 * fin)); + color.a = ALPHA + 0.82 *fin; } } } diff --git a/core/assets/version.properties b/core/assets/version.properties index 866e1dc634..f9d3107813 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Tue Apr 03 23:58:20 EDT 2018 +#Thu Apr 05 22:28:48 EDT 2018 version=release -androidBuildCode=501 +androidBuildCode=502 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 1faf54be0a..5912ba6129 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -541,14 +541,14 @@ public class Renderer extends RendererModule{ } //TODO optimize! - public void drawBar(Color color, float x, float y, float fraction){ - fraction = Mathf.clamp(fraction); + public void drawBar(Color color, float x, float y, float finion){ + finion = Mathf.clamp(finion); - if(fraction > 0) fraction = Mathf.clamp(fraction + 0.2f, 0.24f, 1f); + if(finion > 0) finion = Mathf.clamp(finion + 0.2f, 0.24f, 1f); float len = 3; - float w = (int) (len * 2 * fraction) + 0.5f; + float w = (int) (len * 2 * finion) + 0.5f; x -= 0.5f; y += 0.5f; diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 4a3963ecc9..dca208c352 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -168,8 +168,8 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b) { - Draw.color(Color.LIGHT_GRAY, Color.GRAY, b.ifract()); - Lines.stroke(2f - b.ifract()); + Draw.color(Color.LIGHT_GRAY, Color.GRAY, b.fout()); + Lines.stroke(2f - b.fout()); Lines.lineAngleCenter(b.x, b.y, b.angle(), 2f); Draw.reset(); } @@ -325,7 +325,7 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b){ - Draw.color(Color.WHITE, lightOrange, b.fract()/2f + 0.25f); + Draw.color(Color.WHITE, lightOrange, b.fin()/2f + 0.25f); Lines.stroke(1.5f); Lines.lineAngle(b.x, b.y, b.angle(), 3f); Draw.reset(); @@ -337,7 +337,7 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b) { - float size = 3f - b.ifract()*1f; + float size = 3f - b.fout()*1f; Draw.color(Color.PURPLE, Color.WHITE, 0.8f); Lines.stroke(1f); @@ -356,8 +356,8 @@ public abstract class BulletType extends BaseBulletType{ Draw.color(lightOrange, Color.WHITE, 0.4f); Lines.poly(b.x, b.y, 3, 1.6f, b.angle()); Lines.stroke(1f); - Draw.color(Color.WHITE, lightOrange, b.ifract()/2f); - Draw.alpha(b.ifract()); + Draw.color(Color.WHITE, lightOrange, b.fout()/2f); + Draw.alpha(b.fout()); Lines.spikes(b.x, b.y, 1.5f, 2f, 6); Draw.reset(); } @@ -408,9 +408,9 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b) { - Draw.color(Color.WHITE, Color.ORANGE, b.ifract()); + Draw.color(Color.WHITE, Color.ORANGE, b.fout()); Lines.stroke(2f); - Lines.lineAngleCenter(b.x, b.y, b.angle(), b.fract()*5f); + Lines.lineAngleCenter(b.x, b.y, b.angle(), b.fin()*5f); Draw.reset(); } @@ -436,9 +436,9 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b) { - Draw.color(Color.WHITE, Color.ORANGE, b.ifract()); + Draw.color(Color.WHITE, Color.ORANGE, b.fout()); Lines.stroke(1f); - Lines.lineAngleCenter(b.x, b.y, b.angle(), b.fract()*4f); + Lines.lineAngleCenter(b.x, b.y, b.angle(), b.fin()*4f); Draw.reset(); } }, @@ -454,7 +454,7 @@ public abstract class BulletType extends BaseBulletType{ } public void draw(Bullet b) { - float f = b.fract()*1.5f; + float f = b.fin()*1.5f; Draw.color(beam); Draw.rect("circle", b.x, b.y, 6f*f, 6f*f); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 42f4367697..63463baa14 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -60,7 +60,7 @@ public class Player extends SyncEntity{ } @Override - public void damage(int amount){ + public void damage(float amount){ if(debug || isAndroid) return; health -= amount; diff --git a/core/src/io/anuke/mindustry/entities/effect/EMP.java b/core/src/io/anuke/mindustry/entities/effect/EMP.java index 673ea3c247..b8301e87d6 100644 --- a/core/src/io/anuke/mindustry/entities/effect/EMP.java +++ b/core/src/io/anuke/mindustry/entities/effect/EMP.java @@ -77,7 +77,7 @@ public class EMP extends TimedEntity{ drawLine(target.worldx(), target.worldy()); - float rad = 5f*fract(); + float rad = 5f*fin(); Draw.rect("circle", target.worldx(), target.worldy(), rad, rad); } @@ -86,7 +86,7 @@ public class EMP extends TimedEntity{ drawLine(x + tr.x, y + tr.y); } - Lines.stroke(fract()*2f); + Lines.stroke(fin()*2f); Lines.poly(x, y, 34, radius * tilesize); Draw.reset(); @@ -114,7 +114,7 @@ public class EMP extends TimedEntity{ } private void drawLaser(float x, float y, float x2, float y2){ - Lines.stroke(fract() * 2f); + Lines.stroke(fin() * 2f); Lines.line(x, y, x2, y2); } } diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 8050b08d20..da56d84fde 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -72,7 +72,7 @@ public class Enemy extends SyncEntity { } @Override - public void damage(int amount){ + public void damage(float amount){ super.damage(amount); hitTime = EnemyType.hitDuration; } diff --git a/core/src/io/anuke/mindustry/graphics/Fx.java b/core/src/io/anuke/mindustry/graphics/Fx.java index ffe5df0724..8a92890190 100644 --- a/core/src/io/anuke/mindustry/graphics/Fx.java +++ b/core/src/io/anuke/mindustry/graphics/Fx.java @@ -27,125 +27,125 @@ public class Fx{ public static final Effect generatorexplosion = new Effect(28, 40f, e -> { - Angles.randLenVectors(e.id, 16, 10f + e.ifract()*8f, (x, y)->{ - float size = e.fract()*12f + 1f; - Draw.color(Color.WHITE, lightOrange, e.ifract()); + Angles.randLenVectors(e.id, 16, 10f + e.fout()*8f, (x, y)->{ + float size = e.fin()*12f + 1f; + Draw.color(Color.WHITE, lightOrange, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), reactorsmoke = new Effect(17, e -> { - Angles.randLenVectors(e.id, 4, e.ifract()*8f, (x, y)->{ - float size = 1f+e.fract()*5f; - Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.ifract()); + Angles.randLenVectors(e.id, 4, e.fout()*8f, (x, y)->{ + float size = 1f+e.fin()*5f; + Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), nuclearsmoke = new Effect(40, e -> { - Angles.randLenVectors(e.id, 4, e.ifract()*13f, (x, y)->{ - float size = e.sfract()*4f; - Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.ifract()); + Angles.randLenVectors(e.id, 4, e.fout()*13f, (x, y)->{ + float size = e.finpow()*4f; + Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), nuclearcloud = new Effect(90, 200f, e -> { - Angles.randLenVectors(e.id, 10, e.powfract()*90f, (x, y)->{ - float size = e.fract()*14f; - Draw.color(Color.LIME, Color.GRAY, e.ifract()); + Angles.randLenVectors(e.id, 10, e.finpow()*90f, (x, y)->{ + float size = e.fin()*14f; + Draw.color(Color.LIME, Color.GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), chainshot = new Effect(9f, e -> { - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Lines.stroke(e.fract()*4f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*7f); - Lines.stroke(e.fract()*2f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*10f); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Lines.stroke(e.fin()*4f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*7f); + Lines.stroke(e.fin()*2f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*10f); Draw.reset(); }), mortarshot = new Effect(10f, e -> { - Draw.color(Color.WHITE, Color.DARK_GRAY, e.ifract()); - Lines.stroke(e.fract()*6f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*10f); - Lines.stroke(e.fract()*5f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*14f); - Lines.stroke(e.fract()*1f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*16f); + Draw.color(Color.WHITE, Color.DARK_GRAY, e.fout()); + Lines.stroke(e.fin()*6f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*10f); + Lines.stroke(e.fin()*5f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*14f); + Lines.stroke(e.fin()*1f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*16f); Draw.reset(); }), railshot = new Effect(9f, e -> { - Draw.color(Color.WHITE, Color.DARK_GRAY, e.ifract()); - Lines.stroke(e.fract()*5f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*8f); - Lines.stroke(e.fract()*4f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*12f); - Lines.stroke(e.fract()*1f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*14f); + Draw.color(Color.WHITE, Color.DARK_GRAY, e.fout()); + Lines.stroke(e.fin()*5f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*8f); + Lines.stroke(e.fin()*4f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*12f); + Lines.stroke(e.fin()*1f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*14f); Draw.reset(); }), titanshot = new Effect(12f, e -> { - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Lines.stroke(e.fract()*7f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*12f); - Lines.stroke(e.fract()*4f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*16f); - Lines.stroke(e.fract()*2f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*18f); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Lines.stroke(e.fin()*7f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*12f); + Lines.stroke(e.fin()*4f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*16f); + Lines.stroke(e.fin()*2f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*18f); Draw.reset(); }), largeCannonShot = new Effect(11f, e -> { - Draw.color(Color.WHITE, whiteYellow, e.ifract()); - Lines.stroke(e.fract()*6f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*12f); - Lines.stroke(e.fract()*3f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*16f); - Lines.stroke(e.fract()*1f); - Lines.lineAngle(e.x, e.y, e.rotation, e.fract()*18f); + Draw.color(Color.WHITE, whiteYellow, e.fout()); + Lines.stroke(e.fin()*6f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*12f); + Lines.stroke(e.fin()*3f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*16f); + Lines.stroke(e.fin()*1f); + Lines.lineAngle(e.x, e.y, e.rotation, e.fin()*18f); Draw.reset(); }), shockwave = new Effect(10f, 80f, e -> { - Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.ifract()); - Lines.stroke(e.fract()*2f + 0.2f); - Lines.circle(e.x, e.y, e.ifract()*28f); + Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.fout()); + Lines.stroke(e.fin()*2f + 0.2f); + Lines.circle(e.x, e.y, e.fout()*28f); Draw.reset(); }), nuclearShockwave = new Effect(10f, 200f, e -> { - Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.ifract()); - Lines.stroke(e.fract()*3f + 0.2f); - Lines.poly(e.x, e.y, 40, e.ifract()*140f); + Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.fout()); + Lines.stroke(e.fin()*3f + 0.2f); + Lines.poly(e.x, e.y, 40, e.fout()*140f); Draw.reset(); }), shockwaveSmall = new Effect(10f, e -> { - Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.ifract()); - Lines.stroke(e.fract()*2f + 0.1f); - Lines.circle(e.x, e.y, e.ifract()*15f); + Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.fout()); + Lines.stroke(e.fin()*2f + 0.1f); + Lines.circle(e.x, e.y, e.fout()*15f); Draw.reset(); }), empshockwave = new Effect(7f, e -> { - Draw.color(Color.WHITE, Color.SKY, e.ifract()); - Lines.stroke(e.fract()*2f); - Lines.circle(e.x, e.y, e.ifract()*40f); + Draw.color(Color.WHITE, Color.SKY, e.fout()); + Lines.stroke(e.fin()*2f); + Lines.circle(e.x, e.y, e.fout()*40f); Draw.reset(); }), empspark = new Effect(13, e -> { - Angles.randLenVectors(e.id, 7, 1f + e.ifract()*12f, (x, y)->{ - float len = 1f+e.fract()*6f; + Angles.randLenVectors(e.id, 7, 1f + e.fout()*12f, (x, y)->{ + float len = 1f+e.fin()*6f; Draw.color(Color.SKY); Lines.lineAngle(e.x + x, e.y + y, Mathf.atan2(x, y), len); Draw.reset(); @@ -153,67 +153,67 @@ public class Fx{ }), redgeneratespark = new Effect(18, e -> { - Angles.randLenVectors(e.id, 5, e.ifract()*8f, (x, y)->{ - float len = e.fract()*4f; - Draw.color(Color.valueOf("fbb97f"), Color.GRAY, e.ifract()); - //Draw.alpha(e.fract()); + Angles.randLenVectors(e.id, 5, e.fout()*8f, (x, y)->{ + float len = e.fin()*4f; + Draw.color(Color.valueOf("fbb97f"), Color.GRAY, e.fout()); + //Draw.alpha(e.fin()); Draw.rect("circle", e.x + x, e.y + y, len, len); Draw.reset(); }); }), generatespark = new Effect(18, e -> { - Angles.randLenVectors(e.id, 5, e.ifract()*8f, (x, y)->{ - float len = e.fract()*4f; - Draw.color(Color.valueOf("d2b29c"), Color.GRAY, e.ifract()); - //Draw.alpha(e.fract()); + Angles.randLenVectors(e.id, 5, e.fout()*8f, (x, y)->{ + float len = e.fin()*4f; + Draw.color(Color.valueOf("d2b29c"), Color.GRAY, e.fout()); + //Draw.alpha(e.fin()); Draw.rect("circle", e.x + x, e.y + y, len, len); Draw.reset(); }); }), fuelburn = new Effect(23, e -> { - Angles.randLenVectors(e.id, 5, e.ifract()*9f, (x, y)->{ - float len = e.fract()*4f; - Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.ifract()); - //Draw.alpha(e.fract()); + Angles.randLenVectors(e.id, 5, e.fout()*9f, (x, y)->{ + float len = e.fin()*4f; + Draw.color(Color.LIGHT_GRAY, Color.GRAY, e.fout()); + //Draw.alpha(e.fin()); Draw.rect("circle", e.x + x, e.y + y, len, len); Draw.reset(); }); }), laserspark = new Effect(14, e -> { - Angles.randLenVectors(e.id, 8, 1f + e.ifract()*11f, (x, y)->{ - float len = 1f+e.fract()*5f; - Draw.color(Color.WHITE, Color.CORAL, e.ifract()); - Draw.alpha(e.ifract()/1.3f); + Angles.randLenVectors(e.id, 8, 1f + e.fout()*11f, (x, y)->{ + float len = 1f+e.fin()*5f; + Draw.color(Color.WHITE, Color.CORAL, e.fout()); + Draw.alpha(e.fout()/1.3f); Lines.lineAngle(e.x + x, e.y + y, Mathf.atan2(x, y), len); Draw.reset(); }); }), shellsmoke = new Effect(20, e -> { - Angles.randLenVectors(e.id, 8, 3f + e.ifract()*17f, (x, y)->{ - float size = 2f+e.fract()*5f; - Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.ifract()); + Angles.randLenVectors(e.id, 8, 3f + e.fout()*17f, (x, y)->{ + float size = 2f+e.fin()*5f; + Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), blastsmoke = new Effect(26, e -> { - Angles.randLenVectors(e.id, 12, 1f + e.ifract()*23f, (x, y)->{ - float size = 2f+e.fract()*6f; - Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.ifract()); + Angles.randLenVectors(e.id, 12, 1f + e.fout()*23f, (x, y)->{ + float size = 2f+e.fin()*6f; + Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); }), lava = new Effect(18, e -> { - Angles.randLenVectors(e.id, 3, 1f + e.ifract()*10f, (x, y)->{ - float size = e.sfract()*4f; - Draw.color(Color.ORANGE, Color.GRAY, e.ifract()); + Angles.randLenVectors(e.id, 3, 1f + e.fout()*10f, (x, y)->{ + float size = e.finpow()*4f; + Draw.color(Color.ORANGE, Color.GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); @@ -222,194 +222,194 @@ public class Fx{ lavabubble = new Effect(45f, e -> { Draw.color(Color.ORANGE); float scl = 0.35f; - Lines.stroke(1f - Mathf.clamp(e.ifract() - (1f-scl)) * (1f/scl)); - Lines.circle(e.x, e.y, e.ifract()*4f); + Lines.stroke(1f - Mathf.clamp(e.fout() - (1f-scl)) * (1f/scl)); + Lines.circle(e.x, e.y, e.fout()*4f); Draw.reset(); }), oilbubble = new Effect(64f, e -> { Draw.color(Color.DARK_GRAY); float scl = 0.25f; - Lines.stroke(1f - Mathf.clamp(e.ifract() - (1f-scl)) * (1f/scl)); - Lines.circle(e.x, e.y, e.ifract()*3f); + Lines.stroke(1f - Mathf.clamp(e.fout() - (1f-scl)) * (1f/scl)); + Lines.circle(e.x, e.y, e.fout()*3f); Draw.reset(); }), shellexplosion = new Effect(9, e -> { - Lines.stroke(2f - e.ifract()*1.7f); - Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.ifract()); - Lines.circle(e.x, e.y, 3f + e.ifract() * 9f); + Lines.stroke(2f - e.fout()*1.7f); + Draw.color(Color.WHITE, Color.LIGHT_GRAY, e.fout()); + Lines.circle(e.x, e.y, 3f + e.fout() * 9f); Draw.reset(); }), blastexplosion = new Effect(14, e -> { - Lines.stroke(1.2f - e.ifract()); - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Lines.circle(e.x, e.y, 1.5f + e.ifract() * 9f); + Lines.stroke(1.2f - e.fout()); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Lines.circle(e.x, e.y, 1.5f + e.fout() * 9f); Draw.reset(); }), place = new Effect(16, e -> { - Lines.stroke(3f - e.ifract() * 2f); - Lines.square(e.x, e.y, tilesize / 2f + e.ifract() * 3f); + Lines.stroke(3f - e.fout() * 2f); + Lines.square(e.x, e.y, tilesize / 2f + e.fout() * 3f); Draw.reset(); }), dooropen = new Effect(10, e -> { - Lines.stroke(e.fract() * 1.6f); - Lines.square(e.x, e.y, tilesize / 2f + e.ifract() * 2f); + Lines.stroke(e.fin() * 1.6f); + Lines.square(e.x, e.y, tilesize / 2f + e.fout() * 2f); Draw.reset(); }), doorclose= new Effect(10, e -> { - Lines.stroke(e.fract() * 1.6f); - Lines.square(e.x, e.y, tilesize / 2f + e.fract() * 2f); + Lines.stroke(e.fin() * 1.6f); + Lines.square(e.x, e.y, tilesize / 2f + e.fin() * 2f); Draw.reset(); }), dooropenlarge = new Effect(10, e -> { - Lines.stroke(e.fract() * 1.6f); - Lines.square(e.x, e.y, tilesize + e.ifract() * 2f); + Lines.stroke(e.fin() * 1.6f); + Lines.square(e.x, e.y, tilesize + e.fout() * 2f); Draw.reset(); }), doorcloselarge = new Effect(10, e -> { - Lines.stroke(e.fract() * 1.6f); - Lines.square(e.x, e.y, tilesize + e.fract() * 2f); + Lines.stroke(e.fin() * 1.6f); + Lines.square(e.x, e.y, tilesize + e.fin() * 2f); Draw.reset(); }), purify = new Effect(10, e -> { - Draw.color(Color.ROYAL, Color.GRAY, e.ifract()); + Draw.color(Color.ROYAL, Color.GRAY, e.fout()); Lines.stroke(2f); - Lines.spikes(e.x, e.y, e.ifract() * 4f, 2, 6); + Lines.spikes(e.x, e.y, e.fout() * 4f, 2, 6); Draw.reset(); }), purifyoil = new Effect(10, e -> { - Draw.color(Color.BLACK, Color.GRAY, e.ifract()); + Draw.color(Color.BLACK, Color.GRAY, e.fout()); Lines.stroke(2f); - Lines.spikes(e.x, e.y, e.ifract() * 4f, 2, 6); + Lines.spikes(e.x, e.y, e.fout() * 4f, 2, 6); Draw.reset(); }), purifystone = new Effect(10, e -> { - Draw.color(Color.ORANGE, Color.GRAY, e.ifract()); + Draw.color(Color.ORANGE, Color.GRAY, e.fout()); Lines.stroke(2f); - Lines.spikes(e.x, e.y, e.ifract() * 4f, 2, 6); + Lines.spikes(e.x, e.y, e.fout() * 4f, 2, 6); Draw.reset(); }), generate = new Effect(11, e -> { - Draw.color(Color.ORANGE, Color.YELLOW, e.ifract()); + Draw.color(Color.ORANGE, Color.YELLOW, e.fout()); Lines.stroke(1f); - Lines.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); + Lines.spikes(e.x, e.y, e.fout() * 5f, 2, 8); Draw.reset(); }), spark = new Effect(10, e -> { Lines.stroke(1f); - Draw.color(Color.WHITE, Color.GRAY, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); + Draw.color(Color.WHITE, Color.GRAY, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 5f, 2, 8); Draw.reset(); }), sparkbig = new Effect(11, e -> { Lines.stroke(1f); - Draw.color(lightRed, Color.GRAY, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 5f, 2.3f, 8); + Draw.color(lightRed, Color.GRAY, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 5f, 2.3f, 8); Draw.reset(); }), smelt = new Effect(10, e -> { Lines.stroke(1f); - Draw.color(Color.YELLOW, Color.RED, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 5f, 1f, 8); + Draw.color(Color.YELLOW, Color.RED, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 5f, 1f, 8); Draw.reset(); }), breakBlock = new Effect(12, e -> { Lines.stroke(2f); - Draw.color(Color.WHITE, Colors.get("break"), e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 6f, 2, 5, 90); + Draw.color(Color.WHITE, Colors.get("break"), e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 6f, 2, 5, 90); Draw.reset(); }), hit = new Effect(10, e -> { Lines.stroke(1f); - Draw.color(Color.WHITE, Color.ORANGE, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 3f, 2, 8); + Draw.color(Color.WHITE, Color.ORANGE, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 3f, 2, 8); Draw.reset(); }), laserhit = new Effect(10, e -> { Lines.stroke(1f); - Draw.color(Color.WHITE, Color.SKY, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 2f, 2, 6); + Draw.color(Color.WHITE, Color.SKY, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 2f, 2, 6); Draw.reset(); }), shieldhit = new Effect(9, e -> { Lines.stroke(1f); - Draw.color(Color.WHITE, Color.SKY, e.ifract()); - Lines.spikes(e.x, e.y, e.ifract() * 5f, 2, 6); - Lines.stroke(4f*e.fract()); - Lines.circle(e.x, e.y, e.ifract()*14f); + Draw.color(Color.WHITE, Color.SKY, e.fout()); + Lines.spikes(e.x, e.y, e.fout() * 5f, 2, 6); + Lines.stroke(4f*e.fin()); + Lines.circle(e.x, e.y, e.fout()*14f); Draw.reset(); }), laserShoot = new Effect(8, e -> { - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 6f, 2f, 0.8f); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fin(), 6f, 2f, 0.8f); Draw.reset(); }), spreadShoot = new Effect(12, e -> { - Draw.color(Color.WHITE, Color.PURPLE, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 9f, 3.5f, 0.8f); + Draw.color(Color.WHITE, Color.PURPLE, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fin(), 9f, 3.5f, 0.8f); Draw.reset(); }), clusterShoot = new Effect(12, e -> { - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 10f, 2.5f, 0.7f); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fin(), 10f, 2.5f, 0.7f); Draw.reset(); }), vulcanShoot = new Effect(8, e -> { - Draw.color(lighterOrange, lightOrange, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 10f, 2f, 0.7f); + Draw.color(lighterOrange, lightOrange, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fin(), 10f, 2f, 0.7f); Draw.reset(); }), shockShoot = new Effect(8, e -> { - Draw.color(Color.WHITE, Color.ORANGE, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 14f, 4f, 0.8f); + Draw.color(Color.WHITE, Color.ORANGE, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation, 3, e.fin(), 14f, 4f, 0.8f); Draw.reset(); }), beamShoot = new Effect(8, e -> { - Draw.color(beamLight, beam, e.ifract()); - Shapes.lineShot(e.x, e.y, e.rotation - 70, 3, e.fract(), 12f, 1f, 0.5f); - Shapes.lineShot(e.x, e.y, e.rotation + 70, 3, e.fract(), 12f, 1f, 0.5f); + Draw.color(beamLight, beam, e.fout()); + Shapes.lineShot(e.x, e.y, e.rotation - 70, 3, e.fin(), 12f, 1f, 0.5f); + Shapes.lineShot(e.x, e.y, e.rotation + 70, 3, e.fin(), 12f, 1f, 0.5f); Draw.reset(); }), beamhit = new Effect(8, e -> { - Draw.color(beamLight, beam, e.ifract()); - Lines.stroke(e.fract()*3f+0.5f); - Lines.circle(e.x, e.y, e.ifract()*8f); - Lines.spikes(e.x, e.y, e.ifract()*6f, 2f, 4, 45); + Draw.color(beamLight, beam, e.fout()); + Lines.stroke(e.fin()*3f+0.5f); + Lines.circle(e.x, e.y, e.fout()*8f); + Lines.spikes(e.x, e.y, e.fout()*6f, 2f, 4, 45); Draw.reset(); }), titanExplosion = new Effect(11, 48f, e -> { - Lines.stroke(2f*e.fract()+0.5f); - Draw.color(Color.WHITE, Color.DARK_GRAY, e.powfract()); - Lines.circle(e.x, e.y, 5f + e.powfract() * 8f); + Lines.stroke(2f*e.fin()+0.5f); + Draw.color(Color.WHITE, Color.DARK_GRAY, e.finpow()); + Lines.circle(e.x, e.y, 5f + e.finpow() * 8f); - Draw.color(e.ifract() < 0.5f ? whiteOrange : Color.DARK_GRAY); - float rad = e.fract()*10f + 5f; + Draw.color(e.fout() < 0.5f ? whiteOrange : Color.DARK_GRAY); + float rad = e.fin()*10f + 5f; Angles.randLenVectors(e.id, 5, 9f, (x, y)->{ Draw.rect("circle2", e.x + x, e.y + y, rad, rad); }); @@ -418,12 +418,12 @@ public class Fx{ }), explosion = new Effect(11, e -> { - Lines.stroke(2f*e.fract()+0.5f); - Draw.color(Color.WHITE, Color.DARK_GRAY, e.powfract()); - Lines.circle(e.x, e.y, 5f + e.powfract() * 6f); + Lines.stroke(2f*e.fin()+0.5f); + Draw.color(Color.WHITE, Color.DARK_GRAY, e.finpow()); + Lines.circle(e.x, e.y, 5f + e.finpow() * 6f); - Draw.color(e.ifract() < 0.5f ? Color.WHITE : Color.DARK_GRAY); - float rad = e.fract()*10f + 5f; + Draw.color(e.fout() < 0.5f ? Color.WHITE : Color.DARK_GRAY); + float rad = e.fin()*10f + 5f; Angles.randLenVectors(e.id, 5, 8f, (x, y)->{ Draw.rect("circle2", e.x + x, e.y + y, rad, rad); }); @@ -433,19 +433,19 @@ public class Fx{ blockexplosion = new Effect(13, e -> { - Angles.randLenVectors(e.id+1, 8, 5f + e.ifract()*11f, (x, y)->{ - float size = 2f+e.fract()*8f; - Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.ifract()); + Angles.randLenVectors(e.id+1, 8, 5f + e.fout()*11f, (x, y)->{ + float size = 2f+e.fin()*8f; + Draw.color(Color.LIGHT_GRAY, Color.DARK_GRAY, e.fout()); Draw.rect("circle", e.x + x, e.y + y, size, size); Draw.reset(); }); - Lines.stroke(2f*e.fract()+0.4f); - Draw.color(Color.WHITE, Color.ORANGE, e.powfract()); - Lines.circle(e.x, e.y, 2f + e.powfract() * 9f); + Lines.stroke(2f*e.fin()+0.4f); + Draw.color(Color.WHITE, Color.ORANGE, e.finpow()); + Lines.circle(e.x, e.y, 2f + e.finpow() * 9f); - Draw.color(e.ifract() < 0.5f ? Color.WHITE : Color.DARK_GRAY); - float rad = e.fract()*10f + 2f; + Draw.color(e.fout() < 0.5f ? Color.WHITE : Color.DARK_GRAY); + float rad = e.fin()*10f + 2f; Angles.randLenVectors(e.id, 5, 8f, (x, y)->{ Draw.rect("circle2", e.x + x, e.y + y, rad, rad); }); @@ -454,53 +454,53 @@ public class Fx{ }), clusterbomb = new Effect(10f, e -> { - Draw.color(Color.WHITE, lightOrange, e.ifract()); - Lines.stroke(e.fract()*1.5f); - Lines.poly(e.x, e.y, 4, e.fract()*8f); - Lines.circle(e.x, e.y, e.ifract()*14f); + Draw.color(Color.WHITE, lightOrange, e.fout()); + Lines.stroke(e.fin()*1.5f); + Lines.poly(e.x, e.y, 4, e.fin()*8f); + Lines.circle(e.x, e.y, e.fout()*14f); Draw.reset(); }), coreexplosion = new Effect(13, e -> { - Lines.stroke(3f-e.ifract()*2f); - Draw.color(Color.ORANGE, Color.WHITE, e.ifract()); - Lines.spikes(e.x, e.y, 5f + e.ifract() * 40f, 6, 6); - Lines.circle(e.x, e.y, 4f + e.ifract() * 40f); + Lines.stroke(3f-e.fout()*2f); + Draw.color(Color.ORANGE, Color.WHITE, e.fout()); + Lines.spikes(e.x, e.y, 5f + e.fout() * 40f, 6, 6); + Lines.circle(e.x, e.y, 4f + e.fout() * 40f); Draw.reset(); }), smoke = new Effect(100, e -> { - Draw.color(Color.GRAY, new Color(0.3f, 0.3f, 0.3f, 1f), e.ifract()); - float size = 7f-e.ifract()*7f; + Draw.color(Color.GRAY, new Color(0.3f, 0.3f, 0.3f, 1f), e.fout()); + float size = 7f-e.fout()*7f; Draw.rect("circle", e.x, e.y, size, size); Draw.reset(); }), railsmoke = new Effect(30, e -> { - Draw.color(Color.LIGHT_GRAY, Color.WHITE, e.ifract()); - float size = e.fract()*4f; + Draw.color(Color.LIGHT_GRAY, Color.WHITE, e.fout()); + float size = e.fin()*4f; Draw.rect("circle", e.x, e.y, size, size); Draw.reset(); }), chainsmoke = new Effect(30, e -> { Draw.color(lightGray); - float size = e.fract()*4f; + float size = e.fin()*4f; Draw.rect("circle", e.x, e.y, size, size); Draw.reset(); }), dashsmoke = new Effect(30, e -> { - Draw.color(Color.CORAL, Color.GRAY, e.ifract()); - float size = e.fract()*4f; + Draw.color(Color.CORAL, Color.GRAY, e.fout()); + float size = e.fin()*4f; Draw.rect("circle", e.x, e.y, size, size); Draw.reset(); }), spawn = new Effect(23, e -> { Lines.stroke(2f); - Draw.color(Color.DARK_GRAY, Color.SCARLET, e.ifract()); - Lines.circle(e.x, e.y, 7f - e.ifract() * 6f); + Draw.color(Color.DARK_GRAY, Color.SCARLET, e.fout()); + Lines.circle(e.x, e.y, 7f - e.fout() * 6f); Draw.reset(); }), @@ -512,7 +512,7 @@ public class Fx{ Draw.reset(); }), transfer = new Effect(20, e -> { - Draw.color(Color.SCARLET, Color.CLEAR, e.fract()); + Draw.color(Color.SCARLET, Color.CLEAR, e.fin()); Lines.square(e.x, e.y, 4); Lines.lineAngle(e.x, e.y, e.rotation, 5f); Draw.reset(); diff --git a/core/src/io/anuke/mindustry/input/PlaceMode.java b/core/src/io/anuke/mindustry/input/PlaceMode.java index b092ec86f7..0ac5439057 100644 --- a/core/src/io/anuke/mindustry/input/PlaceMode.java +++ b/core/src/io/anuke/mindustry/input/PlaceMode.java @@ -85,11 +85,11 @@ public enum PlaceMode{ if(tile != null && control.input().validBreak(tilex, tiley)){ if(tile.isLinked()) tile = tile.getLinked(); - float fract = control.input().breaktime / tile.getBreakTime(); + float fin = control.input().breaktime / tile.getBreakTime(); if(android && control.input().breaktime > 0){ - Draw.color(Colors.get("breakStart"), Colors.get("break"), fract); - Lines.poly(tile.drawx(), tile.drawy(), 25, 4 + (1f - fract) * 26); + Draw.color(Colors.get("breakStart"), Colors.get("break"), fin); + Lines.poly(tile.drawx(), tile.drawy(), 25, 4 + (1f - fin) * 26); } Draw.reset(); } diff --git a/core/src/io/anuke/mindustry/io/versions/Save12.java b/core/src/io/anuke/mindustry/io/versions/Save12.java index e2005172b4..cc257ff0d2 100644 --- a/core/src/io/anuke/mindustry/io/versions/Save12.java +++ b/core/src/io/anuke/mindustry/io/versions/Save12.java @@ -186,7 +186,7 @@ public class Save12 extends SaveFileVersion { stream.writeFloat(Vars.player.x); //player x/y stream.writeFloat(Vars.player.y); - stream.writeInt(Vars.player.health); //player health + stream.writeInt((int)Vars.player.health); //player health stream.writeByte(control.upgrades().getWeapons().size - 1); //amount of weapons @@ -228,7 +228,7 @@ public class Save12 extends SaveFileVersion { stream.writeFloat(enemy.x); //x stream.writeFloat(enemy.y); //y stream.writeByte(enemy.tier); //tier - stream.writeInt(enemy.health); //health + stream.writeInt((int)enemy.health); //health } //--MAP DATA-- diff --git a/core/src/io/anuke/mindustry/io/versions/Save13.java b/core/src/io/anuke/mindustry/io/versions/Save13.java index ba5d46a401..7641d3a7fe 100644 --- a/core/src/io/anuke/mindustry/io/versions/Save13.java +++ b/core/src/io/anuke/mindustry/io/versions/Save13.java @@ -200,7 +200,7 @@ public class Save13 extends SaveFileVersion { stream.writeFloat(Vars.player.x); //player x/y stream.writeFloat(Vars.player.y); - stream.writeInt(Vars.player.health); //player health + stream.writeInt((int)Vars.player.health); //player health stream.writeByte(control.upgrades().getWeapons().size - 1); //amount of weapons @@ -241,7 +241,7 @@ public class Save13 extends SaveFileVersion { stream.writeFloat(enemy.x); //x stream.writeFloat(enemy.y); //y stream.writeByte(enemy.tier); //tier - stream.writeShort(enemy.health); //health + stream.writeShort((short)enemy.health); //health } //--MAP DATA-- diff --git a/core/src/io/anuke/mindustry/io/versions/Save14.java b/core/src/io/anuke/mindustry/io/versions/Save14.java index d4efc6ee3d..9f6e2014e7 100644 --- a/core/src/io/anuke/mindustry/io/versions/Save14.java +++ b/core/src/io/anuke/mindustry/io/versions/Save14.java @@ -225,7 +225,7 @@ public class Save14 extends SaveFileVersion{ stream.writeFloat(Vars.player.x); //player x/y stream.writeFloat(Vars.player.y); - stream.writeInt(Vars.player.health); //player health + stream.writeInt((int)Vars.player.health); //player health stream.writeByte(control.upgrades().getWeapons().size - 1); //amount of weapons @@ -267,7 +267,7 @@ public class Save14 extends SaveFileVersion{ stream.writeFloat(enemy.x); //x stream.writeFloat(enemy.y); //y stream.writeByte(enemy.tier); //tier - stream.writeShort(enemy.health); //health + stream.writeShort((short)enemy.health); //health } //--MAP DATA-- diff --git a/core/src/io/anuke/mindustry/io/versions/Save15.java b/core/src/io/anuke/mindustry/io/versions/Save15.java index cd654ba7de..bcd5f8916d 100644 --- a/core/src/io/anuke/mindustry/io/versions/Save15.java +++ b/core/src/io/anuke/mindustry/io/versions/Save15.java @@ -244,7 +244,7 @@ public class Save15 extends SaveFileVersion { stream.writeFloat(player.x); //player x/y stream.writeFloat(player.y); - stream.writeInt(player.health); //player health + stream.writeInt((int)player.health); //player health stream.writeByte(control.upgrades().getWeapons().size - 1); //amount of weapons @@ -292,7 +292,7 @@ public class Save15 extends SaveFileVersion { stream.writeFloat(enemy.x); //x stream.writeFloat(enemy.y); //y stream.writeByte(enemy.tier); //tier - stream.writeShort(enemy.health); //health + stream.writeShort((short)enemy.health); //health } //--MAP DATA-- diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java index 88ecc43b6c..4fd6aa9992 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/ItemPowerGenerator.java @@ -63,10 +63,10 @@ public class ItemPowerGenerator extends Generator{ PowerEntity entity = tile.entity(); float maxPower = Math.min(powerCapacity - entity.power, powerOutput * Timers.delta()); - float mfract = maxPower/(powerOutput); + float mfin = maxPower/(powerOutput); if(entity.time > 0f){ - entity.time -= 1f/itemDuration*mfract; + entity.time -= 1f/itemDuration*mfin; entity.power += maxPower; entity.time = Mathf.clamp(entity.time); } From 7cf619e6205647a3f37837d9f036a37737092a9d Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 6 Apr 2018 17:07:33 -0400 Subject: [PATCH 23/23] Back button usage cleanup --- core/assets/version.properties | 4 ++-- .../io/anuke/mindustry/ui/dialogs/ColorPickDialog.java | 7 +++++++ .../src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java | 8 -------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index f9d3107813..c0b83ff852 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Thu Apr 05 22:28:48 EDT 2018 +#Fri Apr 06 17:05:53 EDT 2018 version=release -androidBuildCode=502 +androidBuildCode=503 name=Mindustry code=3.5 build=custom build diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ColorPickDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ColorPickDialog.java index 244dc944ea..2711c74b73 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ColorPickDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ColorPickDialog.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.ui.dialogs; +import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.Color; import io.anuke.ucore.function.Consumer; import io.anuke.ucore.scene.ui.Dialog; @@ -35,6 +36,12 @@ public class ColorPickDialog extends Dialog{ table.row(); } } + + keyDown(key->{ + if(key == Keys.ESCAPE || key == Keys.BACK) + hide(); + }); + } public void show(Consumer cons){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java index 657a8858e8..d1263f9089 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java @@ -3,8 +3,6 @@ package io.anuke.mindustry.ui.dialogs; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.Colors; import com.badlogic.gdx.utils.Align; - -import io.anuke.ucore.core.Inputs; import io.anuke.ucore.scene.ui.Dialog; public class FloatingDialog extends Dialog{ @@ -26,11 +24,5 @@ public class FloatingDialog extends Dialog{ if(key == Keys.ESCAPE || key == Keys.BACK) hide(); }); - - update(() -> { - if(Inputs.keyTap("menu")){ - hide(); - } - }); } }