Player request from the six-player night: a pod that dies at full throttle reappears under a hand still holding full throttle, and launches on it. The pod should respawn with the throttle at zero and stay there until the player has brought the control back to zero themselves. The arcade never met the problem in this form - its throttle was a physical lever that kept its position regardless - but the same idea protects a real lever too, which matters now that the pods want this code. The latch lives in VTVControlsMapper, the one place every control source - RIO lever, pad trigger, keyboard axis, input script - funnels through, per simulation step, so it is deterministic and local to the owning machine by construction (the mapper only runs on MasterInstance). VTV::Reset arms it through DeathReset, with one wrinkle: the controls mapper is subsystem ZERO, below BasicSubsystemCount, so Reset's subsystem loop has never reached it. It is called explicitly now. Only RegularReset latches - that is the death respawn and the first spawn (so a throttle held through the countdown no longer buys a flying start). Football's repositioning reset does not latch, and mission review has no controls. While latched the mapper computes as though the throttle were zero, but only for the pass: the true lever position is restored at the bottom of the function, so the cockpit gauge and the watchers keep showing the player the hand they need to bring down. The restore also keeps the release test honest - RIO analog events arrive on CHANGE, so a zeroed attribute would otherwise sit at zero, release the latch by itself, and hand back a live throttle the moment the hand twitched. Release is at 5% of travel: wide enough for a resting trigger or a real lever's potentiometer sitting a few counts off its stop, narrow enough that easing off does not satisfy it. Proven with the input-script harness, both directions. Throttle held at 1.0 from the green light: the pod moves 1.3cm in 30 seconds, all of it hover settle. Throttle at zero for two seconds then 1.0: the latch releases in the quiet window and the pod is 665m down the track twenty seconds later. The second run is also the normal-play case - a control already at zero releases the latch on the first step, invisibly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
108 lines
2.4 KiB
Plaintext
108 lines
2.4 KiB
Plaintext
# Visual Studio build artifacts
|
|
[Dd]ebug/
|
|
[Rr]elease/
|
|
[Dd]ebug*/
|
|
[Rr]elease*/
|
|
x64/
|
|
x86/
|
|
[Bb]in/
|
|
[Oo]bj/
|
|
ipch/
|
|
*.aps
|
|
*.ncb
|
|
*.opensdf
|
|
*.sdf
|
|
*.suo
|
|
*.user
|
|
*.cachefile
|
|
*.sln.cache
|
|
*.vspscc
|
|
*.vssscc
|
|
*.pch
|
|
*.ilk
|
|
*.tlog
|
|
*.lastbuildstate
|
|
*.idb
|
|
*.pdb
|
|
*.obj
|
|
*.o
|
|
*.exe
|
|
*.dll
|
|
*.exp
|
|
*.map
|
|
|
|
# Visual Studio per-user / IDE state
|
|
.vs/
|
|
*.VC.db
|
|
*.VC.opendb
|
|
|
|
# Runtime / generated output
|
|
*.log
|
|
rpl4.log
|
|
|
|
# Where the game window and the exploded view's panes were last dragged
|
|
# to (RP412MFDLAYOUT). Per-machine by nature - it is screen coordinates
|
|
# on somebody's desk.
|
|
mfd_layout.cfg
|
|
|
|
# The pilot's callsign, remembered between sessions. Whoever is sitting
|
|
# at this machine, which is not the repo's business.
|
|
pilot.cfg
|
|
|
|
# Generated by stamp-version.ps1 as RP_L4's pre-build step. The patch
|
|
# number in it IS this repository's commit count, so a committed copy
|
|
# would be stale the moment it was committed.
|
|
/RP_L4/rpl4build.h
|
|
|
|
# Build-output static libs that land in lib/ (the two committed dependency
|
|
# libs, OpenAL32.lib and libsndfile-1.lib, stay tracked).
|
|
/lib/Munga_L4.lib
|
|
/lib/DivLoader.lib
|
|
|
|
# Stale Subversion metadata
|
|
.svn/
|
|
|
|
# OS cruft
|
|
Thumbs.db
|
|
desktop.ini
|
|
.DS_Store
|
|
|
|
# Packaged runnable game (pack-dist.ps1 output)
|
|
/dist/
|
|
|
|
# Local cockpit-launcher experiments — deliberately untracked
|
|
assets/RP411/startrp-800x600.bat
|
|
assets/RP411/startrp-800x600.ps1
|
|
|
|
# Bundled game working copy: committed wholesale as runtime data (see
|
|
# docs/ASSETS.md). Re-include the binaries the global rules above would skip.
|
|
!assets/**/*.exe
|
|
!assets/**/*.dll
|
|
# ...but never the spool runtime output or Windows thumbnail caches.
|
|
assets/**/*.spl
|
|
assets/**/last.spl
|
|
|
|
# packaged releases (attached to Gitea releases, not tracked)
|
|
RedPlanet-*.zip
|
|
|
|
# Crash dumps sent in by testers. Read them with cdb against the matching
|
|
# Release\rpl4opt.pdb - the PE timestamp in the dump says which build, and
|
|
# the symbols only mean anything if it matches. They are not ours to keep
|
|
# in the history: a minidump carries process memory and the sender's own
|
|
# file paths.
|
|
/Crashdmp/
|
|
|
|
# Runtime files the game writes beside itself when run from the tree.
|
|
# environ.ini in particular is GENERATED from the template in
|
|
# RP_L4/RPL4ENVIRON.cpp - a copy committed here would be a second source
|
|
# of truth that nothing updates.
|
|
bindings.txt
|
|
environ.ini
|
|
rpl4.log
|
|
rpl4-fail.log
|
|
last.spl
|
|
SPOOLS/
|
|
|
|
# Playtest evidence - dumps, logs, symbol snapshots. Kept on disk, not in history.
|
|
playtestlogs/
|