diff --git a/GameServer/GameServer.csproj b/GameServer/GameServer.csproj
index 8e642cb..382445a 100644
--- a/GameServer/GameServer.csproj
+++ b/GameServer/GameServer.csproj
@@ -16,4 +16,10 @@
+
+
+ PreserveNewest
+
+
+
diff --git a/GameServer/Network/Kcp/KcpGateway.cs b/GameServer/Network/Kcp/KcpGateway.cs
index 443c18a..10d8830 100644
--- a/GameServer/Network/Kcp/KcpGateway.cs
+++ b/GameServer/Network/Kcp/KcpGateway.cs
@@ -2,8 +2,10 @@
using System.Buffers.Binary;
using System.Net;
using System.Net.Sockets;
+using GameServer.Settings;
using KcpSharp;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
namespace GameServer.Network.Kcp;
internal class KcpGateway
@@ -15,21 +17,22 @@ internal class KcpGateway
private const byte NetFlagAck = 0xEE;
private readonly ILogger _logger;
+ private readonly IOptions _options;
private readonly SessionManager _sessionManager;
private IKcpTransport? _kcpTransport;
private int _convCounter;
- public KcpGateway(ILogger logger, SessionManager sessionManager)
+ public KcpGateway(ILogger logger, IOptions options, SessionManager sessionManager)
{
_logger = logger;
+ _options = options;
_sessionManager = sessionManager;
}
public void Start()
{
- IPEndPoint endPoint = new(IPAddress.Any, 1337);
-
+ IPEndPoint endPoint = _options.Value.EndPoint;
_kcpTransport = KcpSocketTransport.CreateMultiplexConnection(new(endPoint), 1400);
_kcpTransport.SetHandshakeHandler(KcpSynPacketSize, HandleKcpSynPacket);
_kcpTransport.Start();
diff --git a/GameServer/Program.cs b/GameServer/Program.cs
index bc99585..7c06a2f 100644
--- a/GameServer/Program.cs
+++ b/GameServer/Program.cs
@@ -6,8 +6,10 @@ using GameServer.Network;
using GameServer.Network.Kcp;
using GameServer.Network.Messages;
using GameServer.Network.Rpc;
+using GameServer.Settings;
using GameServer.Systems.Entity;
using GameServer.Systems.Event;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
@@ -21,6 +23,8 @@ internal static class Program
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.AddConsole();
+ builder.Services.Configure(builder.Configuration.GetRequiredSection("Gateway"));
+
builder.Services.AddControllers()
.AddSingleton().AddScoped()
.AddScoped().AddSingleton()
diff --git a/GameServer/Settings/GatewaySettings.cs b/GameServer/Settings/GatewaySettings.cs
new file mode 100644
index 0000000..842854f
--- /dev/null
+++ b/GameServer/Settings/GatewaySettings.cs
@@ -0,0 +1,17 @@
+using System.Net;
+
+namespace GameServer.Settings;
+internal class GatewaySettings
+{
+ public required string Host { get; set; }
+
+ public IPEndPoint EndPoint
+ {
+ get
+ {
+ string[] split = Host.Split(':');
+
+ return new IPEndPoint(IPAddress.Parse(split[0]), int.Parse(split[1]));
+ }
+ }
+}
diff --git a/GameServer/appsettings.json b/GameServer/appsettings.json
new file mode 100644
index 0000000..01b53ea
--- /dev/null
+++ b/GameServer/appsettings.json
@@ -0,0 +1,5 @@
+{
+ "Gateway": {
+ "Host": "0.0.0.0:1337"
+ }
+}
\ No newline at end of file