diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c54af0648a..cbb01cda34 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -534,6 +534,7 @@ setting.sfxvol.name = SFX Volume setting.mutesound.name = Mute Sound setting.crashreport.name = Send Anonymous Crash Reports setting.savecreate.name = Auto-Create Saves +setting.publichost.name = Public Game Visibility setting.chatopacity.name = Chat Opacity setting.playerchat.name = Display In-Game Chat uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... diff --git a/core/src/io/anuke/mindustry/core/Platform.java b/core/src/io/anuke/mindustry/core/Platform.java index 085242a3f6..e494cd3cd8 100644 --- a/core/src/io/anuke/mindustry/core/Platform.java +++ b/core/src/io/anuke/mindustry/core/Platform.java @@ -13,6 +13,11 @@ import static io.anuke.mindustry.Vars.mobile; public interface Platform{ + /**Steam: Update lobby visibility.*/ + default void updateLobby(){ + + } + /** Add a text input dialog that should show up after the field is tapped. */ default void addDialog(TextField field){ addDialog(field, 16); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index 4bc481f992..6eabbbefba 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -223,6 +223,10 @@ public class SettingsMenuDialog extends SettingsDialog{ game.checkPref("savecreate", true); + game.checkPref("publichost", false, i -> { + platform.updateLobby(); + }); + game.pref(new Setting(){ @Override public void add(SettingsTable table){ diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index ca012dbaba..0ee8135926 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -156,6 +156,11 @@ public class DesktopLauncher extends ClientLauncher{ }); } + @Override + public void updateLobby(){ + steamCore.updateLobby(); + } + @Override public void showFileChooser(String text, String content, Consumer cons, boolean open, Predicate filetype){ new FileChooser(text, file -> filetype.test(file.extension().toLowerCase()), open, cons).show(); diff --git a/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java b/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java index 11bd12d49b..dba3160f43 100644 --- a/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java +++ b/desktop/src/io/anuke/mindustry/desktop/steam/SteamCoreNetImpl.java @@ -147,7 +147,13 @@ public class SteamCoreNetImpl implements SteamNetworkingCallback, SteamMatchmaki @Override public void host(int port) throws IOException{ - smat.createLobby(LobbyType.values()[Core.settings.getInt("lobbytype", 2)], 32); + smat.createLobby(Core.settings.getBool("publichost") ? LobbyType.Public : LobbyType.FriendsOnly, 32); + } + + public void updateLobby(){ + if(currentLobby != null && Net.server()){ + smat.setLobbyType(currentLobby, Core.settings.getBool("publichost") ? LobbyType.Public : LobbyType.FriendsOnly); + } } @Override