using UnityEngine;
using System.Collections.Generic;
using UnityEngine.Events;
namespace EmeraldAI
{
///
/// A component for spawning and positioning decals.
///
[HelpURL("https://black-horizon-studios.gitbook.io/emerald-ai-wiki/emerald-components-optional/decal-component")]
[RequireComponent(typeof(EmeraldEvents))]
public class EmeraldDecals : MonoBehaviour
{
#region Decals Variables
public List BloodEffects = new List();
[Range(0, 3f)]
public float BloodSpawnHeight = 0.33f;
[Range(0, 3f)]
public float BloodSpawnDelay = 0;
[Range(0f, 3f)]
public float BloodSpawnRadius = 0.6f;
[Range(3f, 60f)]
public int BloodDespawnTime = 16;
[Range(1, 100)]
public int OddsForBlood = 100;
EmeraldEvents EmeraldEventsComponent;
EmeraldSystem EmeraldComponent;
#endregion
#region Editor Variables
public bool HideSettingsFoldout;
public bool DecalsFoldout;
public bool MessageDismissed;
#endregion
void Start()
{
Initialize();
}
///
/// Initialize the Events Component.
///
void Initialize ()
{
EmeraldComponent = GetComponent();
EmeraldEventsComponent = GetComponent();
EmeraldEventsComponent.OnTakeDamageEvent.AddListener(() => { CreateBloodSplatter(); });
}
public void CreateBloodSplatter()
{
Invoke("DelayCreateBloodSplatter", BloodSpawnDelay);
}
void DelayCreateBloodSplatter()
{
var Odds = Random.Range(0, 101);
if (Odds <= OddsForBlood && EmeraldComponent != null && !EmeraldComponent.AnimationComponent.IsBlocking)
{
GameObject BloodEffect = EmeraldAI.Utility.EmeraldObjectPool.SpawnEffect(BloodEffects[Random.Range(0, BloodEffects.Count)], transform.position + Random.insideUnitSphere * BloodSpawnRadius, Quaternion.identity, BloodDespawnTime);
BloodEffect.transform.position = new Vector3(BloodEffect.transform.position.x, transform.position.y, BloodEffect.transform.position.z);
BloodEffect.transform.rotation = Quaternion.AngleAxis(Random.Range(55, 125), Vector3.right) * Quaternion.AngleAxis(Random.Range(10, 350), Vector3.forward);
BloodEffect.transform.localScale = Vector3.one * Random.Range(0.8f, 1f);
}
}
}
}