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

72 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Barotrauma;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;
namespace QICrabUI
{
/// <summary>
/// Draggable and resizable container for other components
/// </summary>
public class CUIFrame : CUIComponent
{
public override void Draw(SpriteBatch spriteBatch)
{
if (BackgroundVisible) CUI.DrawRectangle(spriteBatch, Real, BackgroundColor, BackgroundSprite);
}
public override void DrawFront(SpriteBatch spriteBatch)
{
//if (BorderVisible) CUI.DrawBorders(spriteBatch, Real, BorderColor, BorderSprite, BorderThickness);
// GUI.DrawRectangle(spriteBatch, BorderBox.Position, BorderBox.Size, BorderColor, thickness: BorderThickness);
CUI.DrawBorders(spriteBatch, this);
if (OutlineVisible) GUI.DrawRectangle(spriteBatch, OutlineBox.Position, OutlineBox.Size, OutlineColor, thickness: OutlineThickness);
LeftResizeHandle.Draw(spriteBatch);
RightResizeHandle.Draw(spriteBatch);
//base.DrawFront(spriteBatch);
}
public event Action OnOpen;
public event Action OnClose;
/// <summary>
/// This will reveal the frame and append it to CUI.Main
/// </summary>
public void Open()
{
if (CUI.Main == null && Parent != CUI.Main) return;
CUI.Main.Append(this);
Revealed = true;
OnOpen?.Invoke();
}
/// <summary>
/// This will hide the frame and remove it from children of CUI.Main
/// </summary>
public void Close()
{
RemoveSelf();
Revealed = false;
OnClose?.Invoke();
}
public CUIFrame() : base()
{
CullChildren = true;
Resizible = true;
Draggable = true;
}
public CUIFrame(float? x = null, float? y = null, float? w = null, float? h = null) : this()
{
Relative = new CUINullRect(x, y, w, h);
}
}
}