ARTracking/Assets/BigFortuneWheels/Scripts/Sector.cs

85 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using UnityEngine;
using UnityEngine.Events;
using Mkey;
namespace MkeyFW
{
[ExecuteInEditMode]
public class Sector : MonoBehaviour
{
[SerializeField]
private bool autoText = true;
[SerializeField]
private int coins;
[SerializeField]
private bool bigWin;
[SerializeField]
private List<GameObject> hitPrefabs;
private float destroyTime = 3f;
public UnityEvent<Sector> hitEvent;
[SerializeField]
public AudioClip hitSound;
public TextMesh Text { get; private set; }
public int Coins
{
get { return coins; }
set { coins = Mathf.Max(0, value); RefreshText(); }
}
public bool BigWin
{
get { return bigWin; }
}
#region regular
void Start()
{
Text = GetComponent<TextMesh>();
RefreshText();
}
void OnValidate()
{
coins = Mathf.Max(0, coins);
RefreshText();
}
#endregion regular
private void RefreshText()
{
if (!autoText) return;
if (!Text) Text = GetComponent<TextMesh>();
if (!Text) return;
var f = new NumberFormatInfo { NumberGroupSeparator = " " }; // Text.text = Coins.ToString("n0", f);
Text.text = coins.ToString("N0", CultureInfo.CreateSpecificCulture("en-US"));
}
/// <summary>
/// Instantiate all prefabs and invoke hit event
/// </summary>
/// <param name="position"></param>
public void PlayHit(Vector3 position)
{
if (hitPrefabs != null)
{
foreach (var item in hitPrefabs)
{
if (item)
{
Transform partT = Instantiate(item).transform;
partT.position = position;
if (this && partT) Destroy(partT.gameObject, destroyTime);
}
}
}
hitEvent?.Invoke(this);
}
}
}