コード例 #1
0
        private async Task ItemXChange(ChatInfo info, PlayerInfo player, ItemBox itemBox, bool aChange)
        {
            var exchange = new ItemExchangeInfo()
            {
                buttonText = "XChange",
                desc       = "Erze in das Tauschfeld legen und tauschen (ESC oder Button), dann die Erze wieder herausnehmen",
                id         = info.playerId,
                items      = GetBoxContents(player.entityId).ToArray(),
                title      = $@"{itemBox.fullName} XChange"
            };

            async void eventCallback(ItemExchangeInfo B)
            {
                if (player.entityId != B.id)
                {
                    return;
                }

                Event_Player_ItemExchange -= eventCallback;

                SetBoxContents(player.entityId, itemBox, B.items);
                if (aChange)
                {
                    await ItemXChange(info, player, itemBox, false);
                }
            }

            Event_Player_ItemExchange += eventCallback;

            await Request_Player_ItemExchange(Timeouts.Wait10m, exchange);
        }
コード例 #2
0
        public void SetBoxContents(int playerId, ItemBox itemBox, ItemStack[] contents)
        {
            if (!currentXChange.ContainsKey(playerId))
            {
                currentXChange.Add(playerId, new List <ItemStack>());
            }
            var currentBox = currentXChange[playerId] = contents?.ToList() ?? new List <ItemStack>();

            Log($"**HandleOpenXChangeCall:setBoxContents {currentBox.Aggregate("", (s, i) => s + i.id + "/" + i.count)}");
            currentXChange[playerId] = currentBox.Select(I => XChangeItem(I, itemBox)).ToList();
            Configuration.Save();
        }
コード例 #3
0
        private ItemStack XChangeItem(ItemStack aItem, ItemBox itemBox)
        {
            var sourceItem = Configuration.Current.AllowedItems.FirstOrDefault(I => I.itemId == itemBox.itemId);
            var destItem   = Configuration.Current.AllowedItems.FirstOrDefault(I => I.itemId == aItem.id);

            Log($"**HandleOpenXChangeCall:xChangeItem {sourceItem?.fullName}:{sourceItem?.itemCount} -> {destItem?.fullName}:{destItem?.itemCount}");
            if (sourceItem == null || destItem == null || sourceItem.itemCount < aItem.count || sourceItem.itemId == destItem.itemId)
            {
                return(aItem);
            }

            sourceItem.itemCount -= aItem.count;
            destItem.itemCount   += aItem.count;

            aItem.id = itemBox.itemId;

            return(aItem);
        }