feat: 梦境dos界面
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user