Add project time settings functionality in App.tsx

This commit is contained in:
2026-04-12 04:33:51 +02:00
parent 466edaaf96
commit 7402da790a

View File

@@ -3217,6 +3217,72 @@ export function App({ store, initialStatusMessage }: AppProps) {
setStatusMessage(`Project renamed to ${normalizedName}.`);
};
const applyProjectTimeSettings = (
startTimeOfDayHours: number,
dayLengthMinutes: number,
label: string,
successMessage: string
) => {
const nextTime = {
startTimeOfDayHours,
dayLengthMinutes
};
if (areProjectTimeSettingsEqual(editorState.projectDocument.time, nextTime)) {
return;
}
try {
store.executeCommand(
createSetProjectTimeSettingsCommand({
label,
time: nextTime
})
);
setStatusMessage(successMessage);
} catch (error) {
setStatusMessage(getErrorMessage(error));
}
};
const applyProjectTimeStartTimeOfDay = () => {
try {
const startTimeOfDayHours = normalizeTimeOfDayHours(
readFiniteNumberDraft(
projectTimeStartTimeOfDayDraft,
"Project start time"
)
);
applyProjectTimeSettings(
startTimeOfDayHours,
editorState.projectDocument.time.dayLengthMinutes,
"Set project start time",
`Project time will start at ${formatTimeOfDayHours(startTimeOfDayHours)}.`
);
} catch (error) {
setStatusMessage(getErrorMessage(error));
}
};
const applyProjectTimeDayLengthMinutes = () => {
try {
const dayLengthMinutes = readPositiveNumberDraft(
projectTimeDayLengthMinutesDraft,
"Project day duration"
);
applyProjectTimeSettings(
editorState.projectDocument.time.startTimeOfDayHours,
dayLengthMinutes,
"Set project day length",
`Project time will advance one full day every ${dayLengthMinutes} real minutes.`
);
} catch (error) {
setStatusMessage(getErrorMessage(error));
}
};
const applySceneName = () => {
const normalizedName = sceneNameDraft.trim() || "Untitled Scene";
@@ -4172,6 +4238,17 @@ export function App({ store, initialStatusMessage }: AppProps) {
setActiveNavigationMode(nextRuntimeScene.navigationMode);
};
const handleRuntimeClockChange = (clock: RuntimeClockState) => {
setRuntimeGlobalState((currentState) =>
areRuntimeClockStatesEqual(currentState.clock, clock)
? currentState
: {
...currentState,
clock
}
);
};
const handleRunnerSceneExitActivated = (
request: RuntimeSceneExitTransitionRequest
) => {