Files
barotrauma-localmods/Quick Interactions/CSharp/Client/CrabUI/Components/CUIComponent/CUIComponent.Layout.cs

80 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.IO;
using Barotrauma;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;
using System.Xml;
using System.Xml.Linq;
namespace QICrabUI
{
public partial class CUIComponent
{
#region Layout --------------------------------------------------------
protected CUILayout layout;
//[CUISerializable]
public virtual CUILayout Layout
{
get => layout;
set { layout = value; layout.Host = this; }
}
public event Action OnLayoutUpdated;
public void InvokeOnLayoutUpdated() => OnLayoutUpdated?.Invoke();
/// <summary>
/// Triggers recalculation of layouts from parent and below
/// </summary>
internal void OnPropChanged([CallerMemberName] string memberName = "")
{
Layout.Changed = true;
CUIDebug.Capture(null, this, "OnPropChanged", memberName, "Layout.Changed", "true");
MainComponent?.LayoutChanged();
}
internal void OnSelfAndParentChanged([CallerMemberName] string memberName = "")
{
Layout.SelfAndParentChanged = true;
CUIDebug.Capture(null, this, "OnSelfAndParentChanged", memberName, "Layout.SelfAndParentChanged", "true");
MainComponent?.LayoutChanged();
}
/// <summary>
/// Triggers recalc of own pseudo components and nothing else
/// </summary>
internal void OnDecorPropChanged([CallerMemberName] string memberName = "")
{
Layout.DecorChanged = true;
CUIDebug.Capture(null, this, "OnDecorPropChanged", memberName, "Layout.DecorChanged", "true");
MainComponent?.LayoutChanged();
}
/// <summary>
/// Notifies parent (only) than it may need to ResizeToContent
/// </summary>
internal void OnAbsolutePropChanged([CallerMemberName] string memberName = "")
{
Layout.AbsoluteChanged = true;
CUIDebug.Capture(null, this, "OnAbsolutePropChanged", memberName, "Layout.AbsoluteChanged", "true");
MainComponent?.LayoutChanged();
}
/// <summary>
/// Triggers recalculation of layouts from this and below
/// </summary>
internal void OnChildrenPropChanged([CallerMemberName] string memberName = "")
{
Layout.ChildChanged = true;
MainComponent?.LayoutChanged();
}
#endregion
}
}