63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using System.Text;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
using Logger = RebootKit.Engine.Foundation.Logger;
|
|
|
|
namespace RebootKit.Engine.Services.Console {
|
|
public class ConsoleUI : MonoBehaviour {
|
|
private static readonly Logger Logger = new(nameof(ConsoleUI));
|
|
|
|
private StringBuilder _content = new();
|
|
|
|
[SerializeField]
|
|
private UIDocument _document;
|
|
|
|
private Label _labelMessage;
|
|
private TextField _textField;
|
|
private Button _submitButton;
|
|
|
|
public bool IsVisible { get; private set; }
|
|
|
|
private void OnEnable() {
|
|
IsVisible = _document.enabled;
|
|
|
|
VisualElement root = _document.rootVisualElement;
|
|
_labelMessage = root.Q<Label>("console-window-message");
|
|
_labelMessage.text = "SIEMA";
|
|
|
|
_textField = root.Q<TextField>("console-text-field");
|
|
_submitButton = root.Q<Button>("console-btn-submit");
|
|
_submitButton.clicked += OnSubmitButtonClicked;
|
|
}
|
|
|
|
private void OnSubmit(string input) {
|
|
RR.Console().Execute(input);
|
|
_textField.value = input;
|
|
}
|
|
|
|
public void SetVisibility(bool visible) {
|
|
_document.enabled = visible;
|
|
IsVisible = visible;
|
|
}
|
|
|
|
public void Write(string message) {
|
|
_content.Append(message);
|
|
_labelMessage.text = _content.ToString();
|
|
_labelMessage.MarkDirtyRepaint();
|
|
}
|
|
|
|
public void Clear() {
|
|
_content.Clear();
|
|
_labelMessage.text = "";
|
|
|
|
if (_textField != null) {
|
|
_textField.label = "";
|
|
}
|
|
}
|
|
|
|
private void OnSubmitButtonClicked() {
|
|
Logger.Info("Submit");
|
|
OnSubmit(_textField.value);
|
|
}
|
|
}
|
|
} |