using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class ShopItem : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { public Image itemImage; public Text itemName; public Text itemPrice; public Text itemPriceOff; public Text itemDesc; public Button buyButton; public Button addToBasketButton; public Text levelText; public Text colorText; public Image brandLogo; public Image ownedImage; [Header("FishList")] public GameObject baitTakeFishList; public GameObject baitTakeFishListContent; public GameObject fishListItemPrefab; public Scrollbar fishListItemScrollBar; [Header("Other")] [SerializeField] private Image isnewImage; public ShopManager.Categories category; public int itemID = -1; public string sortName = "ALL"; public float itemPriceValue; public Color overPriceColor = Color.red; public bool isCommingSoon; private ShopManager shopManager; public int levelReq; public static event Action OnUIBuyGlobal; public static event Action OnUIAddBasketGlobal; private void Start() { shopManager = UnityEngine.Object.FindObjectOfType(); if (itemID == -1) { return; } if (category == ShopManager.Categories.Homepage) { if (itemPriceValue == 0f) { itemPrice.text = "FREE"; } SetButtonsByLevelAndPrice(); return; } GameManager.ItemType itemType = shopManager.CastItemCategoryToType(category); int gameItemIndexByItemId = GameManager.Instance._playerData.GetGameItemIndexByItemId(itemType, itemID); levelReq = shopManager.GetLevelReq(itemType, gameItemIndexByItemId); if (itemPriceValue == 0f) { itemPrice.text = "FREE"; } SetButtonsByLevelAndPrice(); itemDesc.gameObject.SetActive(value: true); baitTakeFishList.SetActive(value: false); switch (itemType) { case GameManager.ItemType.Rod: { if (GameManager.Instance.gameRods[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = LanguageManager.Instance.GetText(GameManager.Instance.gameRods[gameItemIndexByItemId].type.ToString().ToUpper()); itemDesc.text = LanguageManager.Instance.GetText("LENGTH") + ": " + GameManager.Instance.gameRods[gameItemIndexByItemId].length + "m"; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": " + GameManager.Instance.ConvertWeight(GameManager.Instance.gameRods[gameItemIndexByItemId].strength) + ""; text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("CW_ROD") + ": " + GameManager.Instance.gameRods[gameItemIndexByItemId].cw.x + " - " + GameManager.Instance.gameRods[gameItemIndexByItemId].cw.y + ""; break; } case GameManager.ItemType.Reel: { if (GameManager.Instance.gameReels[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = LanguageManager.Instance.GetText("SIZE") + " " + GameManager.Instance.gameReels[gameItemIndexByItemId].size.ToString().ToUpper(); itemDesc.text = LanguageManager.Instance.GetText("GEAR_RATIO") + ": " + GameManager.Instance.gameReels[gameItemIndexByItemId].gearRatio.x + ":" + GameManager.Instance.gameReels[gameItemIndexByItemId].gearRatio.y + ""; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": " + GameManager.Instance.ConvertWeight(GameManager.Instance.gameReels[gameItemIndexByItemId].strength) + ""; break; } case GameManager.ItemType.Line: { if (GameManager.Instance.gameLines[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameLines[gameItemIndexByItemId].type.ToString().ToUpper(); itemDesc.text = LanguageManager.Instance.GetText("SIZE") + ": " + GameManager.Instance.gameLines[gameItemIndexByItemId].size + ""; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": " + GameManager.Instance.ConvertWeight(GameManager.Instance.gameLines[gameItemIndexByItemId].strength) + ""; break; } case GameManager.ItemType.Bait: { if (GameManager.Instance.gameBaits[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } if (GameManager.Instance.gameBaits[gameItemIndexByItemId].type == GameManager.GameBaits.Type.Natural) { colorText.text = LanguageManager.Instance.GetText(GameManager.Instance.gameBaits[gameItemIndexByItemId].type.ToString().ToUpper()); itemDesc.gameObject.SetActive(value: false); baitTakeFishList.SetActive(value: true); GameManager.TruncateContainer(baitTakeFishListContent.transform); fishListItemScrollBar.value = 1f; List list = new List(); for (int i = 0; i < GameManager.Instance.gameFish.Length; i++) { for (int j = 0; j < GameManager.Instance.gameFish[i].acceptFishBaits.Count; j++) { if (GameManager.Instance.gameFish[i].acceptFishBaits[j].baitId == GameManager.Instance.gameBaits[gameItemIndexByItemId].id) { list.Add(GameManager.Instance.gameFish[i]); } } } GameManager.GameFish[] array = list.OrderBy((GameManager.GameFish o) => o.GetFishName()).ToArray(); List list2 = new List(); if ((bool)FScriptsHandler.Instance) { int sceneID = FScriptsHandler.Instance.m_SceneSettings.sceneID; for (int num = 0; num < GameManager.Instance.gameLocations.Length; num++) { if (GameManager.Instance.gameLocations[num].sceneID != sceneID) { continue; } for (int num2 = 0; num2 < GameManager.Instance.gameLocations[num].fishSpecies.Length; num2++) { for (int num3 = 0; num3 < array.Length; num3++) { if (array[num3].speciesName == GameManager.Instance.gameLocations[num].fishSpecies[num2]) { list2.Add(array[num3]); } } } } array = list2.ToArray(); } array = array.OrderBy((GameManager.GameFish o) => o.GetFishName()).ToArray(); for (int num4 = 0; num4 < array.Length; num4++) { BaitFishListItem component = UnityEngine.Object.Instantiate(fishListItemPrefab, baitTakeFishListContent.transform).GetComponent(); component.fishName = array[num4].GetFishName(); component.fishIcon = array[num4].GetFishIcon(10f); } break; } colorText.text = GameManager.Instance.gameBaits[gameItemIndexByItemId].GetColorsListString().ToUpper(); itemDesc.gameObject.SetActive(value: false); baitTakeFishList.SetActive(value: true); GameManager.TruncateContainer(baitTakeFishListContent.transform); fishListItemScrollBar.value = 1f; List list3 = new List(); for (int num5 = 0; num5 < GameManager.Instance.gameFish.Length; num5++) { for (int num6 = 0; num6 < GameManager.Instance.gameFish[num5].acceptFishLures.Count; num6++) { if (GameManager.Instance.gameFish[num5].acceptFishLures[num6].baitId == GameManager.Instance.gameBaits[gameItemIndexByItemId].id) { list3.Add(GameManager.Instance.gameFish[num5]); } } } GameManager.GameFish[] array2 = list3.OrderBy((GameManager.GameFish o) => o.GetFishName()).ToArray(); List list4 = new List(); if ((bool)FScriptsHandler.Instance) { int sceneID2 = FScriptsHandler.Instance.m_SceneSettings.sceneID; for (int num7 = 0; num7 < GameManager.Instance.gameLocations.Length; num7++) { if (GameManager.Instance.gameLocations[num7].sceneID != sceneID2) { continue; } for (int num8 = 0; num8 < GameManager.Instance.gameLocations[num7].fishSpecies.Length; num8++) { for (int num9 = 0; num9 < array2.Length; num9++) { if (array2[num9].speciesName == GameManager.Instance.gameLocations[num7].fishSpecies[num8]) { list4.Add(array2[num9]); } } } } array2 = list4.ToArray(); } array2 = array2.OrderBy((GameManager.GameFish o) => o.GetFishName()).ToArray(); for (int num10 = 0; num10 < array2.Length; num10++) { BaitFishListItem component2 = UnityEngine.Object.Instantiate(fishListItemPrefab, baitTakeFishListContent.transform).GetComponent(); component2.fishName = array2[num10].GetFishName(); component2.fishIcon = array2[num10].GetFishIcon(10f); } break; } case GameManager.ItemType.Hook: { if (GameManager.Instance.gameHooks[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameHooks[gameItemIndexByItemId].GetSizetext(); itemDesc.text = LanguageManager.Instance.GetText("SIZE") + ": " + GameManager.Instance.gameHooks[gameItemIndexByItemId].GetSizetext() + ""; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("TYPE") + ": " + GameManager.Instance.gameHooks[gameItemIndexByItemId].type.ToString() + ""; text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("AMOUNT") + ": " + GameManager.Instance.gameHooks[gameItemIndexByItemId].amount + ""; break; } case GameManager.ItemType.Float: if (GameManager.Instance.gameFloats[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameFloats[gameItemIndexByItemId].type.ToString().ToUpper(); itemDesc.text = LanguageManager.Instance.GetText("WEIGHT") + ": " + GameManager.Instance.gameFloats[gameItemIndexByItemId].weight + "g"; break; case GameManager.ItemType.Feeder: if (GameManager.Instance.gameFeeders[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = LanguageManager.Instance.GetText("CAPACITY") + ": " + GameManager.Instance.gameFeeders[gameItemIndexByItemId].capacity + "g"; itemDesc.text = LanguageManager.Instance.GetText("WEIGHT") + ": " + GameManager.Instance.gameFeeders[gameItemIndexByItemId].weight + "g"; break; case GameManager.ItemType.Leader: { if (GameManager.Instance.gameLeaders[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameLeaders[gameItemIndexByItemId].type.ToString().ToUpper(); itemDesc.text = LanguageManager.Instance.GetText("SIZE") + ": " + GameManager.Instance.gameLeaders[gameItemIndexByItemId].size + ""; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": " + GameManager.Instance.ConvertWeight(GameManager.Instance.gameLeaders[gameItemIndexByItemId].strength) + ""; break; } case GameManager.ItemType.Weight: { if (GameManager.Instance.gameWeights[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameWeights[gameItemIndexByItemId].type.ToString().ToUpper(); itemDesc.text = LanguageManager.Instance.GetText("WEIGHT") + ": " + GameManager.Instance.gameWeights[gameItemIndexByItemId].weight + "g"; Text text = itemDesc; text.text = text.text + "\n" + LanguageManager.Instance.GetText("AMOUNT") + ": " + GameManager.Instance.gameWeights[gameItemIndexByItemId].amount + ""; break; } case GameManager.ItemType.Accesories: if (GameManager.Instance.gameAccesories[gameItemIndexByItemId].isNew) { isnewImage.enabled = true; } else { isnewImage.enabled = false; } colorText.text = GameManager.Instance.gameAccesories[gameItemIndexByItemId].type.ToString().ToUpper(); break; } } public void SetButtonsByLevelAndPrice() { if ((itemPriceValue > Singleton.Instance.GetCurrentPlayerData().PlayerCash || levelReq > Singleton.Instance.GetCurrentPlayerData().PlayerLevel) && !Singleton.Instance.IsCurrentlySandbox()) { itemPrice.color = overPriceColor; buyButton.interactable = false; addToBasketButton.interactable = false; } else { itemPrice.color = Color.white; buyButton.interactable = true; addToBasketButton.interactable = true; } } private void Update() { } public void AddToBasket() { if (!isCommingSoon) { Singleton.Instance.GetCurrentPlayerData().PlayerShopBasket.AddToBasket(category, itemID, itemPriceValue, sortName); shopManager.UpdatebasketCounter(); ShopItem.OnUIAddBasketGlobal?.Invoke(); UnityEngine.Object.FindObjectOfType().UpdateMyBasket(); SetButtonsByLevelAndPrice(); } } public void BuyItemOneByButton() { if (!isCommingSoon) { shopManager.BuyItem(category, itemID, 1, itemPriceValue, sortName); GameManager.Instance.ShowMessagePopup(LanguageManager.Instance.GetText("BUY_ONE_DONE"), shopManager.transform, deleteLast: true); ShopItem.OnUIBuyGlobal?.Invoke(); SetButtonsByLevelAndPrice(); } } public void OnPointerClick(PointerEventData pointerEventData) { if (!isCommingSoon) { shopManager.currentItemShop = base.gameObject; shopManager.ShowShopItem(category, itemID, sortName); } } }