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); }
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); }