RandomGFGoStop/Assets/Scripts/UI/StorePanel.cs

110 lines
4.5 KiB
C#
Raw Normal View History

2025-08-27 21:08:17 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using CodeJay.Enum;
namespace CodeJay.Enum
{
public enum EProductReward
{
Delete_Ad,
Heart,
Key
}
public enum EProductType
{
ADS,
IAP,
Gold
}
}
public class StorePanel : MonoBehaviour
{
[SerializeField] private GameObject SlotPrefab;
[SerializeField] private GameObject BuyKeySlotPrefab;
[SerializeField] private RectTransform content;
private List<ProductSlot> _lstSlots;
private int BuyOneKey = 6;
private void Awake()
{
_lstSlots = new List<ProductSlot>();
for (int i = 0; i < 10; i++)
{
if (i == BuyOneKey)
{
_lstSlots.Add(Instantiate(BuyKeySlotPrefab, content).GetComponent<ProductSlot>());
}
else
{
_lstSlots.Add(Instantiate(SlotPrefab, content).GetComponent<ProductSlot>());
}
}
_lstSlots[0].SetData(new CodeJay.Classes.ProductData("ads_remove", EProductType.IAP, "강제 광고 제거", "강제 노출되는 광고를 제거 합니다.", 5500, 0, EProductReward.Delete_Ad, 1));
_lstSlots[1].SetData(new CodeJay.Classes.ProductData("heart_free", EProductType.Gold, "일일 무료 하트 I", "무료 하트 획득!", 0, 1, EProductReward.Heart, 1));
_lstSlots[2].SetData(new CodeJay.Classes.ProductData("heart_ads", EProductType.ADS, "일일 무료 하트 II", "광고 시청 후 무료 하트 획득!", 0, 1, EProductReward.Heart, 1));
_lstSlots[3].SetData(new CodeJay.Classes.ProductData("heart_10", EProductType.IAP, "하트 10개 구매", "", 1000, 1, EProductReward.Heart, 10));
_lstSlots[4].SetData(new CodeJay.Classes.ProductData("heart_60", EProductType.IAP, "하트 60개 구매", "", 5500, 1, EProductReward.Heart, 60));
_lstSlots[5].SetData(new CodeJay.Classes.ProductData("heart_130", EProductType.IAP, "하트 130개 구매", "", 11000, 1, EProductReward.Heart, 130));
_lstSlots[BuyOneKey].SetData(new CodeJay.Classes.ProductData("key_1", EProductType.Gold, "열쇠 1 개", "", 100000 + (250000 * (int)GameManager.DB.BuyKeyCount), 2, EProductReward.Key, 1));
_lstSlots[7].SetData(new CodeJay.Classes.ProductData("key_20", EProductType.IAP, "열쇠 20 개", "", 11000, 2, EProductReward.Key, 10));
_lstSlots[8].SetData(new CodeJay.Classes.ProductData("key_45", EProductType.IAP, "열쇠 45 개", "", 22000, 2, EProductReward.Key, 25));
_lstSlots[9].SetData(new CodeJay.Classes.ProductData("key_75", EProductType.IAP, "열쇠 75 개", "", 33000, 2, EProductReward.Key, 45));
if (GameManager.Instance != null)
{
GameManager.Event.RegistEvent(EEventType.MoveToStore_Heart, this.MoveToStore_Heart);
GameManager.Event.RegistEvent(EEventType.MoveToStore_Heart_DuringGame, this.MoveToStore_Heart);
GameManager.Event.RegistEvent(EEventType.MoveToStore_Key, this.MoveToStore_Key);
GameManager.Event.RegistEvent(EEventType.OnReturnToGameFromStore, this.OnReturnToGameFromStore);
GameManager.Event.RegistEvent(EEventType.OnSynchronizeKey, this.OnSynchronizeKey);
}
}
private void OnEnable()
{
GameManager.DB.CheckDayReset();
}
private void OnDestroy()
{
if (GameManager.Instance != null)
{
GameManager.Event.RemoveEvent(EEventType.MoveToStore_Heart, this.MoveToStore_Heart);
GameManager.Event.RemoveEvent(EEventType.MoveToStore_Heart_DuringGame, this.MoveToStore_Heart);
GameManager.Event.RemoveEvent(EEventType.MoveToStore_Key, this.MoveToStore_Key);
GameManager.Event.RemoveEvent(EEventType.OnReturnToGameFromStore, this.OnReturnToGameFromStore);
GameManager.Event.RemoveEvent(EEventType.OnSynchronizeKey, this.OnSynchronizeKey);
}
}
private void OnReturnToGameFromStore()
{
this.gameObject.SetActive(false);
}
private void MoveToStore_Heart()
{
if (this.gameObject.activeInHierarchy == false)
this.gameObject.SetActive(true);
content.anchoredPosition = Vector2.zero;
}
private void MoveToStore_Key()
{
// Height * 6, Spacing * 5
content.anchoredPosition = Vector2.up * ((300 * 6) + (20 * 5));
}
private void OnSynchronizeKey()
{
_lstSlots[BuyOneKey].SetData(new CodeJay.Classes.ProductData("10", EProductType.Gold, "열쇠 1 개", "", 100000 + (250000 * (int)GameManager.DB.BuyKeyCount), 2, EProductReward.Key, 1));
}
}