Shegotwet/Assets/Scripts/Game/LuckyRandomBlock.cs

81 lines
2.5 KiB
C#

using GUPS.AntiCheat.Protected;
using GUPS.AntiCheat.Protected.Collection;
using System;
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Random = UnityEngine.Random;
public enum eRandomBlock { Minus, Plus, Multiplier, Divide }
public class LuckyRandomBlock : MonoBehaviour
{
public RectTransform m_rt;
public Image i_bg;
public TextMeshProUGUI t_value;
eRandomBlock m_BlockType;
ProtectedInt32 m_Value;
bool isMoving;
ProtectedList<Int32> list_value = new ProtectedList<Int32> { 1, 2, 3, 4, 5 };
public void Init()
{
// BlockType 랜덤 (Enum 전체 범위에서 선택)
int typeCount = Enum.GetValues(typeof(eRandomBlock)).Length;
m_BlockType = (eRandomBlock)Random.Range(0, typeCount);
// Value 랜덤 (리스트에서 하나 뽑기)
int randIndex = Random.Range(0, list_value.Count);
m_Value = list_value[randIndex];
switch (m_BlockType)
{
case eRandomBlock.Minus: t_value.text = $"-{m_Value}"; i_bg.color = Color.red; break;
case eRandomBlock.Plus: t_value.text = $"+{m_Value}"; i_bg.color = Color.blue; break;
case eRandomBlock.Multiplier: t_value.text = $"x{m_Value}"; i_bg.color = Color.green; break;
case eRandomBlock.Divide: t_value.text = $"/{m_Value}"; i_bg.color = Color.grey; break;
}
m_rt.sizeDelta = new Vector2(Random.Range(100, 250), m_rt.sizeDelta.y);
m_rt.anchoredPosition = new Vector3(300f, 0f);
isMoving = false;
}
public void Move()
{
StartCoroutine(Co_Move());
}
IEnumerator Co_Move()
{
isMoving = true;
var MoveSpeed = Random.Range(75f, 150f);
m_rt.anchoredPosition = new Vector3(300f, 0f);
while (transform.localPosition.x > -1300)
{
yield return null;
m_rt.anchoredPosition = new Vector3(m_rt.anchoredPosition.x - MoveSpeed * Time.deltaTime, 0f);
}
Init();
}
public bool IsMoving() { return isMoving; }
public bool IsCrossCenter() { return m_rt.anchoredPosition.x <= -(Screen.width >> 1); }
public int Get_Value(int amount)
{
switch (m_BlockType)
{
case eRandomBlock.Minus: return amount - m_Value;
case eRandomBlock.Plus: return amount + m_Value;
case eRandomBlock.Multiplier: return amount * m_Value;
case eRandomBlock.Divide: return amount / m_Value;
}
return 0;
}
}