From 3b17b60c199bf32a1742d099ef4f7a5dd438296c Mon Sep 17 00:00:00 2001 From: arcattack Date: Tue, 21 Jul 2026 10:04:02 -0500 Subject: [PATCH] Join bats: same glass-preference treatment as play_solo join.bat + join_lan.bat + the btoperator.py generator template now prefer build-glass\Release\btl4.exe when present and set BT_PLATFORM=glass with it -- so MP sessions on a dev checkout get PadRIO (mouse-clickable cockpit buttons: trigger config, MFD banks, radar rails) and the bindings.txt keymap, identical to solo play. Player zips (which ship only build\) fall back to the pod build exactly as before. Verified: 2-node loopback MP smoke on the GLASS build (the documented procedure: A -egg MP.EGG -net 1501 + B -net 1601 + tools/btconsole.py) -- both nodes cross-connected (GameMachineHost 1502/1602), ~150 sim ticks each, no errors. btoperator.py syntax-checked; regenerated bats carry the same guard. Co-Authored-By: Claude Opus 4.8 (1M context) --- players/join.bat | 13 +++++++++++-- players/join_lan.bat | 13 +++++++++++-- tools/btoperator.py | 16 ++++++++++++---- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/players/join.bat b/players/join.bat index 27b2d92..1563a5e 100644 --- a/players/join.bat +++ b/players/join.bat @@ -2,14 +2,23 @@ rem BT411 -- join 107.202.218.169's game (internet). Seat/mech assigned rem by the operator. Keep this file next to content\ + build\. cd /d %~dp0 -if not exist "build\Release\btl4.exe" goto badpath +rem Prefer the GLASS build when present (dev checkout): PadRIO makes the +rem cockpit surround's buttons mouse-clickable (trigger config etc.). The +rem pod build renders the same cockpit but clicks are a no-op there; player +rem zips ship only build\. +set GAME=build\Release\btl4.exe +if exist "build-glass\Release\btl4.exe" ( + set GAME=build-glass\Release\btl4.exe + set BT_PLATFORM=glass +) +if not exist "%GAME%" goto badpath if not exist "content\OPERATOR.EGG" goto badpath set BT_RELAY=107.202.218.169:1500 set BT_LOG=join.log set BT_START_INSIDE=1 set BT_DEV_GAUGES=1 cd content -..\build\Release\btl4.exe -egg OPERATOR.EGG -net 1501 +..\%GAME% -egg OPERATOR.EGG -net 1501 echo. echo The game has exited. If you did NOT quit on purpose echo (crash, or it never connected), send the operator the diff --git a/players/join_lan.bat b/players/join_lan.bat index 949f84d..da11c50 100644 --- a/players/join_lan.bat +++ b/players/join_lan.bat @@ -5,14 +5,23 @@ rem unreliable on this network, so it is pinned). If the operator's IP changes, rem update the address below (find it on the operator PC with `ipconfig`). rem Joining over the INTERNET? Use join.bat instead. cd /d %~dp0 -if not exist "build\Release\btl4.exe" goto badpath +rem Prefer the GLASS build when present (dev checkout): PadRIO makes the +rem cockpit surround's buttons mouse-clickable (trigger config etc.). The +rem pod build renders the same cockpit but clicks are a no-op there; player +rem zips ship only build\. +set GAME=build\Release\btl4.exe +if exist "build-glass\Release\btl4.exe" ( + set GAME=build-glass\Release\btl4.exe + set BT_PLATFORM=glass +) +if not exist "%GAME%" goto badpath if not exist "content\OPERATOR.EGG" goto badpath set BT_RELAY=10.0.0.46:1500 set BT_LOG=join.log set BT_START_INSIDE=1 set BT_DEV_GAUGES=1 cd content -..\build\Release\btl4.exe -egg OPERATOR.EGG -net 1501 +..\%GAME% -egg OPERATOR.EGG -net 1501 echo. echo The game has exited. If you did NOT quit on purpose echo (crash, or it never connected), send the operator the diff --git a/tools/btoperator.py b/tools/btoperator.py index 8de9535..d3d18c2 100644 --- a/tools/btoperator.py +++ b/tools/btoperator.py @@ -786,7 +786,15 @@ class Operator(QMainWindow): def guarded(header, sets, run, tail): return ("@echo off\n" + header + "cd /d %~dp0\n" - "if not exist \"build\\Release\\btl4.exe\" goto badpath\n" + # Prefer the GLASS build when present (dev checkout): PadRIO + # makes the cockpit buttons mouse-clickable; the pod build's + # clicks are a no-op. Player zips ship only build\\. + "set GAME=build\\Release\\btl4.exe\n" + "if exist \"build-glass\\Release\\btl4.exe\" (\n" + " set GAME=build-glass\\Release\\btl4.exe\n" + " set BT_PLATFORM=glass\n" + ")\n" + "if not exist \"%GAME%\" goto badpath\n" "if not exist \"content\\" + egg_name + "\" goto badpath\n" + sets + @@ -826,7 +834,7 @@ class Operator(QMainWindow): "set BT_RELAY=%s:%d\nset BT_LOG=join.log\n" "set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n" % (host, self.f_port.value()), - "..\\build\\Release\\btl4.exe -egg %s -net 1501\n" % egg_name, + "..\\%GAME% -egg %s -net 1501\n" % egg_name, net_tail)) lan_ip = _detect_lan_ip() lan_relay = ("%s:%d" % (lan_ip, self.f_port.value())) if lan_ip else "auto" @@ -843,7 +851,7 @@ class Operator(QMainWindow): "rem Joining over the INTERNET? Use join.bat instead.\n", "set BT_RELAY=%s\nset BT_LOG=join.log\n" "set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n" % lan_relay, - "..\\build\\Release\\btl4.exe -egg %s -net 1501\n" % egg_name, + "..\\%GAME% -egg %s -net 1501\n" % egg_name, net_tail)) with open(os.path.join(out_dir, "play_solo.bat"), "w", newline="\r\n") as f: @@ -854,7 +862,7 @@ class Operator(QMainWindow): "(ARENA2/DBASE/FOGDAY/...).\n", "set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n" "set BT_LOG=join.log\n", - "..\\build\\Release\\btl4.exe -egg ARENA1.EGG\n", + "..\\%GAME% -egg ARENA1.EGG\n", "echo.\necho The game has exited. If it closed unexpectedly,\n" "echo send the operator content\\join.log.\npause\n")) self.log.appendPlainText(