// 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); }
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); } }
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); } }
// 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); }
// Token: 0x06000630 RID: 1584 RVA: 0x00034CF0 File Offset: 0x00032EF0 private bool CanAfford(Trader.TradeItem item) { int playerCoins = this.GetPlayerCoins(); return(item.m_price <= playerCoins); }