поправлены способ передачи таймеров в vMix
This commit is contained in:
@@ -11,7 +11,7 @@ from typing import Any
|
||||
|
||||
|
||||
DEFAULT_CONFIG: dict[str, Any] = {
|
||||
"version": 21,
|
||||
"version": 22,
|
||||
"project_name": "Новый интерфейс",
|
||||
"data_source": "golf",
|
||||
"canvas": {
|
||||
@@ -68,12 +68,15 @@ class UIBuilderManager:
|
||||
except (OSError, json.JSONDecodeError, TypeError):
|
||||
return deepcopy(DEFAULT_CONFIG)
|
||||
had_legacy_shortcuts = self._has_legacy_hockey_component_shortcuts(raw)
|
||||
try:
|
||||
source_version = int(raw.get("version") or 0) if isinstance(raw, dict) else 0
|
||||
except (TypeError, ValueError):
|
||||
source_version = 0
|
||||
normalized = self._normalize(raw)
|
||||
if had_legacy_shortcuts:
|
||||
# Build61 migration: remove old hidden component-level Space/Ctrl+R
|
||||
# bindings from the persisted draft/published JSON. Shortcut Sequences
|
||||
# are intentionally untouched, so an explicitly configured Space
|
||||
# sequence remains available in the visible shortcut editor.
|
||||
if had_legacy_shortcuts or source_version < 22:
|
||||
# Build61: remove old hidden component-level Space/Ctrl+R bindings.
|
||||
# BUILD90: persist the one-time v21 -> v22 native-countdown migration
|
||||
# so old Text mirror timer steps stop producing per-second SetText traffic.
|
||||
self.save(normalized, create_backup=False)
|
||||
return normalized
|
||||
|
||||
@@ -159,7 +162,12 @@ class UIBuilderManager:
|
||||
if not isinstance(config, dict):
|
||||
return result
|
||||
|
||||
result["version"] = 21
|
||||
source_version_raw = config.get("version", 0)
|
||||
try:
|
||||
source_version = int(source_version_raw or 0)
|
||||
except (TypeError, ValueError):
|
||||
source_version = 0
|
||||
result["version"] = 22
|
||||
result["project_name"] = str(config.get("project_name") or result["project_name"])
|
||||
result["data_source"] = str(config.get("data_source") or result["data_source"])
|
||||
|
||||
@@ -426,8 +434,18 @@ class UIBuilderManager:
|
||||
"scoreboard_alternate_selected_name": str(step.get("scoreboard_alternate_selected_name") or ""),
|
||||
"game_timer_action_id": str(step.get("game_timer_action_id") or "hockey_game_timer"),
|
||||
"hockey_timer_command": str(step.get("hockey_timer_command") or "toggle") if str(step.get("hockey_timer_command") or "toggle") in {"toggle", "start", "pause", "resume"} else "toggle",
|
||||
"game_vmix_mode": str(step.get("game_vmix_mode") or "text") if str(step.get("game_vmix_mode") or "text") in {"countdown", "text"} else "text",
|
||||
"penalty_vmix_mode": str(step.get("penalty_vmix_mode") or "text") if str(step.get("penalty_vmix_mode") or "text") in {"countdown", "text"} else "text",
|
||||
# BUILD90: configs created before v22 used Text mirror as the default,
|
||||
# which pushed timer text every second. Migrate those hockey timer
|
||||
# sync steps once to native vMix countdown transport. From v22 onward
|
||||
# an explicitly selected legacy Text mirror remains available.
|
||||
"game_vmix_mode": (
|
||||
"countdown" if source_version < 22 and step_type == "hockey_vmix_timers_start"
|
||||
else (str(step.get("game_vmix_mode") or "countdown") if str(step.get("game_vmix_mode") or "countdown") in {"countdown", "text"} else "countdown")
|
||||
),
|
||||
"penalty_vmix_mode": (
|
||||
"countdown" if source_version < 22 and step_type == "hockey_vmix_timers_start"
|
||||
else (str(step.get("penalty_vmix_mode") or "countdown") if str(step.get("penalty_vmix_mode") or "countdown") in {"countdown", "text"} else "countdown")
|
||||
),
|
||||
"penalty_display_mode": "all" if str(step.get("penalty_display_mode") or "soonest") == "all" else "soonest",
|
||||
"game_vmix_input": str(step.get("game_vmix_input") or ""),
|
||||
"game_vmix_selected_name": str(step.get("game_vmix_selected_name") or ""),
|
||||
|
||||
Reference in New Issue
Block a user