예제 #1
0
    public void ActivateButton()
    {
        InventoryItem item = activeList[selected];

        if (mode == "buying")
        {
            if (data.gold >= item.cost * 5)
            {
                data.AddToInventory(item.Copy());
                data.gold    -= item.cost * 5;
                goldText.text = data.gold.ToString();
                // Float cost text
                GameObject        text     = Instantiate(textFab, new Vector3(0, 0, 0), Quaternion.identity, gameObject.transform);
                DmgTextController textCont = text.GetComponent <DmgTextController>();
                textCont.Init(goldText.transform.position, "cost", "-" + (item.cost * 5).ToString());
            }
        }
        else if (mode == "selling")
        {
            data.gold     += item.cost;
            goldText.text  = data.gold.ToString();
            reselectNeeded = data.RemoveFromInventory(selected);
            // Float cost text
            GameObject        text     = Instantiate(textFab, new Vector3(0, 0, 0), Quaternion.identity, gameObject.transform);
            DmgTextController textCont = text.GetComponent <DmgTextController>();
            textCont.Init(goldText.transform.position, "gold", "+" + (item.cost).ToString());

            RefreshItems();
        }
    }
예제 #2
0
    public InventoryItem Clone()
    {
        InventoryItem New = new InventoryItem(this.GetUId());   //Todo thats not working - how to call specific constructor

        New.Copy(this);
        return(New);
    }
예제 #3
0
        public void AddItem(Character character, InventoryItem item, int quantity, GameClient client,
                            GameClient receiverClient)
        {
            _timer = DateTime.Now;

            UnLockExchangeCases(client, receiverClient); // Update exchange board

            InventoryItem existItem;

            if (FirstTrader == character)
            {
                existItem =
                    _firstTraderItems.Find(
                        x =>
                        x.Character == item.Character && x.ItemPosition == item.ItemPosition &&
                        x.ItemInfos == item.ItemInfos && x.Stats == item.Stats);
            }
            else
            {
                existItem =
                    _secondTraderItems.Find(
                        x =>
                        x.Character == item.Character && x.ItemPosition == item.ItemPosition &&
                        x.ItemInfos == item.ItemInfos && x.Stats == item.Stats);
            }

            if (existItem != null)
            {
                existItem.Quantity += quantity;

                client.SendPackets(string.Format("{0}+{1}|{2}", Packet.ExchangeObjectLocalObjectMove, item.Id,
                                                 existItem.Quantity));

                receiverClient.SendPackets(string.Format("{0}+{1}", Packet.ExchangeObjectDistantObjectMove,
                                                         item.ToExchangeFormat(existItem.Quantity)));
            }
            else
            {
                var newItem = item.Copy(quantity: quantity);

                if (character == FirstTrader)
                {
                    _firstTraderItems.Add(newItem);
                }
                else
                {
                    _secondTraderItems.Add(newItem);
                }

                client.SendPackets(string.Format("{0}+{1}|{2}", Packet.ExchangeObjectLocalObjectMove, item.Id,
                                                 newItem.Quantity));

                receiverClient.SendPackets(string.Format("{0}+{1}", Packet.ExchangeObjectDistantObjectMove,
                                                         item.ToExchangeFormat(newItem.Quantity)));
            }
        }
예제 #4
0
        private void CreateTraderItem(Character trader, InventoryItem existItemTrader, GameClient traderClient,
                                      InventoryItem item)
        {
            if (existItemTrader != null)
            {
                existItemTrader.Quantity += item.Quantity;

                traderClient.SendPackets(string.Format("{0}{1}|{2}", Packet.ObjectQuantity, existItemTrader.Id,
                                                       existItemTrader.Quantity));

                InventoryItemRepository.Update(existItemTrader);
            }
            else
            {
                var newItem = item.Copy(quantity: item.Quantity);

                newItem.Character = trader;

                traderClient.SendPackets(string.Format("{0}{1}", Packet.ObjectAdd, newItem.ItemInfo()));

                InventoryItemRepository.Create(newItem, true);
            }
        }