85 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |