Persist text zoom level across sessions

Question bank and CCS case text-size (A-/A+) previously reset to 1.0
on every app launch. Both now load their saved scale from
user://settings.cfg at startup and save on every adjustment, mirroring
the existing pattern used for dark/light mode and sound preferences.
This commit is contained in:
hz
2026-07-23 03:42:17 -05:00
parent c62eff8846
commit b88f38f29b
2 changed files with 42 additions and 0 deletions
+21
View File
@@ -17,6 +17,9 @@ signal request_failed(message: String)
const TEXT_SCALE_MIN := 0.85
const TEXT_SCALE_MAX := 1.35
const TEXT_SCALE_STEP := 0.1
const TEXT_SCALE_SETTINGS_PATH := "user://settings.cfg"
const TEXT_SCALE_SETTINGS_SECTION := "study"
const TEXT_SCALE_SETTINGS_KEY := "ccs_text_scale"
var api_url := DEFAULT_API_URL
var request: HTTPRequest
@@ -37,6 +40,7 @@ var request_access_token := ""
func _ready() -> void:
api_url = EndpointConfig.resolve(str(ProjectSettings.get_setting("step3/ccs_api_url", DEFAULT_API_URL)), "/api/ccs")
text_scale = _load_text_scale_preference()
request = HTTPRequest.new()
request.request_completed.connect(_on_request_completed)
add_child(request)
@@ -100,6 +104,23 @@ func submit_report(attempt_id: String, category: String, details: String) -> voi
func adjust_text_scale(delta: float) -> void:
text_scale = clampf(text_scale + delta, TEXT_SCALE_MIN, TEXT_SCALE_MAX)
_save_text_scale_preference(text_scale)
func _load_text_scale_preference() -> float:
var config := ConfigFile.new()
if config.load(TEXT_SCALE_SETTINGS_PATH) == OK:
var saved: float = config.get_value(TEXT_SCALE_SETTINGS_SECTION, TEXT_SCALE_SETTINGS_KEY, 1.0)
return clampf(saved, TEXT_SCALE_MIN, TEXT_SCALE_MAX)
return 1.0
func _save_text_scale_preference(value: float) -> void:
var config := ConfigFile.new()
config.load(TEXT_SCALE_SETTINGS_PATH)
config.set_value(TEXT_SCALE_SETTINGS_SECTION, TEXT_SCALE_SETTINGS_KEY, value)
if config.save(TEXT_SCALE_SETTINGS_PATH) != OK:
push_warning("Unable to save CCS text scale preference.")
func toggle_highlight(attempt_id: String, region_id: String, start: int, end: int) -> void: