Allow localhosts to set "dev override preferences" to load a specific preference savefile for guests (#92770)

## About The Pull Request

A verb is now available on localhost called `"Export Save as Dev
Preferences"`

This exports your current savefile to `/config/dev_preferences.json`

If you then connect to your localhost as a guest, it will load
`dev_preferences.json` as your preference datum

This allows for devs testing the game locally to load preferences for
guests.
(Guests connecting to live servers are completely unaffected.)

## Why It's Good For The Game

Initially I only did this because the recent keybinding changes have
destroyed my muscle memory when testing w/o logging in.

But as I worked on it I thought of a few other usecases, like when
implementing preference version migration - the dev preference is never
saved which means you can re-compile as much as you want without needing
to revert your save manually.
This commit is contained in:
MrMelbert
2025-08-29 17:36:56 -05:00
committed by GitHub
parent 69f21ff997
commit c2b8ef1d09
8 changed files with 40 additions and 2 deletions

View File

@@ -101,8 +101,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
middleware += new middleware_type(src)
if(IS_CLIENT_OR_MOCK(parent))
load_and_save = !is_guest_key(parent.key)
load_path(parent.ckey)
if(is_guest_key(parent.key))
if(parent.is_localhost())
path = DEV_PREFS_PATH // guest + locallost = dev instance, load dev preferences if possible
else
load_and_save = FALSE // guest + not localhost = guest on live, don't save anything
else
load_path(parent.ckey) // not guest = load their actual savefile
if(load_and_save && !fexists(path))
try_savefile_type_migration()