36 lines
725 B
C#
36 lines
725 B
C#
|
using Godot;
|
||
|
using System;
|
||
|
using Godot.Collections;
|
||
|
|
||
|
namespace BITKit;
|
||
|
[Tool]
|
||
|
public partial class UXWindowService : Control
|
||
|
{
|
||
|
[Export] private Array<Button> tabs;
|
||
|
[Export] private Array<Control> windows;
|
||
|
public override void _Ready()
|
||
|
{
|
||
|
if (Engine.IsEditorHint()) return;
|
||
|
if(tabs.Count != windows.Count) throw new Exception("tabs.Count != windows.Count");
|
||
|
ButtonGroup buttonGroup = new();
|
||
|
for (var i = 0; i < tabs.Count; i++)
|
||
|
{
|
||
|
var tab = tabs[i];
|
||
|
var window = windows[i];
|
||
|
tab.Pressed += () =>
|
||
|
{
|
||
|
ShowWindow(window);
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
private void ShowWindow(CanvasItem window)
|
||
|
{
|
||
|
foreach (var x in windows)
|
||
|
{
|
||
|
//if(window.Visible is true && window != x)
|
||
|
x.Hide();
|
||
|
}
|
||
|
window.Show();
|
||
|
}
|
||
|
}
|