From 5cac11b3fe1514549dee6db3be773a962232a7f1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 8 Jan 2018 22:57:07 -0500 Subject: [PATCH] Discord rich presence tweaks, wave balancing --- TODO.md | 1 + .../io/anuke/mindustry/AndroidLauncher.java | 4 +-- core/src/io/anuke/mindustry/Mindustry.java | 3 -- core/src/io/anuke/mindustry/core/UI.java | 15 +++++++++ .../anuke/mindustry/entities/WaveCreator.java | 6 ++-- .../mindustry/desktop/DesktopLauncher.java | 33 ++++++++++++------- kryonet/src/io/anuke/kryonet/KryoServer.java | 13 ++++++-- 7 files changed, 53 insertions(+), 22 deletions(-) diff --git a/TODO.md b/TODO.md index 30004d9774..4323a44a92 100644 --- a/TODO.md +++ b/TODO.md @@ -41,6 +41,7 @@ _(not necessarily planned!)_ - Underground blocks - Configurable outputs/inputs - Getting items out of the core +- Map sharing/map browser ### Balance - Slow down progression slightly diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 175a173aa7..53ee5b9295 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -94,8 +94,8 @@ public class AndroidLauncher extends AndroidApplication{ Net.setClientProvider(new KryoClient()); Net.setServerProvider(new KryoServer()); - - initialize(new Mindustry(), config); + + initialize(new Mindustry(), config); } private boolean isPackageInstalled(String packagename) { diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index c4786e8eb2..c561775d58 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -4,7 +4,6 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.I18NBundle; -import com.badlogic.gdx.utils.OrderedMap; import io.anuke.mindustry.core.*; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.io.PlatformFunction; @@ -21,8 +20,6 @@ public class Mindustry extends ModuleCore { public static boolean hasDiscord = true; public static Array args = new Array<>(); public static PlatformFunction platforms = new PlatformFunction(){}; - public static OrderedMap idMap = new OrderedMap<>(); - public static boolean externalBundle = false; @Override diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index 57a7882294..19c7da611c 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -197,5 +197,20 @@ public class UI extends SceneModule{ }); dialog.show(); } + + public void showConfirmListen(String title, String text, Consumer listener){ + FloatingDialog dialog = new FloatingDialog(title); + dialog.content().add(text).pad(4f); + dialog.buttons().defaults().size(200f, 54f).pad(2f); + dialog.buttons().addButton("$text.cancel", () -> { + dialog.hide(); + listener.accept(true); + }); + dialog.buttons().addButton("$text.ok", () -> { + dialog.hide(); + listener.accept(true); + }); + dialog.show(); + } } diff --git a/core/src/io/anuke/mindustry/entities/WaveCreator.java b/core/src/io/anuke/mindustry/entities/WaveCreator.java index d5827a6d5f..60e09425de 100644 --- a/core/src/io/anuke/mindustry/entities/WaveCreator.java +++ b/core/src/io/anuke/mindustry/entities/WaveCreator.java @@ -16,13 +16,13 @@ public class WaveCreator{ scaling = 1; after = 3; spacing = 5; - amount = 4; + amount = 3; tierscaleback = 0; }}, new EnemySpawn(EnemyTypes.blast){{ after = 4; - amount = 3; + amount = 2; spacing = 5; scaling = 2; tierscaleback = 0; @@ -65,7 +65,7 @@ public class WaveCreator{ new EnemySpawn(EnemyTypes.flamer){{ after = 12; - amount = 3; + amount = 2; spacing = 5; scaling = 3; }}, diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index e418a7a732..d916f81bed 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -41,6 +41,21 @@ public class DesktopLauncher { DiscordRPC lib = DiscordRPC.INSTANCE; String applicationId = "398246104468291591"; DiscordEventHandlers handlers = new DiscordEventHandlers(); + handlers.joinGame = secret -> { + + }; + + handlers.joinRequest = request -> { + //TODO actual text + Vars.ui.showConfirmListen("$text.join.discord.title", "$text.join.discord", b -> { + if(b){ + lib.Discord_Respond(request.userId, DiscordRPC.DISCORD_REPLY_YES); + }else{ + lib.Discord_Respond(request.userId, DiscordRPC.DISCORD_REPLY_NO); + } + }); + }; + lib.Discord_Initialize(applicationId, handlers, true, ""); Mindustry.platforms = new PlatformFunction(){ @@ -71,19 +86,19 @@ public class DesktopLauncher { DiscordRichPresence presence = new DiscordRichPresence(); if(!GameState.is(State.menu)){ - presence.state = "Map: " + Strings.capitalize(Vars.world.getMap().name); - presence.details = "Wave " + Vars.control.getWave(); + presence.state = Strings.capitalize(Vars.control.getMode().toString()) + ", Solo"; + presence.details = Strings.capitalize(Vars.world.getMap().name) + " | Wave " + Vars.control.getWave(); + presence.largeImageText = "Wave " + Vars.control.getWave(); if(Net.active() ){ presence.partyMax = 16; presence.partySize = Vars.control.playerGroup.amount(); + presence.state = Strings.capitalize(Vars.control.getMode().toString()); } }else{ presence.state = "In Menu"; } - //presence.startTimestamp = System.currentTimeMillis() / 1000; // epoch second presence.largeImageKey = "logo"; - presence.largeImageText = presence.details; lib.Discord_UpdatePresence(presence); } @@ -104,13 +119,9 @@ public class DesktopLauncher { }catch (Exception e){ e.printStackTrace(); - try{ - Net.closeServer(); - }catch (Exception p){} - - try{ - Net.disconnect(); - }catch (Exception p){} + //attempt to close connections + try{ Net.closeServer(); }catch (Exception p){} + try{ Net.disconnect(); }catch (Exception p){} //don't create crash logs for me (anuke), as it's expected if(System.getProperty("user.name").equals("anuke")) return; diff --git a/kryonet/src/io/anuke/kryonet/KryoServer.java b/kryonet/src/io/anuke/kryonet/KryoServer.java index 95d008f087..c4d4f92426 100644 --- a/kryonet/src/io/anuke/kryonet/KryoServer.java +++ b/kryonet/src/io/anuke/kryonet/KryoServer.java @@ -68,6 +68,8 @@ public class KryoServer implements ServerProvider { @Override public void disconnected (Connection connection) { + connections.removeValue(connection.getID()); + Disconnect c = new Disconnect(); c.id = connection.getID(); @@ -77,8 +79,6 @@ public class KryoServer implements ServerProvider { Gdx.app.exit(); throw new RuntimeException(e); } - - connections.removeValue(c.id); } @Override @@ -104,7 +104,14 @@ public class KryoServer implements ServerProvider { @Override public void kick(int connection) { - Connection conn = getByID(connection); + Connection conn; + try { + conn = getByID(connection); + }catch (Exception e){ + e.printStackTrace(); + connections.removeValue(connection); + return; + } KickPacket p = new KickPacket(); p.reason = (byte)KickReason.kick.ordinal();