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());
            }
        }
예제 #2
0
        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());
        }