public IMineDepositResult TryMine(IPropDepositModule deposit) { if (deposit is null) { throw new ArgumentNullException(nameof(deposit)); } var requiredToolTags = deposit.GetToolTags(); var hasAllTags = EquipmentHelper.HasAllTags(_tool.Scheme.Tags, requiredToolTags); if (!hasAllTags) { throw new InvalidOperationException("Попытка выполнить добычу ресурса не подходящим инструментом."); } var isSuccessfulMining = _mineDepositMethodRandomSource.RollSuccess(deposit.Difficulty); if (isSuccessfulMining) { deposit.Mine(); return(new SuccessMineDepositResult()); } else { return(new FailureMineDepositResult()); } }
public IMineDepositResult TryMine(IPropDepositModule deposit) { if (deposit is null) { throw new ArgumentNullException(nameof(deposit)); } if (deposit.GetToolTags().Any()) { throw new InvalidOperationException("Попытка выполнить добычу ресурса не подходящим инструментом."); } var isSuccessfulMining = _mineDepositMethodRandomSource.RollSuccess(deposit.Difficulty); if (isSuccessfulMining) { deposit.Mine(); return(new SuccessMineDepositResult()); } return(new FailureMineDepositResult()); }