тест 3
This commit is contained in:
@@ -4163,12 +4163,12 @@ function startCustomTooltips() {
|
||||
};
|
||||
if (!target.Input || !target.SelectedName) return [];
|
||||
if (action === "stop" || action === "pause") {
|
||||
// BUILD104: never reseed immediately after StopCountdown. vMix has already
|
||||
// frozen its native countdown at the exact frame it received StopCountdown;
|
||||
// a following SetCountdown from the browser can be slightly older and makes
|
||||
// the on-air clock visibly jump backwards.
|
||||
// BUILD105: vMix StopCountdown means STOP + RESET TO BEGINNING. It must never
|
||||
// be used for an operator pause/stop where the current sports time has to freeze.
|
||||
// SuspendCountdown is the vMix pause-only command and preserves the exact native
|
||||
// countdown value until the next SetCountdown + StartCountdown.
|
||||
return [
|
||||
{ Function: "StopCountdown", ...target },
|
||||
{ Function: "SuspendCountdown", ...target },
|
||||
];
|
||||
}
|
||||
if (action === "set") {
|
||||
@@ -5087,10 +5087,14 @@ function startCustomTooltips() {
|
||||
runCommands.push({ Function: "StartCountdown", Input: target.input, SelectedName: target.selected_name });
|
||||
}
|
||||
} else if (force || assignmentChanged || previous?.running !== false) {
|
||||
// BUILD104: a normal Pause of a prepared/paused penalty freezes the native vMix countdown only.
|
||||
// Re-seeding after StopCountdown can visibly roll the clock back.
|
||||
// Explicit reset/set-time/assignment changes may still seed a value.
|
||||
stopCommands.push({ Function: "StopCountdown", Input: target.input, SelectedName: target.selected_name });
|
||||
// BUILD105: an unchanged prepared/paused penalty must use SuspendCountdown.
|
||||
// StopCountdown resets a native vMix countdown to its beginning. For a
|
||||
// reassigned/reset target we may still deliberately Stop + Set below.
|
||||
if (preservePausedCountdown && !assignmentChanged) {
|
||||
stopCommands.push({ Function: "SuspendCountdown", Input: target.input, SelectedName: target.selected_name });
|
||||
} else {
|
||||
stopCommands.push({ Function: "StopCountdown", Input: target.input, SelectedName: target.selected_name });
|
||||
}
|
||||
if (!preservePausedCountdown || assignmentChanged) {
|
||||
setCommands.push({ Function: "SetCountdown", Input: target.input, SelectedName: target.selected_name, Value: () => vmixCountdownValue(entry.event.remainingMs) });
|
||||
}
|
||||
@@ -13868,7 +13872,7 @@ function renderHockeyPenaltyDashboard(node, component, runtime) {
|
||||
<div class="shortcut-finish-action-list">${timerFinishActionRows(step)}</div>
|
||||
|
||||
<div class="shortcut-vmix-inventory-note"><span>${escapeHtml(shortcutInventoryLabel())}</span><small>Для каждого countdown теперь обязательно выбирается конкретный Text / SelectedName. Это исключает отправку времени в первый текстовый элемент по умолчанию.</small></div>
|
||||
<p class="shortcut-step-note">Режим <b>Countdown vMix</b>: веб-таймер является главным. Start сразу меняет состояние Runtime и независимо отправляет <code>SetCountdown → StartCountdown</code> в vMix; Pause/Stop сразу останавливают Runtime и независимо отправляют только <code>StopCountdown</code>, без повторной установки времени. Ошибка Agent не блокирует управление таймером. Каждую секунду значение в vMix не передаётся. <b>Text mirror</b> оставлен только для совместимости со старыми титрами. Для верхнего счёта используется одна penalty-плашка: при реальном большинстве она показывает ближайшее изменение численного состава; при чистом равном обоюдном удалении сама по себе не появляется.</p>
|
||||
<p class="shortcut-step-note">Режим <b>Countdown vMix</b>: веб-таймер является главным. Start сразу меняет состояние Runtime и независимо отправляет <code>SetCountdown → StartCountdown</code> в vMix; Pause/Stop сразу останавливают Runtime и независимо отправляют только <code>SuspendCountdown</code> (пауза без сброса), без повторной установки времени. Ошибка Agent не блокирует управление таймером. Каждую секунду значение в vMix не передаётся. <b>Text mirror</b> оставлен только для совместимости со старыми титрами. Для верхнего счёта используется одна penalty-плашка: при реальном большинстве она показывает ближайшее изменение численного состава; при чистом равном обоюдном удалении сама по себе не появляется.</p>
|
||||
</div>`;
|
||||
} else if (step.type === "delay") {
|
||||
body.innerHTML = `<div class="shortcut-step-grid"><label>Задержка, мс<input type="number" min="0" max="10000" step="10" data-step-field="milliseconds" value="${Number(step.milliseconds) || 0}"></label></div>`;
|
||||
|
||||
Reference in New Issue
Block a user