100 lines
2.3 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
} |