Esempio n. 1
0
    // Token: 0x06000631 RID: 1585 RVA: 0x00034D10 File Offset: 0x00032F10
    private void FillList()
    {
        int playerCoins = this.GetPlayerCoins();
        int num         = this.GetSelectedItemIndex();
        List <Trader.TradeItem> items = this.m_trader.m_items;

        foreach (GameObject obj in this.m_itemList)
        {
            UnityEngine.Object.Destroy(obj);
        }
        this.m_itemList.Clear();
        float num2 = (float)items.Count * this.m_itemSpacing;

        num2 = Mathf.Max(this.m_itemlistBaseSize, num2);
        this.m_listRoot.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, num2);
        for (int i = 0; i < items.Count; i++)
        {
            Trader.TradeItem tradeItem = items[i];
            GameObject       element   = UnityEngine.Object.Instantiate <GameObject>(this.m_listElement, this.m_listRoot);
            element.SetActive(true);
            (element.transform as RectTransform).anchoredPosition = new Vector2(0f, (float)i * -this.m_itemSpacing);
            bool  flag      = tradeItem.m_price <= playerCoins;
            Image component = element.transform.Find("icon").GetComponent <Image>();
            component.sprite = tradeItem.m_prefab.m_itemData.m_shared.m_icons[0];
            component.color  = (flag ? Color.white : new Color(1f, 0f, 1f, 0f));
            string text = Localization.instance.Localize(tradeItem.m_prefab.m_itemData.m_shared.m_name);
            if (tradeItem.m_stack > 1)
            {
                text = text + " x" + tradeItem.m_stack;
            }
            Text component2 = element.transform.Find("name").GetComponent <Text>();
            component2.text  = text;
            component2.color = (flag ? Color.white : Color.grey);
            UITooltip component3 = element.GetComponent <UITooltip>();
            component3.m_topic = tradeItem.m_prefab.m_itemData.m_shared.m_name;
            component3.m_text  = tradeItem.m_prefab.m_itemData.GetTooltip();
            Text component4 = Utils.FindChild(element.transform, "price").GetComponent <Text>();
            component4.text = tradeItem.m_price.ToString();
            if (!flag)
            {
                component4.color = Color.grey;
            }
            element.GetComponent <Button>().onClick.AddListener(delegate
            {
                this.OnSelectedItem(element);
            });
            this.m_itemList.Add(element);
        }
        if (num < 0)
        {
            num = 0;
        }
        this.SelectItem(num, false);
    }
Esempio n. 2
0
        private static void Insert(Trader trader, TraderSellConfig config, Trader.TradeItem item)
        {
            if (config.Order.Value >= 0 && trader.m_items.Count >= config.Order.Value)
            {
                Log.LogTrace($"[{trader.name}]: Inserting item {config.ItemName.Value} at index '{config.Order.Value}'.");

                trader.m_items.Insert(config.Order.Value, item);
            }
            else
            {
                Log.LogTrace($"[{trader.name}]: Adding item {config.ItemName.Value}.");
                trader.m_items.Add(item);
            }
        }
Esempio n. 3
0
        private static void Postfix(Trader __instance)
        {
            string name = __instance.gameObject.name;

            Log.LogDebug($"[{__instance.name}]: Modifying trade items.");


            if (Config.DumpDefaultTraderItemsToFile.Value)
            {
                WriteToFile(__instance.m_items);
            }

            if (Config.ClearAllExisting.Value)
            {
                Log.LogDebug($"[{__instance.name}]: Clearing existing {__instance.m_items.Count} items.");
                __instance.m_items.Clear();
            }

            foreach (var itemConfig in TraderConfig.OrderBy(x => x.Order.Value))
            {
                //Sanity checks
                if (itemConfig == null || !itemConfig.IsValid())
                {
                    continue;
                }

                GameObject item = ObjectDB.instance.GetItemPrefab(itemConfig.ItemName?.Value);

                ItemDrop itemDrop = item?.GetComponent <ItemDrop>();

                if (itemDrop == null)
                {
                    Log.LogWarning($"Couldn't find item '{itemConfig.ItemName}'");
                    continue;
                }

                Trader.TradeItem newItem = new Trader.TradeItem
                {
                    m_prefab = itemDrop,
                    m_price  = itemConfig.Price.Value,
                    m_stack  = itemConfig.StackSize.Value,
                };

                Insert(__instance, itemConfig, newItem);
            }
        }
Esempio n. 4
0
 // Token: 0x06000FBB RID: 4027 RVA: 0x0006ECCB File Offset: 0x0006CECB
 public void OnBought(Trader.TradeItem item)
 {
     this.Say(this.m_randomBuy, "Buy");
     this.m_randomBuyFX.Create(base.transform.position, Quaternion.identity, null, 1f);
 }
Esempio n. 5
0
    // Token: 0x06000630 RID: 1584 RVA: 0x00034CF0 File Offset: 0x00032EF0
    private bool CanAfford(Trader.TradeItem item)
    {
        int playerCoins = this.GetPlayerCoins();

        return(item.m_price <= playerCoins);
    }