예제 #1
0
        protected virtual void NetFuncSetDealingItem(short itemIndex, short amount)
        {
            if (DealingState != DealingState.Dealing)
            {
                gameManager.SendServerGameMessage(ConnectionId, GameMessage.Type.InvalidDealingState);
                return;
            }

            if (itemIndex >= nonEquipItems.Count)
            {
                return;
            }

            DealingCharacterItems dealingItems = DealingItems;

            for (int i = dealingItems.Count - 1; i >= 0; --i)
            {
                if (itemIndex == dealingItems[i].nonEquipIndex)
                {
                    dealingItems.RemoveAt(i);
                    break;
                }
            }
            CharacterItem characterItem = nonEquipItems[itemIndex].Clone();

            characterItem.amount = amount;
            DealingCharacterItem dealingItem = new DealingCharacterItem();

            dealingItem.nonEquipIndex = itemIndex;
            dealingItem.characterItem = characterItem;
            dealingItems.Add(dealingItem);
            // Update to clients
            DealingItems = dealingItems;
        }
        protected virtual void NetFuncSetDealingItem(ushort itemIndex, short amount)
        {
            if (DealingState != DealingState.Dealing)
            {
                GameManager.SendServerGameMessage(ConnectionId, GameMessage.Type.InvalidDealingState);
                return;
            }

            if (itemIndex >= nonEquipItems.Count)
            {
                return;
            }

            var dealingItems = DealingItems;

            for (var i = dealingItems.Count - 1; i >= 0; --i)
            {
                if (itemIndex == dealingItems[i].nonEquipIndex)
                {
                    dealingItems.RemoveAt(i);
                    break;
                }
            }
            var characterItem = nonEquipItems[itemIndex];
            var dealingItem   = new DealingCharacterItem();

            dealingItem.nonEquipIndex = itemIndex;
            dealingItem.dataId        = characterItem.dataId;
            dealingItem.level         = characterItem.level;
            dealingItem.amount        = amount;
            dealingItem.durability    = characterItem.durability;
            dealingItems.Add(dealingItem);
            // Update to clients
            DealingItems = dealingItems;
        }
예제 #3
0
        public virtual void ExchangeDealingItemsAndGold()
        {
            if (DealingCharacter == null)
            {
                return;
            }
            List <DealingCharacterItem> tempDealingItems = new List <DealingCharacterItem>(DealingItems);

            for (int i = nonEquipItems.Count - 1; i >= 0; --i)
            {
                CharacterItem nonEquipItem = nonEquipItems[i];
                for (int j = tempDealingItems.Count - 1; j >= 0; --j)
                {
                    DealingCharacterItem dealingItem = tempDealingItems[j];
                    if (dealingItem.nonEquipIndex == i && nonEquipItem.amount >= dealingItem.characterItem.amount)
                    {
                        if (DealingCharacter.IncreaseItems(dealingItem.characterItem))
                        {
                            // Reduce item amount when able to increase item to co character
                            nonEquipItem.amount -= dealingItem.characterItem.amount;
                            if (nonEquipItem.amount == 0)
                            {
                                nonEquipItems.RemoveAt(i);
                            }
                            else
                            {
                                nonEquipItems[i] = nonEquipItem;
                            }
                        }
                        tempDealingItems.RemoveAt(j);
                        break;
                    }
                }
            }
            this.FillEmptySlots();
            Gold -= DealingGold;
            DealingCharacter.Gold += DealingGold;
        }