393 lines
13 KiB
C#
393 lines
13 KiB
C#
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<ShopManager>();
|
|
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") + ": <b>" + GameManager.Instance.gameRods[gameItemIndexByItemId].length + "m</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": <b>" + GameManager.Instance.ConvertWeight(GameManager.Instance.gameRods[gameItemIndexByItemId].strength) + "</b>";
|
|
text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("CW_ROD") + ": <b>" + GameManager.Instance.gameRods[gameItemIndexByItemId].cw.x + " - " + GameManager.Instance.gameRods[gameItemIndexByItemId].cw.y + "</b>";
|
|
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") + ": <b>" + GameManager.Instance.gameReels[gameItemIndexByItemId].gearRatio.x + ":" + GameManager.Instance.gameReels[gameItemIndexByItemId].gearRatio.y + "</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": <b>" + GameManager.Instance.ConvertWeight(GameManager.Instance.gameReels[gameItemIndexByItemId].strength) + "</b>";
|
|
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") + ": <b>" + GameManager.Instance.gameLines[gameItemIndexByItemId].size + "</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": <b>" + GameManager.Instance.ConvertWeight(GameManager.Instance.gameLines[gameItemIndexByItemId].strength) + "</b>";
|
|
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<GameManager.GameFish> list = new List<GameManager.GameFish>();
|
|
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<GameManager.GameFish> list2 = new List<GameManager.GameFish>();
|
|
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<BaitFishListItem>();
|
|
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<GameManager.GameFish> list3 = new List<GameManager.GameFish>();
|
|
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<GameManager.GameFish> list4 = new List<GameManager.GameFish>();
|
|
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<BaitFishListItem>();
|
|
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") + ": <b>" + GameManager.Instance.gameHooks[gameItemIndexByItemId].GetSizetext() + "</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("TYPE") + ": <b>" + GameManager.Instance.gameHooks[gameItemIndexByItemId].type.ToString() + "</b>";
|
|
text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("AMOUNT") + ": <b>" + GameManager.Instance.gameHooks[gameItemIndexByItemId].amount + "</b>";
|
|
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") + ": <b>" + GameManager.Instance.gameFloats[gameItemIndexByItemId].weight + "g</b>";
|
|
break;
|
|
case GameManager.ItemType.Feeder:
|
|
if (GameManager.Instance.gameFeeders[gameItemIndexByItemId].isNew)
|
|
{
|
|
isnewImage.enabled = true;
|
|
}
|
|
else
|
|
{
|
|
isnewImage.enabled = false;
|
|
}
|
|
colorText.text = LanguageManager.Instance.GetText("CAPACITY") + ": <b>" + GameManager.Instance.gameFeeders[gameItemIndexByItemId].capacity + "g</b>";
|
|
itemDesc.text = LanguageManager.Instance.GetText("WEIGHT") + ": <b>" + GameManager.Instance.gameFeeders[gameItemIndexByItemId].weight + "g</b>";
|
|
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") + ": <b>" + GameManager.Instance.gameLeaders[gameItemIndexByItemId].size + "</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("STRENGTH") + ": <b>" + GameManager.Instance.ConvertWeight(GameManager.Instance.gameLeaders[gameItemIndexByItemId].strength) + "</b>";
|
|
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") + ": <b>" + GameManager.Instance.gameWeights[gameItemIndexByItemId].weight + "g</b>";
|
|
Text text = itemDesc;
|
|
text.text = text.text + "\n" + LanguageManager.Instance.GetText("AMOUNT") + ": <b>" + GameManager.Instance.gameWeights[gameItemIndexByItemId].amount + "</b>";
|
|
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<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerCash || levelReq > Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerLevel) && !Singleton<SaveDataManager>.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<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerShopBasket.AddToBasket(category, itemID, itemPriceValue, sortName);
|
|
shopManager.UpdatebasketCounter();
|
|
ShopItem.OnUIAddBasketGlobal?.Invoke();
|
|
UnityEngine.Object.FindObjectOfType<MyBasketInfo>().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);
|
|
}
|
|
}
|
|
}
|