using System.Linq; using Cthangover.Tools.Services; using Cthangover.Core.UI.Theming; using Cthangover.Mods.Interface.Tool; using Godot; namespace Cthangover.Core.UI.Tool.ScenarioEditor { /// Read-only metadata panel for the scenario in the active text tab: scene, priority, condition, switch targets, locale keys and quest references. public partial class ScenarioInfoPanel : VBoxContainer { private Label _infoScene; private Label _infoPriority; private Label _infoCondition; private Label _infoSwitchTargets; private Label _infoLocaleKeys; private Label _infoQuestRefs; /// Binds the rows once the panel enters the tree (see ). public override void _Ready() { Bind(); } /// /// Looks the rows up lazily: the tscn builder runs the constructor before /// the child nodes exist, so lookups there would fail. /// private void Bind() { if (_infoScene != null) return; SetHint("HintScene", "tools/scenario_editor/info_scene"); SetHint("HintPriority", "tools/scenario_editor/info_priority"); SetHint("HintCondition", "tools/scenario_editor/info_condition"); SetHint("HintSwitchTargets", "tools/scenario_editor/info_switch_targets"); SetHint("HintLocaleKeys", "tools/scenario_editor/info_locale_keys"); SetHint("HintQuestRefs", "tools/scenario_editor/info_quest_refs"); _infoScene = Value("InfoScene"); _infoPriority = Value("InfoPriority"); _infoCondition = Value("InfoCondition"); _infoSwitchTargets = Value("InfoSwitchTargets"); _infoLocaleKeys = Value("InfoLocaleKeys"); _infoQuestRefs = Value("InfoQuestRefs"); } private void SetHint(string node, string key) { var label = GetNode