From 1bc0ae71bf0665cb560c93bfcc9d0e8bd90a7d4e Mon Sep 17 00:00:00 2001 From: eldek Date: Sun, 5 Apr 2026 19:29:30 -0300 Subject: [PATCH] Added json config --- assets/client-config.json | 5 ++++ core/build.gradle | 3 +-- .../io/github/eldek0/config/ClientConfig.java | 7 +++++ .../github/eldek0/game/MultiplayerScreen.java | 2 +- .../io/github/eldek0/network/GameClient.java | 26 +++++++++++++++++-- .../io/github/eldek0/network/Network.java | 4 +-- .../github/eldek0/network/NetworkPackets.java | 0 gradle.properties | 1 + server/build.gradle | 4 ++- server/server-config.json | 4 +++ .../java/io/github/eldek0/GameServer.java | 21 ++++++++++++++- .../io/github/eldek0/config/ServerConfig.java | 6 +++++ settings.gradle | 1 - shared/build.gradle | 16 ------------ .../src/main/java/io/github/eldek0/Main.java | 17 ------------ 15 files changed, 74 insertions(+), 43 deletions(-) create mode 100644 assets/client-config.json create mode 100644 core/src/main/java/io/github/eldek0/config/ClientConfig.java rename {shared => core}/src/main/java/io/github/eldek0/network/Network.java (85%) rename {shared => core}/src/main/java/io/github/eldek0/network/NetworkPackets.java (100%) create mode 100644 server/server-config.json create mode 100644 server/src/main/java/io/github/eldek0/config/ServerConfig.java delete mode 100644 shared/build.gradle delete mode 100644 shared/src/main/java/io/github/eldek0/Main.java diff --git a/assets/client-config.json b/assets/client-config.json new file mode 100644 index 0000000..76e7637 --- /dev/null +++ b/assets/client-config.json @@ -0,0 +1,5 @@ +{ + "serverIP": "localhost", + "tcpPort": 9090, + "udpPort": 9091 +} diff --git a/core/build.gradle b/core/build.gradle index f66daf3..426c496 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -4,11 +4,10 @@ eclipse.project.name = appName + '-core' dependencies { api "com.badlogicgames.gdx:gdx:$gdxVersion" api "com.github.crykn:kryonet:$kryoNetVersion" - implementation project(':shared') + implementation "com.google.code.gson:gson:$gsonVersion" if(enableGraalNative == 'true') { implementation "io.github.berstanio:gdx-svmhelper-annotations:$graalHelperVersion" - implementation(project(":shared")) } } diff --git a/core/src/main/java/io/github/eldek0/config/ClientConfig.java b/core/src/main/java/io/github/eldek0/config/ClientConfig.java new file mode 100644 index 0000000..6e2066a --- /dev/null +++ b/core/src/main/java/io/github/eldek0/config/ClientConfig.java @@ -0,0 +1,7 @@ +package io.github.eldek0.config; + +public class ClientConfig { + public String serverIP; + public int udpPort; + public int tcpPort; +} diff --git a/core/src/main/java/io/github/eldek0/game/MultiplayerScreen.java b/core/src/main/java/io/github/eldek0/game/MultiplayerScreen.java index 717383f..edcb365 100644 --- a/core/src/main/java/io/github/eldek0/game/MultiplayerScreen.java +++ b/core/src/main/java/io/github/eldek0/game/MultiplayerScreen.java @@ -25,7 +25,7 @@ public class MultiplayerScreen implements Screen { gameClient = new GameClient(); try { - gameClient.connect("127.0.0.1", "Jugador"); + gameClient.connect("Jugador"); } catch (Exception e) { e.printStackTrace(); } diff --git a/core/src/main/java/io/github/eldek0/network/GameClient.java b/core/src/main/java/io/github/eldek0/network/GameClient.java index db269eb..410f075 100644 --- a/core/src/main/java/io/github/eldek0/network/GameClient.java +++ b/core/src/main/java/io/github/eldek0/network/GameClient.java @@ -3,7 +3,11 @@ package io.github.eldek0.network; import com.esotericsoftware.kryonet.Client; import com.esotericsoftware.kryonet.Connection; import com.esotericsoftware.kryonet.Listener; +import com.google.gson.Gson; +import io.github.eldek0.config.ClientConfig; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -13,8 +17,13 @@ public class GameClient { private final Client client; private final Map players = new ConcurrentHashMap<>(); private int myId = -1; + private int udpPort = Network.DEFAULT_UDP_PORT; + private int tcpPort = Network.DEFAULT_TCP_PORT; + private String serverIP; public GameClient() { + this.loadClientConfig(); + client = new Client(); Network.register(client); @@ -57,9 +66,9 @@ public class GameClient { }); } - public void connect(String host, String name) throws IOException { + public void connect(String name) throws IOException { client.start(); - client.connect(5000, host, Network.TCP_PORT, Network.UDP_PORT); + client.connect(5000, this.serverIP, this.tcpPort, this.udpPort); NetworkPackets.Login login = new NetworkPackets.Login(); login.name = name; @@ -92,4 +101,17 @@ public class GameClient { public void stop() { client.stop(); } + + private void loadClientConfig(){ + ClientConfig config = null; + try { + config = new Gson().fromJson(new FileReader("client-config.json"), ClientConfig.class); + this.udpPort = config.udpPort; + this.tcpPort = config.tcpPort; + this.serverIP = config.serverIP; + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + } diff --git a/shared/src/main/java/io/github/eldek0/network/Network.java b/core/src/main/java/io/github/eldek0/network/Network.java similarity index 85% rename from shared/src/main/java/io/github/eldek0/network/Network.java rename to core/src/main/java/io/github/eldek0/network/Network.java index 71794d8..8a52881 100644 --- a/shared/src/main/java/io/github/eldek0/network/Network.java +++ b/core/src/main/java/io/github/eldek0/network/Network.java @@ -5,8 +5,8 @@ import com.esotericsoftware.kryonet.EndPoint; import java.util.ArrayList; public class Network { - public static final int TCP_PORT = 54555; - public static final int UDP_PORT = 54777; + public static final int DEFAULT_TCP_PORT = 54555; + public static final int DEFAULT_UDP_PORT = 54777; public static void register(EndPoint endPoint) { Kryo kryo = endPoint.getKryo(); diff --git a/shared/src/main/java/io/github/eldek0/network/NetworkPackets.java b/core/src/main/java/io/github/eldek0/network/NetworkPackets.java similarity index 100% rename from shared/src/main/java/io/github/eldek0/network/NetworkPackets.java rename to core/src/main/java/io/github/eldek0/network/NetworkPackets.java diff --git a/gradle.properties b/gradle.properties index 2388c3a..0be68a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,3 +18,4 @@ graalHelperVersion=2.0.1 enableGraalNative=false gdxVersion=1.14.0 projectVersion=1.0.0 +gsonVersion=2.10.1 diff --git a/server/build.gradle b/server/build.gradle index b3c94b2..1c0cd90 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -13,7 +13,9 @@ repositories { } dependencies { - implementation project(':shared') + implementation project(':core') + implementation "com.google.code.gson:gson:$gsonVersion" + testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' diff --git a/server/server-config.json b/server/server-config.json new file mode 100644 index 0000000..7bbec53 --- /dev/null +++ b/server/server-config.json @@ -0,0 +1,4 @@ +{ + "tcpPort": 9090, + "udpPort": 9091 +} diff --git a/server/src/main/java/io/github/eldek0/GameServer.java b/server/src/main/java/io/github/eldek0/GameServer.java index 87f3297..5c47728 100644 --- a/server/src/main/java/io/github/eldek0/GameServer.java +++ b/server/src/main/java/io/github/eldek0/GameServer.java @@ -3,9 +3,13 @@ package io.github.eldek0; import com.esotericsoftware.kryonet.Connection; import com.esotericsoftware.kryonet.Listener; import com.esotericsoftware.kryonet.Server; +import com.google.gson.Gson; +import io.github.eldek0.config.ServerConfig; import io.github.eldek0.network.Network; import io.github.eldek0.network.NetworkPackets; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -14,11 +18,15 @@ public class GameServer { private final Server server; private final Map players = new ConcurrentHashMap<>(); + private int udpPort = Network.DEFAULT_UDP_PORT; + private int tcpPort = Network.DEFAULT_TCP_PORT; public GameServer() { server = new Server(); Network.register(server); + this.loadConfig(); + server.addListener(new Listener() { @Override public void connected(Connection connection) { @@ -50,6 +58,17 @@ public class GameServer { }); } + private void loadConfig() { + ServerConfig config = null; + try { + config = new Gson().fromJson(new FileReader("server-config.json"), ServerConfig.class); + this.udpPort = config.udpPort; + this.tcpPort = config.tcpPort; + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + private void handleLogin(Connection connection, NetworkPackets.Login login) { NetworkPackets.PlayerState player = new NetworkPackets.PlayerState(); player.id = connection.getID(); @@ -93,7 +112,7 @@ public class GameServer { public void start() throws IOException { server.start(); - server.bind(Network.TCP_PORT, Network.UDP_PORT); + server.bind(this.tcpPort, this.udpPort); System.out.println("Servidor iniciado."); } diff --git a/server/src/main/java/io/github/eldek0/config/ServerConfig.java b/server/src/main/java/io/github/eldek0/config/ServerConfig.java new file mode 100644 index 0000000..522c10c --- /dev/null +++ b/server/src/main/java/io/github/eldek0/config/ServerConfig.java @@ -0,0 +1,6 @@ +package io.github.eldek0.config; + +public class ServerConfig { + public int tcpPort; + public int udpPort; +} diff --git a/settings.gradle b/settings.gradle index df27f80..f736394 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,4 +8,3 @@ plugins { include 'lwjgl3', 'core' include 'server' -include 'shared' \ No newline at end of file diff --git a/shared/build.gradle b/shared/build.gradle deleted file mode 100644 index feac665..0000000 --- a/shared/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -plugins { - id 'java-library' -} - -group = 'io.github.eldek0' -version = "$projectVersion" - -repositories { - mavenCentral() - mavenLocal() - maven { url = 'https://jitpack.io' } -} - -dependencies { - api "com.github.crykn:kryonet:$kryoNetVersion" -} diff --git a/shared/src/main/java/io/github/eldek0/Main.java b/shared/src/main/java/io/github/eldek0/Main.java deleted file mode 100644 index d5ab28a..0000000 --- a/shared/src/main/java/io/github/eldek0/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.eldek0; - -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file