示例#1
0
 private void OnDestroy()
 {
     if (LootButton != null)
     {
         LootButton.SaveToPool();
     }
 }
示例#2
0
    public void AddLootItem(Item item)
    {
        LootButton lootButton = Instantiate(lootButtonPrefab, area);

        lootButton.Item = item;
        lootItems.Add(lootButton);
    }
示例#3
0
    private void AddLoot(Item item)
    {
        LootButton lootButton = Instantiate(lootButtonPrefab, lootsContainer);

        lootButton.MyLoot = item;

        lootButton.MyIcon.sprite = item.GetSprite();
        lootButton.MyTitle.text  = item.itemType.ToString() + " x" + item.amount.ToString();
    }
示例#4
0
    public void GenerateLoots()
    {
        System.Random rnd = new System.Random();

        // Get a number between 1-5
        int lootNumber = rnd.Next(1, 6);

        for (int i = 0; i < lootNumber; i++)
        {
            // Active the loot button
            GameObject newButton = this.layout.transform.GetChild(i).gameObject;
            newButton.SetActive(true);

            // Setup the component of the button
            LootButton button    = newButton.GetComponent <LootButton>();
            int        lootIndex = rnd.Next(100);

            // Generate options randomly
            if (lootIndex < 50)
            {
                button.Setup(this.powerModule);
            }
            else if (lootIndex >= 50 && lootIndex < 55)
            {
                button.Setup(this.speedModule);
            }
            else if (lootIndex >= 55 && lootIndex < 60)
            {
                button.Setup(this.speedModule);
            }
            else if (lootIndex >= 60 && lootIndex < 65)
            {
                button.Setup(this.rangeModule);
            }
            else if (lootIndex >= 65 && lootIndex < 70)
            {
                button.Setup(this.rangeModule);
            }
            else if (lootIndex >= 70 && lootIndex < 75)
            {
                button.Setup(this.handinessModule);
            }
            else if (lootIndex >= 75 && lootIndex < 80)
            {
                button.Setup(this.handinessModule);
            }
            else if (lootIndex >= 80 && lootIndex < 85)
            {
                button.Setup(this.strikeModule);
            }
            else if (lootIndex >= 85 && lootIndex < 100)
            {
                button.Setup(this.strikeModule);
            }
        }
    }
示例#5
0
    private void OnItemHoverEnter(LootButton sender)
    {
        if (itemIconImage != null)
        {
            itemIconImage.gameObject.SetActive(true);
            itemIconImage.sprite = sender.Item.icon;
        }

        if (itemDescriptionLabel != null)
        {
            itemDescriptionLabel.text = sender.Item.description;
        }
    }
示例#6
0
    private void OnItemHoverExit(LootButton sender)
    {
        if (itemIconImage != null)
        {
            itemIconImage.gameObject.SetActive(false);
        }

        if (itemDescriptionLabel == null)
        {
            return;
        }

        itemDescriptionLabel.text = "";
    }
示例#7
0
    private void InitializeItems(Transform contentHolder, Inventory inventory)
    {
        while (contentHolder.childCount > 0)
        {
            DestroyImmediate(contentHolder.GetChild(0).gameObject);
        }

        List <Item> items = inventory.Items.Select(o => o).Distinct().ToList();

        for (int i = 0; i < items.Count; i++)
        {
            GameObject go   = Instantiate(lootButton, contentHolder);
            LootButton item = go.GetComponent <LootButton>();
            if (item != null)
            {
                item.Initialize(items[i], inventory.Items.Where(x => x.name.Contains(items[i].name)).Count());

                item.OnHoverEnter += OnItemHoverEnter;
                item.OnHoverExit  += OnItemHoverExit;
                item.OnClicked    += (LootButton sender) =>
                {
                    uint count = uint.Parse(sender.quantityLabel.text.Replace("x", ""));
                    LootQuantityPanelController controller = lootQuantityPanel.GetComponent <LootQuantityPanelController>();
                    if (controller != null)
                    {
                        controller.Initialize(sender, inventory == playerInventory ? playerInventory : interactable.Inventory, inventory == playerInventory ? interactable.Inventory : playerInventory);

                        if (count > 1)
                        {
                            if (lootQuantityPanel != null)
                            {
                                active = false;
                                lootQuantityPanel.gameObject.SetActive(true);
                            }
                        }
                        else
                        {
                            controller.Take(1);
                        }
                    }
                };
            }
        }
    }
示例#8
0
    public void Initialize(LootButton lootButton, Inventory from, Inventory to)
    {
        this.lootButton = lootButton;

        if (minLabel != null)
        {
            minLabel.text = "1";
        }

        if (maxLabel != null)
        {
            maxLabel.text = lootButton.quantityLabel.text.Replace("x", "");
        }

        quantitySlider.minValue = 0;
        quantitySlider.maxValue = uint.Parse(maxLabel.text);
        quantitySlider.value    = 1;

        fromInventory = from;
        toInventory   = to;
    }
示例#9
0
    public void TakeAll()
    {
        LootQuantityPanelController controller = lootQuantityPanel.GetComponent <LootQuantityPanelController>();

        if (controller != null)
        {
            while (lootContent.transform.childCount > 0)
            {
                LootButton button = lootContent.transform.GetChild(0).gameObject.GetComponent <LootButton>();
                if (button != null)
                {
                    controller.Initialize(button, interactable.Inventory, playerInventory);
                    if (controller.Take(uint.Parse(button.quantityLabel.text.Replace("x", ""))))
                    {
                        takeAll.Play();
                    }
                }
            }
        }

        Close();
    }
示例#10
0
 public void RemoveLootItem(LootButton lootButton)
 {
     currentLootTable.LootItems.Remove(lootButton.Item);
     lootItems.Remove(lootButton);
     Destroy(lootButton.gameObject);
 }