Skip to content

Commit 486e884

Browse files
committed
update lobby server client
1 parent 3d6a26e commit 486e884

File tree

6 files changed

+27
-15
lines changed

6 files changed

+27
-15
lines changed
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="SpaceWar.Lobby (local 9100)" type="DotNetProject" factoryName=".NET Project">
33
<option name="EXE_PATH" value="$PROJECT_DIR$/SpaceWar.Lobby/bin/Debug/net8.0/SpaceWar.exe" />
4-
<option name="PROGRAM_PARAMETERS" value="-LocalPort 9100 -ServerUrl &quot;http://localhost:9999&quot;" />
4+
<option name="PROGRAM_PARAMETERS" value="-LocalPort 9100 -ServerUrl &quot;http://localhost:9999&quot; -GameId 99" />
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/SpaceWar.Lobby/bin/Debug/net8.0" />
66
<option name="PASS_PARENT_ENVS" value="1" />
7-
<option name="USE_EXTERNAL_CONSOLE" value="0" />
7+
<option name="ENV_FILE_PATHS" value="" />
8+
<option name="REDIRECT_INPUT_PATH" value="" />
9+
<option name="MIXED_MODE_DEBUG" value="0" />
810
<option name="USE_MONO" value="0" />
911
<option name="RUNTIME_ARGUMENTS" value="" />
12+
<option name="AUTO_ATTACH_CHILDREN" value="0" />
1013
<option name="PROJECT_PATH" value="$PROJECT_DIR$/SpaceWar.Lobby/SpaceWar.Lobby.csproj" />
1114
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
1215
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
@@ -17,4 +20,4 @@
1720
<option name="Build" />
1821
</method>
1922
</configuration>
20-
</component>
23+
</component>

samples/.run/SpaceWar.Lobby (local 9101) .run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="SpaceWar.Lobby (local 9101) " type="DotNetProject" factoryName=".NET Project">
33
<option name="EXE_PATH" value="$PROJECT_DIR$/SpaceWar.Lobby/bin/Debug/net8.0/SpaceWar.exe" />
4-
<option name="PROGRAM_PARAMETERS" value="-LocalPort 9101 -ServerUrl &quot;http://localhost:9999&quot;" />
4+
<option name="PROGRAM_PARAMETERS" value="-LocalPort 9101 -ServerUrl &quot;http://localhost:9999&quot; -GameId 99" />
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/SpaceWar.Lobby/bin/Debug/net8.0" />
66
<option name="PASS_PARENT_ENVS" value="1" />
77
<option name="ENV_FILE_PATHS" value="" />

samples/SpaceWar.Lobby/AppSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace SpaceWar;
66
public class AppSettings
77
{
88
public string Username { get; set; } = string.Empty;
9+
public int GameId { get; set; }
910
public required string LobbyName { get; set; }
1011
public required Uri ServerUrl { get; set; }
1112
public int LocalPort { get; set; }
@@ -38,6 +39,10 @@ public void ParseArgs(string[] args)
3839
if (argsDict.TryGetValue(nameof(Username), out var usernameArg) &&
3940
!string.IsNullOrWhiteSpace(usernameArg))
4041
Username = usernameArg;
42+
43+
if (argsDict.TryGetValue(nameof(GameId), out var gameIdArg) &&
44+
int.TryParse(gameIdArg, out var gameId))
45+
GameId = gameId;
4146
}
4247

4348
public static AppSettings LoadFromJson(string file)

samples/SpaceWar.Lobby/Scenes/LobbyScene.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ async Task ToggleReady()
5959
{
6060
if (!AllReachable()) return;
6161

62-
await client.ToggleReady(user);
62+
await client.ToggleReady();
6363
ready = true;
6464
}
6565

@@ -306,7 +306,7 @@ async Task RequestLobby()
306306

307307
async Task RefreshLobby()
308308
{
309-
lobbyInfo = await client.GetLobby(user);
309+
lobbyInfo = await client.GetLobby();
310310

311311
await lobbyUdpClient.HandShake(user);
312312

@@ -491,7 +491,7 @@ protected override void Dispose(bool disposing)
491491
cts.Dispose();
492492
lobbyUdpClient.Dispose();
493493
if (user is not null && lobbyInfo is { Ready: false })
494-
client.LeaveLobby(user).GetAwaiter().GetResult();
494+
client.LeaveLobby().GetAwaiter().GetResult();
495495
}
496496
catch (Exception e)
497497
{

samples/SpaceWar.Lobby/Services/LobbyHttpClient.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,22 @@ public sealed class LobbyHttpClient(AppSettings appSettings)
2525
BaseAddress = appSettings.ServerUrl,
2626
};
2727

28+
readonly Guid recreationKey = Guid.NewGuid();
29+
2830
public async Task<User> EnterLobby(string lobbyName, string username, PlayerMode mode)
2931
{
3032
var localEndpoint = await GetLocalEndpoint();
31-
var response = await client.PostAsJsonAsync("/lobby", new
33+
var response = await client.PostAsJsonAsync($"/{appSettings.GameId}/lobby", new
3234
{
3335
lobbyName,
3436
username,
3537
mode,
3638
localEndpoint,
39+
recreationKey,
3740
}, jsonOptions);
3841

3942
if (response.StatusCode is HttpStatusCode.UnprocessableEntity)
40-
throw new InvalidOperationException("Already started");
43+
throw new InvalidOperationException("Failed to enter lobby");
4144

4245
response.EnsureSuccessStatusCode();
4346

@@ -49,19 +52,19 @@ public async Task<User> EnterLobby(string lobbyName, string username, PlayerMode
4952
return result;
5053
}
5154

52-
public async Task<Lobby> GetLobby(User user) =>
53-
await client.GetFromJsonAsync<Lobby>($"/lobby/{user.LobbyName}", jsonOptions)
55+
public async Task<Lobby> GetLobby() =>
56+
await client.GetFromJsonAsync<Lobby>("/entry/lobby", jsonOptions)
5457
?? throw new InvalidOperationException();
5558

56-
public async Task LeaveLobby(User user)
59+
public async Task LeaveLobby()
5760
{
58-
var response = await client.DeleteAsync($"/lobby/{user.LobbyName}");
61+
var response = await client.DeleteAsync("/entry");
5962
response.EnsureSuccessStatusCode();
6063
}
6164

62-
public async Task ToggleReady(User user)
65+
public async Task ToggleReady()
6366
{
64-
var response = await client.PutAsync($"/lobby/{user.LobbyName}", null);
67+
var response = await client.PutAsync("/entry/ready", null);
6568
response.EnsureSuccessStatusCode();
6669
}
6770

samples/SpaceWar.Lobby/appsettings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"LobbyName": "spacewar",
3+
"GameId": 0,
34
"LocalPort": 9000,
45
"ServerUrl": "https://lobby-server.fly.dev",
56
"ServerUdpPort": 8888

0 commit comments

Comments
 (0)