Пример #1
0
    public bool InteractionCheck(HandApply interaction, NetworkSide side)
    {
        if (side == NetworkSide.Client)
        {
            if (interaction.HandSlot != null)
            {
                return(true);
            }
        }
        var slot = InventoryManager.GetSlotFromOriginatorHand(interaction.Performer, interaction.HandSlot.equipSlot);

        if (RelatedInterface != null)
        {
            return(RelatedInterface.CanInteraction(interaction, slot, this));
        }
        if (ContainedObjects[CurrentStage] != null)
        {
            foreach (var _Object in ContainedObjects[CurrentStage])
            {
                if (_Object.NumberNeeded > _Object.NumberPresent)
                {
                    if (_Object.GameObject != null)
                    {
                        if (slot.Item.GetComponent(_Object.IdentifyingComponent) != null)
                        {
                            return(true);
                        }
                    }
                    else if (_Object.CType != ConstructionElementType.Null)
                    {
                        var Item = slot.Item?.GetComponent <ConstructionComponent>();
                        if (Item != null)
                        {
                            if (Item.CType == _Object.CType && Item.level >= _Object.level)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }
        }

        var tool = slot.Item?.GetComponent <Tool>();

        if (tool == null)
        {
            return(false);
        }
        if (ConstructionStages[CurrentStage].ToolStage.ContainsKey(tool.ToolType))
        {
            return(true);
        }
        return(false);
    }
Пример #2
0
    public bool InteractionCheck(HandApply interaction, NetworkSide side)
    {
        if (side == NetworkSide.Client)
        {
            if (interaction.HandSlot != null)
            {
                return(true);
            }
        }

        var slot = interaction.HandSlot;

        if (RelatedInterface != null)
        {
            return(RelatedInterface.CanInteraction(interaction, slot, this));
        }
        if (ContainedObjects[CurrentStage] != null)
        {
            foreach (var _Object in ContainedObjects[CurrentStage])
            {
                if (_Object.NumberNeeded > _Object.NumberPresent)
                {
                    if (_Object.GameObject != null)
                    {
                        if (slot.Item.GetComponent(_Object.IdentifyingComponent) != null)
                        {
                            return(true);
                        }
                    }
                    else if (_Object.CType != ConstructionElementType.Null)
                    {
                        var Item = slot.Item?.GetComponent <ConstructionComponent>();
                        if (Item != null)
                        {
                            if (Item.CType == _Object.CType && Item.level >= _Object.level)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }
        }

        var tool  = slot.Item?.GetComponent <Tool>();
        var attrs = slot.Item?.GetComponent <ItemAttributes>();

        if (tool == null || attrs == null)
        {
            return(false);
        }

        foreach (var trait in attrs.GetTraits())
        {
            if (ConstructionStages[CurrentStage].TraitStage.ContainsKey(trait))
            {
                return(true);
            }
        }

        return(false);
    }