示例#1
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            try
            {
                var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.RecycleInventoryItem,
                    RequestMessage = new RecycleInventoryItemMessage
                    {
                        Count  = toDelete,
                        ItemId = itemSetting.Id
                    }.ToByteString()
                });

                RecycleInventoryItemResponse recycleInventoryItemResponse = null;

                recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response);
                LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle));

                return(new MethodResult
                {
                    Success = true
                });
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));

                return(new MethodResult());
            }
        }
示例#2
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            try
            {
                RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete);

                if (response.Result == RecycleInventoryItemResponse.Types.Result.Success)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle));

                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                else
                {
                    LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning));

                    return(new MethodResult());
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));

                return(new MethodResult());
            }
        }
示例#3
0
        public void RecycleItems(ItemId itemId, int amount)
        {
            RecycleInventoryItemResponse res = _apiInventory.RecycleItem(itemId, amount).GetAwaiter().GetResult();

            if (res.Result != RecycleInventoryItemResponse.Types.Result.Success)
            {
                throw new Exception("Unable to recycle item");
            }
        }
示例#4
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            if (!_client.LoggedIn)
            {
                MethodResult result = await AcLogin();

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

            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.RecycleInventoryItem,
                RequestMessage = new RecycleInventoryItemMessage
                {
                    Count  = toDelete,
                    ItemId = itemSetting.Id
                }.ToByteString()
            });

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

            RecycleInventoryItemResponse recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response);

            switch (recycleInventoryItemResponse.Result)
            {
            case RecycleInventoryItemResponse.Types.Result.ErrorCannotRecycleIncubators:
                return(new MethodResult());

            case RecycleInventoryItemResponse.Types.Result.ErrorNotEnoughCopies:
                return(new MethodResult());

            case RecycleInventoryItemResponse.Types.Result.Success:
                LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle));

                return(new MethodResult
                {
                    Success = true
                });

            case RecycleInventoryItemResponse.Types.Result.Unset:
                return(new MethodResult());
            }
            return(new MethodResult());
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="RecycleInventoryItemReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseRecycleInventoryItemReceived(RecycleInventoryItemResponse value) => RecycleInventoryItemReceived?.Invoke(this, value);
示例#6
0
        public async Task <MethodResult> RecycleItems()
        {
            if (!UserSettings.RecycleItems)
            {
                return(new MethodResult
                {
                    Message = "Item deletion not enabled"
                });
            }

            MethodResult <List <InventoryItem> > inventoryResponse = await GetInventory();

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


            await UpdateItemList(false);

            foreach (ItemData item in Items)
            {
                InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId);

                if (itemSetting == null)
                {
                    continue;
                }

                int toDelete = item.Count - itemSetting.MaxInventory;

                if (toDelete <= 0)
                {
                    continue;
                }

                try
                {
                    RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete);

                    if (response.Result == RecycleInventoryItemResponse.Types.Result.Success)
                    {
                        LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle));
                    }
                    else
                    {
                        LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning));
                    }

                    await Task.Delay(500);
                }
                catch (Exception ex)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));
                }
            }


            return(new MethodResult
            {
                Message = "Success",
                Success = true
            });
        }
示例#7
0
        private async void disposeItem(ItemId item, int amount)
        {
            RecycleInventoryItemResponse recResp = await this._session.Client.Inventory.RecycleItem(item, amount);

            Logger.Write($"Disposed {amount} {item}s. Result: {recResp.Result}. You now have {recResp.NewCount} {item}s");
        }