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) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-21 10:04:02 -05:00
co-authored by Claude Opus 4.8
parent 0e013fd82d
commit 3b17b60c19
3 changed files with 34 additions and 8 deletions
+12 -4
View File
@@ -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(