public static bool ToggleStatus(Player player, QuantumOutputPortMachine outputPort)
 {
     outputPort.ToggleStatus();
     if (!WorldScript.mbIsServer)
     {
         NetworkManager.instance.SendInterfaceCommand(QuantumStorageMod.QuantumOutputPortWindowKey,
                                                      nameof(ToggleStatus), null, null, outputPort, 0.0f);
     }
     return(true);
 }
 public static bool SetExemplar(Player player, QuantumOutputPortMachine outputPort, ItemBase exemplar)
 {
     outputPort.SetExemplar(exemplar);
     outputPort.MarkDirtyDelayed();
     if (!WorldScript.mbIsServer)
     {
         NetworkManager.instance.SendInterfaceCommand(QuantumStorageMod.QuantumOutputPortWindowKey,
                                                      nameof(SetExemplar), null, exemplar, outputPort, 0.0f);
     }
     return(true);
 }
        public override void HandleItemDrag(string name, ItemBase draggedItem,
                                            DragAndDropManager.DragRemoveItem dragDelegate, SegmentEntity targetEntity)
        {
            QuantumOutputPortMachine outputPort = targetEntity as QuantumOutputPortMachine;

            if (name != OutputItemIcon ||
                manager.mWindowLookup[name + "_icon"].GetComponent <UISprite>().spriteName != "empty")
            {
                return;
            }
            SetExemplar(WorldScript.mLocalPlayer, outputPort, draggedItem);
            manager.RedrawWindow();
        }
        public static NetworkInterfaceResponse HandleNetworkCommand(Player player, NetworkInterfaceCommand nic)
        {
            QuantumOutputPortMachine target = nic.target as QuantumOutputPortMachine;

            switch (nic.command)
            {
            case "SetExemplar":
                QuantumOutputPortWindow.SetExemplar(player, target, nic.itemContext);
                break;
            }

            NetworkInterfaceResponse interfaceResponse = new NetworkInterfaceResponse();

            interfaceResponse.entity    = (SegmentEntity)target;
            interfaceResponse.inventory = player.mInventory;
            return(interfaceResponse);
        }
        public override bool ButtonClicked(string name, SegmentEntity targetEntity)
        {
            utils.LogUtils.LogDebug("QuantumOutputPortWindow", "ButtonClicked name: " + name);
            QuantumOutputPortMachine outputPort = targetEntity as QuantumOutputPortMachine;

            if (name == OutputItemIcon)
            {
                utils.LogUtils.LogDebug("QuantumOutputPortWindow", "ButtonClicked outputitem");
                if (outputPort.Exemplar != null)
                {
                    utils.LogUtils.LogDebug("QuantumOutputPortWindow", "ButtonClicked outputitem - exemplar in outputPort not null");
                    SetExemplar(WorldScript.mLocalPlayer, outputPort, (ItemBase)null);
                    manager.RedrawWindow();
                }
                return(true);
            }

            if (name == ChooseItemButton)
            {
                _itemSearch = true;
                ItemSearchWindow.SetupUIRules();
                Redraw(targetEntity);
                return(true);
            }

            if (name == ToggleStatusButton)
            {
                ToggleStatus(WorldScript.mLocalPlayer, outputPort);
                manager.RedrawWindow();
            }

            if (ItemSearchWindow.HandleButtonPress(this, name, out var selectedItem))
            {
                _itemSearch = false;
                manager.RedrawWindow();
            }

            if (selectedItem == null)
            {
                return(false);
            }

            SetExemplar(WorldScript.mLocalPlayer, outputPort, selectedItem);
            return(true);
        }
        public override void UpdateMachine(SegmentEntity targetEntity)
        {
            QuantumOutputPortMachine outputPort = targetEntity as QuantumOutputPortMachine;

            if (outputPort == null)
            {
                GenericMachinePanelScript.instance.Hide();
                UIManager.RemoveUIRules("Machine");
                return;
            }

            if (!Dirty)
            {
                return;
            }

            if (_itemSearch)
            {
                if (ItemSearchWindow.UpdateMachine((BaseMachineWindow)this))
                {
                    Dirty = true;
                    return;
                }
            }
            else
            {
                ItemBase exemplar = outputPort.Exemplar;
                if (exemplar != null)
                {
                    string itemName = ItemManager.GetItemName(exemplar);
                    manager.UpdateIcon(OutputItemIcon, ItemManager.GetItemIcon(exemplar), Color.white);
                    manager.UpdateLabel(OutputTitleLabel, itemName, Color.white);
                }

                manager.UpdateLabel(OutputStatusLabel, outputPort.Enabled ? "Output enabled" : "Output disabled", Color.white);
            }

            Dirty = false;
        }
        public override bool ButtonRightClicked(string name, SegmentEntity targetEntity)
        {
            utils.LogUtils.LogDebug("QuantumOutputPortWindow", "ButtonClicked name: " + name);
            if (name != OutputItemIcon)
            {
                return(base.ButtonRightClicked(name, targetEntity));
            }

            QuantumOutputPortMachine outputPort = targetEntity as QuantumOutputPortMachine;

            if (name == OutputItemIcon)
            {
                QuantumOutputPortWindow.SetExemplar(WorldScript.mLocalPlayer, outputPort, (ItemBase)null);
                manager.RedrawWindow();
                return(true);
            }

            _itemSearch = true;
            ItemSearchWindow.SetupUIRules();
            Redraw(targetEntity);
            return(true);
        }