Esempio n. 1
0
        private async Task <MethodResult> UseIncense(ItemId item = ItemId.ItemIncenseOrdinary)
        {
            if (!_client.LoggedIn)
            {
                MethodResult result = await AcLogin();

                if (!result.Success)
                {
                    return(result);
                }
            }

            if (Items.FirstOrDefault(x => x.ItemId == item).Count == 0)
            {
                return(new MethodResult());
            }

            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.UseIncense,
                RequestMessage = new UseIncenseMessage
                {
                    IncenseType = item
                }.ToByteString()
            });

            if (response == null)
            {
                return(new MethodResult());
            }

            UseIncenseResponse useIncenseResponse = UseIncenseResponse.Parser.ParseFrom(response);

            switch (useIncenseResponse.Result)
            {
            case UseIncenseResponse.Types.Result.IncenseAlreadyActive:
                return(new MethodResult());

            case UseIncenseResponse.Types.Result.LocationUnset:
                return(new MethodResult());

            case UseIncenseResponse.Types.Result.Success:
                LogCaller(new LoggerEventArgs(String.Format("Used incense {0}.", item), LoggerTypes.Success));
                return(new MethodResult
                {
                    Success = true
                });

            case UseIncenseResponse.Types.Result.NoneInInventory:
                return(new MethodResult());

            case UseIncenseResponse.Types.Result.Unknown:
                return(new MethodResult());
            }
            return(new MethodResult());
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="UseIncenseReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseUseIncenseReceived(UseIncenseResponse value) => UseIncenseReceived?.Invoke(this, value);