From d83387500ddb32336ceb47843bb920f89e51b1d1 Mon Sep 17 00:00:00 2001 From: CortexCore <2630229280@qq.com> Date: Mon, 10 Mar 2025 22:42:42 +0800 Subject: [PATCH] 1 --- Assets/Artists/Scripts/Program.cs | 8 ++- Assets/Artists/Scripts/UX/UXEscMenu.cs | 71 +++++++++++++++++-- Assets/Artists/Scripts/UX/UXLevel.cs | 2 +- Assets/Artists/UX/Style.uss | 57 +++++++++++++-- Assets/Artists/UX/ui_cosmetics-template.uxml | 6 +- Assets/Artists/UX/ui_cosmetics.uxml | 8 ++- .../UX/ui_esc_menu_dialogue-template.uxml | 10 +++ .../ui_esc_menu_dialogue-template.uxml.meta | 10 +++ Assets/Artists/UX/ui_level.uxml | 4 +- Assets/Artists/UX/ui_menu_esc.uxml | 13 ++-- Assets/Artists/UX/ux_dialogue_template.uxml | 10 ++- Assets/Artists/UX/ux_menu.uxml | 2 +- Assets/Artists/UX/ux_menu_home.uxml | 2 +- .../Models/Prefabs/turnstile.prefab | 22 ++++++ .../Scenes/scene_terminal.unity | 28 ++++++-- .../Localization/CsvLocalizationService.cs | 19 ++++- 16 files changed, 233 insertions(+), 39 deletions(-) create mode 100644 Assets/Artists/UX/ui_esc_menu_dialogue-template.uxml create mode 100644 Assets/Artists/UX/ui_esc_menu_dialogue-template.uxml.meta diff --git a/Assets/Artists/Scripts/Program.cs b/Assets/Artists/Scripts/Program.cs index 8e1eff225..2b7e7f6d8 100644 --- a/Assets/Artists/Scripts/Program.cs +++ b/Assets/Artists/Scripts/Program.cs @@ -5,6 +5,7 @@ using BITKit.UX.Settings; using Cysharp.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Net.BITKit.Localization; using Net.Like.Xue.Tokyo.UX; using Net.Project.B.UX; using Project.B.Player; @@ -61,6 +62,9 @@ namespace Net.Like.Xue.Tokyo //获取服务提供者 await using var serviceProvider = BITApp.ServiceProvider = serviceCollection.BuildServiceProvider(); + serviceProvider.GetRequiredService().Url = + @"http://server.bitfall.icu:21982/net.like.xue.tokyo/net.like.xue.tokyo.localization.csv"; + await global::Project.B.Program.BuildServiceProvider(serviceProvider,destroyCancellationToken); var uxService = serviceProvider.GetRequiredService(); @@ -75,7 +79,7 @@ namespace Net.Like.Xue.Tokyo serviceProvider.GetRequiredService(); - serviceProvider.GetRequiredService(); + serviceProvider.GetRequiredService().SubtitleLanguage="zh-CN"; serviceProvider.GetRequiredService(); @@ -85,6 +89,8 @@ namespace Net.Like.Xue.Tokyo serviceProvider.GetRequiredService(); + serviceProvider.GetRequiredService(); + serviceProvider.GetRequiredKeyedService(nameof(IUXHud)); serviceProvider.GetRequiredKeyedService(nameof(IUXMap)); diff --git a/Assets/Artists/Scripts/UX/UXEscMenu.cs b/Assets/Artists/Scripts/UX/UXEscMenu.cs index fbb5d9d91..cd1347212 100644 --- a/Assets/Artists/Scripts/UX/UXEscMenu.cs +++ b/Assets/Artists/Scripts/UX/UXEscMenu.cs @@ -13,12 +13,18 @@ using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UIElements; using System.Linq; +using BITKit.Entities; +using BITKit.Mod; +using Net.BITKit.Localization; +using YooAsset; using IUXDialogue = Net.Project.B.UX.IUXDialogue; namespace Net.Like.Xue.Tokyo.UX { public class UXEscMenu : UIToolKitPanel,IDisposable { + private readonly IEntitiesService _entitiesService; + private readonly ILocalizationService _localizationService; private readonly IDialogueService _dialogueService; private readonly IGameMapService _gameMapService; private readonly IUXDialogue _uxDialogue; @@ -29,35 +35,90 @@ namespace Net.Like.Xue.Tokyo.UX private readonly IUXKeyMap _uxKeyMap; private readonly ConcurrentDictionary _dialogues = new(); - + [UXBindPath("dialogue-container")] + private VisualElement _dialogueContainer; [UXBindPath("return-button")] private Button _returnButton; [UXBindPath("exit-button")] private Button _exitButton; - [UXBindPath("log-label")] - private Label _logLabel; + + private VisualTreeAsset _template; - public UXEscMenu(IUXService uxService, IUXDialogue uxDialogue, IGameMapService gameMapService, IUXKeyMap uxKeyMap, IDialogueService dialogueService) : base(uxService) + public UXEscMenu(IUXService uxService, IUXDialogue uxDialogue, IGameMapService gameMapService, IUXKeyMap uxKeyMap, IDialogueService dialogueService, ILocalizationService localizationService, IEntitiesService entitiesService) : base(uxService) { _uxDialogue = uxDialogue; _gameMapService = gameMapService; _uxKeyMap = uxKeyMap; _dialogueService = dialogueService; + _localizationService = localizationService; + _entitiesService = entitiesService; _uxDialogue.OnSubtitle += OnSubtitle; OnInitiated += Initiated; + OnInitiatedAsync += InitiatedAsync; _dialogueService.OnDialogueStart += OnDialogueStart; + + + } + + private async UniTask InitiatedAsync() + { + _template =await ModService.LoadAsset("ui_esc_menu_dialogue-template"); + _dialogueContainer.Clear(); } private UniTask OnDialogueStart(IDialogueData arg) { _dialogues.TryAdd(arg.Identity, arg); - _logLabel.text = string.Join("\n", _dialogues.Values.Select(x => x.Text)); + + var actorName = arg.ActorIdentity.ToString(); + + try + { + if (arg.ActorIdentity != 0) + { + foreach (var idComponent in _entitiesService.QueryComponents()) + { + if (idComponent.Id == arg.ActorIdentity) + { + actorName = idComponent.Name; + throw new OperationCanceledException(); + } + } + } + actorName = _entitiesService.QueryComponents()[0].Item1.Name; + } + catch (OperationCanceledException) + { + } + + var container = _dialogueContainer.Create(_template); + + container.Get