105 lines
3.6 KiB
C#
Executable File
105 lines
3.6 KiB
C#
Executable File
using System.Collections.Generic;
|
|
using RebootKit.Engine;
|
|
using RebootKit.Engine.Foundation;
|
|
using RebootKit.Engine.UI;
|
|
using UnityEditor;
|
|
using UnityEditor.UIElements;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace RebootKitEditor.RebootWindow {
|
|
public class GameServicesView : IView {
|
|
VisualElement m_RootElement;
|
|
|
|
readonly List<Editor> m_ServiceEditors = new();
|
|
|
|
[Inject] EngineConfigAsset m_EngineConfigAsset;
|
|
|
|
public void Dispose() {
|
|
foreach (Editor editor in m_ServiceEditors) {
|
|
if (editor != null) {
|
|
Object.DestroyImmediate(editor);
|
|
}
|
|
}
|
|
m_ServiceEditors.Clear();
|
|
}
|
|
|
|
public VisualElement Build() {
|
|
m_RootElement = new ScrollView();
|
|
|
|
// int servicesLength = m_EngineConfigAsset.services?.Length ?? 0;
|
|
//
|
|
// Label servicesAmountLabel = new($"Game services: {servicesLength}") {
|
|
// style = {
|
|
// color = new Color(0.7f, 0.9f, 0.9f),
|
|
// unityFontStyleAndWeight = FontStyle.Bold
|
|
// }
|
|
// };
|
|
// m_RootElement.Add(servicesAmountLabel);
|
|
//
|
|
// for (int i = 0; i < servicesLength; i++) {
|
|
// ServiceAsset serviceAsset = m_EngineConfigAsset.services[i];
|
|
//
|
|
// VisualElement serviceView = CreateServicesView(serviceAsset);
|
|
// serviceView.style.backgroundColor = i % 2 == 0 ? new Color(0.1f, 0.1f, 0.1f) : new Color(0.2f, 0.2f, 0.2f);
|
|
// m_RootElement.Add(serviceView);
|
|
// }
|
|
|
|
return m_RootElement;
|
|
}
|
|
|
|
VisualElement CreateServicesView<T>(ServiceAsset<T> serviceAsset) where T : class, IService {
|
|
VisualElement root = new() {
|
|
style = {
|
|
paddingBottom = 4,
|
|
paddingTop = 4,
|
|
paddingLeft = 4,
|
|
paddingRight = 4,
|
|
borderBottomLeftRadius = 4,
|
|
borderBottomRightRadius = 4
|
|
}
|
|
};
|
|
|
|
VisualElement header = new() {
|
|
style = {
|
|
backgroundColor = new Color(0.2f, 0.2f, 0.2f),
|
|
paddingLeft = 8,
|
|
paddingRight = 8,
|
|
paddingTop = 4,
|
|
paddingBottom = 4,
|
|
borderTopLeftRadius = 4,
|
|
borderTopRightRadius = 4,
|
|
}
|
|
};
|
|
root.Add(header);
|
|
|
|
Label nameLabel = new(serviceAsset.name) {
|
|
style = {
|
|
color = new Color(0.7f, 0.9f, 0.9f),
|
|
unityFontStyleAndWeight = FontStyle.Bold
|
|
}
|
|
};
|
|
header.Add(nameLabel);
|
|
|
|
VisualElement editorView = new() {
|
|
style = {
|
|
backgroundColor = new Color(0.3f, 0.3f, 0.3f),
|
|
paddingLeft = 10,
|
|
paddingRight = 10,
|
|
paddingTop = 5,
|
|
paddingBottom = 5,
|
|
minHeight = 50
|
|
}
|
|
};
|
|
root.Add(editorView);
|
|
|
|
Editor editor = Editor.CreateEditor(serviceAsset);
|
|
m_ServiceEditors.Add(editor);
|
|
|
|
InspectorElement inspectorElement = new(editor);
|
|
editorView.Add(inspectorElement);
|
|
|
|
return root;
|
|
}
|
|
}
|
|
} |