feat: 梦境dos界面

This commit is contained in:
2026-07-29 15:57:44 +08:00
parent ac0b20a3a8
commit 61fb8820a3
6 changed files with 150 additions and 38 deletions
+22 -13
View File
@@ -1,9 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
using AibisDream.Framework;
using Shapes;
using TMPro;
using UnityEngine;
using UnityEngine.Localization.Settings;
using UnityEngine.Rendering;
#if UNITY_EDITOR
using UnityEditor;
@@ -96,17 +98,20 @@ namespace AibisDream.UI
[Range(0.25f, 4f)]
[SerializeField] private float bootSpeedMultiplier = 1f;
[Header("启动日志")]
[SerializeField] private List<BootLogEntry> bootSequence = new()
#endregion
#region Params dream.terminal.boot.*
private static readonly BootLogEntry[] BootSequence =
{
new BootLogEntry { text = "root@sys:~$ dream.render --stop --session 0742", style = LogStyle.Dim, delayAfter = 0.15f },
new BootLogEntry { text = "[ OK ] Dream renderer stopped.", style = LogStyle.Normal, delayAfter = 0.25f },
new BootLogEntry { text = "[ RAW ] Untitled_Greybox_0 exposed.", style = LogStyle.Normal, delayAfter = 0.35f },
new BootLogEntry { text = "root@sys:~$ trace --tail /log/dream_0742.rec", style = LogStyle.Dim, delayAfter = 0.15f },
new BootLogEntry { text = "[0005] audio.play(\"sea_ambient\", source=door.rear)", style = LogStyle.Dim, delayAfter = 0.1f },
new BootLogEntry { text = "[0006] memory.project(\"glass_sea\")", style = LogStyle.Dim, delayAfter = 0.1f },
new BootLogEntry { text = "[ WARN ] memory source unresolved; overflow detected.", style = LogStyle.Alert, delayAfter = 0.4f },
new BootLogEntry { text = "root@sys:~$ print_string(\"海是存在的吗?\")", style = LogStyle.Highlight, delayAfter = 0.5f },
new() { textKey = "l10n.dream.terminal.boot.01", style = LogStyle.Dim, delayAfter = 0.15f },
new() { textKey = "l10n.dream.terminal.boot.02", style = LogStyle.Normal, delayAfter = 0.25f },
new() { textKey = "l10n.dream.terminal.boot.03", style = LogStyle.Normal, delayAfter = 0.35f },
new() { textKey = "l10n.dream.terminal.boot.04", style = LogStyle.Dim, delayAfter = 0.15f },
new() { textKey = "l10n.dream.terminal.boot.05", style = LogStyle.Dim, delayAfter = 0.10f },
new() { textKey = "l10n.dream.terminal.boot.06", style = LogStyle.Dim, delayAfter = 0.10f },
new() { textKey = "l10n.dream.terminal.boot.07", style = LogStyle.Alert, delayAfter = 0.40f },
new() { textKey = "l10n.dream.terminal.boot.08", style = LogStyle.Highlight, delayAfter = 0.50f },
};
#endregion
@@ -752,13 +757,17 @@ namespace AibisDream.UI
{
_phase = TerminalPhase.BootSequence;
float speed = Mathf.Max(0.25f, bootSpeedMultiplier);
yield return LocalizationSettings.InitializationOperation;
yield return new WaitForSeconds(0.3f / speed);
foreach (var entry in bootSequence)
foreach (var entry in BootSequence)
{
string line = null;
yield return LocalizationKit.LocalizeParam(entry.textKey, null, s => line = s);
Color c = StyleToColor(entry.style);
float charDelay = typewriterCharDelay / speed;
_typewriterCoroutine = StartCoroutine(TypewriterLine(entry.text, c, charDelay));
_typewriterCoroutine = StartCoroutine(TypewriterLine(line, c, charDelay));
yield return WaitForTypewriter();
if (entry.delayAfter > 0f)
@@ -959,7 +968,7 @@ namespace AibisDream.UI
[Serializable]
public class BootLogEntry
{
public string text;
public string textKey;
public LogStyle style;
public float delayAfter;
}