Skip to content

SoutheeWesty/StudSys24

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

243 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StudSys 24

StudSys 24 is a C# .NET Framework 4.8 vatSys plug-in. It bridges the ATC 24 (Roblox PTFS) environment into the professional vatSys radar suite — strips, ATIS, ground, charts, VCS.


At a glance

What Where it lives
Plugin DLL bin\Release\StudSys24.dll
Auto-detect / drop-in helper src\InstallerHelper\
One-click launcher EXE src\Launcher\
Squirrel pack pipeline scripts\build-installer.ps1
CI release workflow .github\workflows\release.yml
Public-domain reference data data\ourairports\
vatSys profile Profile\Profile.xml (and friends)
Status cheat sheet docs\CHEATSHEET.md
Companion API starter prompt docs\API_THREAD_PROMPT.md

Why a launcher? vatSys owns the manual "Connect" click. The StudSys 24 Launcher is a Windows Forms EXE that finds vatSys.exe, spawns it, then auto-shows the plugin windows on connect so the user sees strips + VCS + Ground + Charts the moment vatSys is up.

When Discord is running, the controller's Discord status card shows Github Repo + My Website buttons linking back to this repo and to your studio site.


Installing (you have two paths; pick one)

Path A — Setup.exe (recommended, auto-updating)

  1. Download Setup.exe from the latest GitHub release.
  2. Run it. StudSys 24 lands under %LocalAppData%\StudSys24\. There are no admin prompts and no folder-pickers.
  3. The installer auto-creates %USERPROFILE%\Documents\vatSys Files\Profiles\StudSys24\ on first run, drops the plugin DLL + Profile + Maps into it, then places a StudSys 24 Launcher shortcut on your desktop.
  4. Double-click the shortcut → click Start → vatSys launches with StudSys 24 wired up and the four windows open on connect.

Path B — Portable ZIP (no Squirrel, no auto-update)

  1. Download StudSys24-Portable.zip from the same GitHub release.
  2. Unzip into %USERPROFILE%\Documents\vatSys Files\Profiles\StudSys24\. (vatSys auto-discovers any folder under Profiles\.)
  3. Launch vatSys. StudSys 24 will load.

If you ever move the plugin, just move the folder — vatSys picks it up again on next launch.


One-click experience (what runs after you click Start)

  1. Launcher auto-detects vatSys.exe via:
    • HKLM\SOFTWARE\WOW6432Node\vatSys\InstallPath
    • fallback %ProgramFiles(x86)%\vatSys\vatSys.exe
    • fallback %ProgramFiles%\vatSys\vatSys.exe
  2. Launcher spawns vatSys with its own working dir set to the vatSys install folder (avoids DLL-loading surprises).
  3. When vatSys fires IPlugin.OnConnected(), StudSys24.Plugin:
    • starts the ATC24Connector (24data WebSocket + 24data REST);
    • shows the VCS / Ground / OzStrips / Charts windows;
    • starts the Zulu clock;
    • pings the Discord Rich Presence client.
  4. OzStrips populates as FDRs come in from the live feed.
  5. Ground Display refreshes once per Zulu tick while vatSys is the foreground window.

vatSys's manual Connect click is intentional and cannot be bypassed by any third-party plugin without modifying vatSys.exe itself. The Launcher does not click it for you; the rest of the flow above runs as soon as you do.


Reference data sourced from the public domain

We deliberately refresh from public-domain sources only:

  • OurAirports airports / runways / navaids / frequencies (CC0 — verified via the upstream repo's COPYING file).
  • FAA CIFP / NASR (public domain as US Government works; we reference but do not bundle).

We do not bundle FAA chart PDFs (separate redistribution terms even though their geometry is public domain). For chart images, rely on your local vatSys chart catalogue.

See docs\CHEATSHEET.md for the full file map.


Building from source

Pre-requisites (Windows):

  • .NET Framework 4.8 SDK / Visual Studio 2022 with the .NET desktop workload installed
  • nuget.exe and Squirrel.exe (both auto-downloaded by scripts\build-installer.ps1)
  • vatSys installed (so the WPF stub at ci\vatSysStub.cs can be swapped for vatSys.exe via UseVatSysStub=false)
# Restore + build everything in Release with the stub:
msbuild StudSys24.sln /t:Build /p:Configuration=Release /p:UseVatSysStub=true

# Package the Squirrel installer (creates dist\Setup.exe):
powershell -NoProfile -ExecutionPolicy Bypass `
  -File scripts\build-installer.ps1 -Version 2.1.0

Tags pushed to GitHub matching v* automatically run .github\workflows\release.yml on windows-latest, which:

  1. Builds the solution with the stub.
  2. Stages the plugin payload tree under src\Launcher\bin\Release\Payload\.
  3. Runs nuget pack against src\Launcher\StudSys24.Launcher.nuspec.
  4. Runs squirrel releasify to produce Setup.exe + RELEASES.
  5. Attaches all artifacts + a StudSys24-Portable.zip to the GitHub Release.

Architecture cheat-sheet

StudSys24 (vatSys plugin DLL, net48)
  +-- Network/ATC24Connector.cs  ──>  24data WebSocket / REST
  +-- Core/                       ──>  CoordinateTransformer, FDRManager, AtisProvider
  +-- Windows/                    ──>  VCSWindow, GroundWindow, OzStripsWindow, ChartsWindow
  +-- CDS/                        ──>  Discord Rich Presence client
  +-- Profile/*.xml               ──>  vatSys profile seed data + WindowAutoOpenStates

src/Launcher/                              (WinForms EXE, net48, SquirrelAware)
  Program.cs          ── HandleEvents(onFirstRun/onAppUpdate/onAppUninstall)
  LauncherForm.cs     ── Start/Stop UI, status, log

src/InstallerHelper/                       (Console EXE, net48, bundled in Squirrel pkgs)
  Program.cs          ── copy Payload tree into vatSys Profiles folder
                         find vatSys install + print it to stdout

src/Common/                                (Class library, net48)
  Paths.cs            ── vatSys registry + Documents path helpers

License & Terms

StudSys 24 is provided for free personal use. Redistribution, modification, or reverse-engineering of this software is strictly prohibited under the project's EULA (this is owner's call; the lead developer is responsible for any private branches they ship).

Attribution

This project was developed with the assistance of AI to ensure technical accuracy in coordinate projections and API integration.