Files
barotrauma-localmods/Quick Interactions/CSharp/Client/Layers/UI/FabricatorButton.cs

100 lines
2.3 KiB
C#

using System;
using System.Reflection;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.IO;
using Barotrauma;
using HarmonyLib;
using Microsoft.Xna.Framework;
using QICrabUI;
using QIDependencyInjection;
namespace QuickInteractions
{
public class FabricatorButton : CUIHorizontalList
{
public static Color GetButtonColor(Item item)
{
return item.Prefab.Identifier.Value switch
{
"fabricator" => new Color(255, 255, 255),
"medicalfabricator" => new Color(255, 130, 130),
"deconstructor" => new Color(255, 255, 130),
_ => new Color(255, 255, 255),
};
}
public static CUISprite GetIcon(Item item)
{
return item.Prefab.Identifier.Value switch
{
"fabricator" => GetIcon(0, 1),
"medicalfabricator" => GetIcon(0, 1),
"deconstructor" => GetIcon(1, 1),
_ => GetIcon(0, 1),
};
}
public static CUISprite GetIcon(int x, int y) => QuickTalkButton.GetIcon(x, y);
public static string GetInteractionText(Item item)
{
return $"{item.Prefab.Name}";
}
public Item item { get; set; }
public bool TextVisible
{
get => Text.Parent != null;
set
{
if (value)
{
if (Text.Parent == null) Append(Text);
}
else
{
if (Text.Parent != null) RemoveChild(Text);
}
}
}
public CUIButton Icon;
public CUITextBlock Text;
public FabricatorButton(Item item, CUIDirection direction) : base()
{
FitContent = new CUIBool2(true, true);
Direction = direction;
this["icon"] = Icon = new CUIButton()
{
Text = "",
Border = new CUIBorder(),
BackgroundSprite = GetIcon(item),
MasterColorOpaque = GetButtonColor(item),
Absolute = QuickTalkButton.IconSize,
//ResizeToSprite = true,
};
Icon.OnMouseDown += (e) =>
{
DispatchUp(new CUICommand("interact", item));
};
Text = new CUITextBlock("")
{
TextAlign = CUIAnchor.CenterLeft,
Text = GetInteractionText(item),
TextScale = QuickTalkButton.TextScale,
Ghost = new CUIBool2(false, true),
};
this.item = item;
}
}
}