UI/Panels/BugList/BugListSegment.razor
@using Sandbox;
@using Sandbox.UI;
@namespace Battlebugs
@inherits Panel
@attribute [StyleSheet]

<root class="@(SegmentObject.IsValid() ? "" : "dead")">
	<img src="@Icon" />
</root>

@code
{
	public GameObject SegmentObject { get; set; }
	public BugResource Bug { get; set; }
	public int Index { get; set; }
	BugSegment segment = null;

	string Icon
	{
		get
		{
			if (Bug is not null)
			{
				if (Index == 0) return Bug.GetHeadIcon();
				else if (Index == Bug.SegmentCount - 1) return Bug.GetTailIcon();
				else return Bug.GetBodyIcon();
			}
			return "";
		}
	}

	protected override void OnMouseMove(MousePanelEvent e)
	{
		if ( SegmentObject.IsValid() && SegmentObject.Components.TryGet<BugSegment>( out segment ) )
		{
			if (segment.IsVisible)
			{
				InspectInput.Instance.Deselect();
				InspectInput.Instance.Select(segment, true);
				InspectorPanel.Instance.Segment = segment;
			}
		}
	}

	protected override void OnMouseOut(MousePanelEvent e)
	{
		if (segment is not null && InspectInput.Instance.HighlightedSegment == segment)
		{
			InspectInput.Instance.Deselect();
		}
	}

	protected override int BuildHash () => System.HashCode.Combine( SegmentObject.IsValid() );
}