OldBlueWater/BlueWater/Assets/Doozy/Editor/Dashboard/WindowsLayouts/DashboardHomeWindowLayout.cs
2023-08-02 15:08:03 +09:00

102 lines
3.6 KiB
C#

// Copyright (c) 2015 - 2023 Doozy Entertainment. All Rights Reserved.
// This code can only be used under the standard Unity Asset Store End User License Agreement
// A Copy of the EULA APPENDIX 1 is available at http://unity3d.com/company/legal/as_terms
using System;
using System.Collections.Generic;
using System.Linq;
using Doozy.Editor.EditorUI;
using Doozy.Editor.EditorUI.Components;
using Doozy.Editor.EditorUI.ScriptableObjects.Colors;
using Doozy.Editor.EditorUI.Utils;
using Doozy.Editor.Interfaces;
using Doozy.Runtime.Colors;
using Doozy.Runtime.Common.Utils;
using Doozy.Runtime.UIElements.Extensions;
using UnityEngine;
using UnityEngine.UIElements;
// ReSharper disable MemberCanBePrivate.Local
// ReSharper disable UnusedType.Global
// ReSharper disable AutoPropertyCanBeMadeGetOnly.Local
// ReSharper disable UnusedMember.Local
namespace Doozy.Editor.Dashboard.WindowsLayouts
{
// ReSharper disable once ClassNeverInstantiated.Global
public partial class DashboardHomeWindowLayout : FluidWindowLayout, IDashboardWindowLayout
{
public bool isValid => homeSections.Count > 0;
public int order => 0;
public override string layoutName => "General";
public sealed override List<Texture2D> animatedIconTextures => EditorSpriteSheets.EditorUI.Icons.Boards;
public override Color accentColor => EditorColors.Default.UnityThemeInversed;
public override EditorSelectableColorInfo selectableAccentColor => EditorSelectableColors.Default.UnityThemeInversed;
private List<HomeSection> homeSections { get; set; }
public DashboardHomeWindowLayout()
{
AddHeader("General", "Overview", animatedIconTextures);
content
.ResetLayout()
.SetStylePadding(DesignUtils.k_Spacing)
.SetStyleBackgroundImage(EditorTextures.Dashboard.Backgrounds.DashboardBackground)
.SetStyleBackgroundScaleMode(ScaleMode.ScaleAndCrop)
.SetStyleBackgroundImageTintColor(EditorColors.Default.MenuBackgroundLevel0);
sideMenu.Dispose();
Initialize();
Compose();
}
private void Initialize()
{
//find all derived classed of HomeSection
IEnumerable<Type> sectionTypes = ReflectionUtils.GetDerivedTypes(typeof(HomeSection));
homeSections =
sectionTypes
.Select(s => (HomeSection)Activator.CreateInstance(s))
.Where(s => s.isValid)
.OrderBy(s => s.sectionOrder)
.ThenBy(s => s.sectionName)
.ToList();
}
private void Compose()
{
//add sections
VisualElement sectionContainer =
DesignUtils.row
.SetStyleFlexGrow(0);
if (homeSections.Count > 0)
{
foreach (HomeSection section in homeSections)
sectionContainer.AddChild(section);
sectionContainer.AddFlexibleSpace();
content.AddChild(sectionContainer);
}
content
.AddFlexibleSpace();
}
private static VisualElement newSection =>
new VisualElement()
.SetStyleFlexShrink(0)
.SetStylePadding(DesignUtils.k_Spacing2X)
.SetStyleMargins(DesignUtils.k_Spacing / 2f)
.SetStyleBackgroundColor(EditorColors.Default.BoxBackground.WithAlpha(0.9f))
.SetStyleBorderRadius(DesignUtils.k_Spacing2X);
}
}