
namespace Barotrauma.Items.Components
{
    partial class OutpostTerminal : ItemComponent
    {
        private SubmarineSelection selectionUI;

        public override bool Select(Character character)
        {
            if (GameMain.GameSession?.Campaign == null || !Level.IsLoadedFriendlyOutpost)
            {
                return false;
            }

            if (selectionUI == null)
            {
                selectionUI = new SubmarineSelection(true, null, GUI.Canvas);
            }

            GuiFrame = selectionUI.GuiFrame;
            selectionUI.RefreshSubmarineDisplay(true, setTransferOptionToTrue: true);
            IsActive = true;
            return base.Select(character);
        }

        public override void Update(float deltaTime, Camera cam)
        {
            if (Character.Controlled?.SelectedItem != item)
            {
                IsActive = false;
                return;
            }

            base.Update(deltaTime, cam);

            selectionUI?.Update();
        }

        protected override void RemoveComponentSpecific()
        {
            base.RemoveComponentSpecific();
            if (selectionUI != null)
            {
                selectionUI.GuiFrame.RectTransform.Parent = null;
                selectionUI = null;
            }
        }
    }
}