summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-08 17:55:41 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2026-06-08 17:55:41 +0200
commit3d15c2db5d02aed71ee4f76f07e806e6d2f4c231 (patch)
treeea3e365618181ef974d16a25817c6ed340655d1e
parentec10eebd1d61f43c3d4f9c479d2f7041b352a777 (diff)
downloadr6p-3d15c2db5d02aed71ee4f76f07e806e6d2f4c231.tar.xz
connect to local server directly
-rw-r--r--main.lua10
-rw-r--r--server.lua4
2 files changed, 11 insertions, 3 deletions
diff --git a/main.lua b/main.lua
index 871b9c9..30f21a5 100644
--- a/main.lua
+++ b/main.lua
@@ -53,7 +53,7 @@ local function save_location(save)
return love.filesystem.getSaveDirectory().."/saves/"..save..".json"
end
-local function start_client(invite)
+local function client_join(invite)
local c, err = client.join(invite)
if err then
quit_game("Invalid invite")
@@ -62,6 +62,10 @@ local function start_client(invite)
end
end
+local function client_connect(addr, secret)
+ clt = client.connect(addr, secret)
+end
+
local function start_server(save)
local s, err = server.create(save_location(save))
if err then
@@ -138,7 +142,7 @@ local function update_server()
if status == "fail" then
quit_game("Failed to register match (match server down?)")
elseif status == "active" and not clt then
- start_client(invite)
+ client_connect("localhost:" .. server.port(srv), srv.secret)
end
end
@@ -340,7 +344,7 @@ function love.load()
love.graphics.setBackgroundColor(color(0xffffff))
love.window.setTitle("RAINBOW SIX: PANOPTICON")
- dialog.main_menu = main_menu.create({ join_game = start_client, load_save = show_load_save, create_save = show_create_save })
+ dialog.main_menu = main_menu.create({ join_game = client_join, load_save = show_load_save, create_save = show_create_save })
dialog.loading = create_loading()
dialog.error = create_error()
dialog.create_player = create_create_player()
diff --git a/server.lua b/server.lua
index 02d92fd..8d85dcd 100644
--- a/server.lua
+++ b/server.lua
@@ -107,6 +107,10 @@ function server.create(filename, match_addr)
return srv
end
+function server.port(srv)
+ return srv.host:get_socket_address():match(":([^:]*)$")
+end
+
local function handle_match(srv, pkt)
if pkt.type == "server_match" then
local game_id = type(pkt.game_id) == "string" and util.base64_dec(pkt.game_id)