Professional Documents
Culture Documents
New Text Document
New Text Document
using UnityEngine.UI;
using TMPro;
using DG.Tweening;
[Space (20)]
[Header ("Shop Events")]
[SerializeField] GameObject shopUI;
[SerializeField] Button openShopButton;
[SerializeField] Button closeShopButton;
[SerializeField] Button scrollUpButton;
[Space (20)]
[Header ("Main Menu")]
[SerializeField] Image mainMenuCharacterImage;
[SerializeField] TMP_Text mainMenuCharacterName;
[Space (20)]
[Header ("Scroll View")]
[SerializeField] ScrollRect scrollRect;
[SerializeField] GameObject topScrollFade;
[SerializeField] GameObject bottomScrollFade;
[Space (20)]
[Header ("Purchase Fx & Error messages")]
[SerializeField] ParticleSystem purchaseFx;
[SerializeField] Transform purchaseFxPos;
[SerializeField] TMP_Text noEnoughCoinsText;
int newSelectedItemIndex = 0;
int previousSelectedItemIndex = 0;
void Start ()
{
//Move Fx to the exact same position of the coin image (for different
screen sizes)
purchaseFx.transform.position = purchaseFxPos.position;
AddShopEvents ();
void SetSelectedCharacter ()
{
//Get saved index
int index = GameDataManager.GetSelectedCharacterIndex ();
void GenerateShopItemsUI ()
{
//Loop throw save purchased items and make them as purchased in the
Database array
for (int i = 0; i < GameDataManager.GetAllPurchasedCharacter ().Count;
i++) {
int purchasedCharacterIndex =
GameDataManager.GetPurchasedCharacter (i);
characterDB.PurchaseCharacter (purchasedCharacterIndex);
}
//Generate Items
for (int i = 0; i < characterDB.CharactersCount; i++) {
//Create a Character and its corresponding UI element (uiItem)
Character character = characterDB.GetCharacter (i);
CharacterItemUI uiItem = Instantiate (itemPrefab,
ShopItemsContainer).GetComponent <CharacterItemUI> ();
if (character.isPurchased) {
//Character is Purchased
uiItem.SetCharacterAsPurchased ();
uiItem.OnItemSelect (i, OnItemSelected);
} else {
//Character is not Purchased yet
uiItem.OnItemPurchase (i, OnItemPurchased);
}
void ChangePlayerSkin ()
{
Character character = GameDataManager.GetSelectedCharacter ();
if (character.image != null) {
//Change Main menu's info (image & text)
mainMenuCharacterImage.sprite = character.image;
mainMenuCharacterName.text = character.name;
//Save Data
GameDataManager.SetSelectedCharacter (characterDB.GetCharacter (index),
index);
prevUiItem.DeselectItem ();
newUiItem.SelectItem ();
if (GameDataManager.CanSpendCoins (character.price)) {
//Proceed with the purchase operation
GameDataManager.SpendCoins (character.price);
//Play purchase FX
purchaseFx.Play ();
uiItem.SetCharacterAsPurchased ();
uiItem.OnItemSelect (index, OnItemSelected);
} else {
//No enough coins..
AnimateNoMoreCoinsText ();
uiItem.AnimateShakeItem ();
}
}
void AnimateNoMoreCoinsText ()
{
// Complete animations (if it's running)
noEnoughCoinsText.transform.DOComplete ();
noEnoughCoinsText.DOComplete ();
void AddShopEvents ()
{
openShopButton.onClick.RemoveAllListeners ();
openShopButton.onClick.AddListener (OpenShop);
closeShopButton.onClick.RemoveAllListeners ();
closeShopButton.onClick.AddListener (CloseShop);
scrollRect.onValueChanged.RemoveAllListeners ();
scrollRect.onValueChanged.AddListener (OnShopListScroll);
scrollUpButton.onClick.RemoveAllListeners ();
scrollUpButton.onClick.AddListener (OnScollUpClicked);
}
void OnScollUpClicked ()
{
scrollRect.DOVerticalNormalizedPos (1f, .5f).SetEase (Ease.OutBack);
}
//Bottom fade
if (scrollY > 0f)
bottomScrollFade.SetActive (true);
else
bottomScrollFade.SetActive (false);
//Scroll Up button
if (scrollY < .7f)
scrollUpButton.gameObject.SetActive (true);
else
scrollUpButton.gameObject.SetActive (false);
}
void OpenShop ()
{
shopUI.SetActive (true);
}
void CloseShop ()
{
shopUI.SetActive (false);
}
}