using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System;
|
|
|
public class WeatherTransform : MonoBehaviour
|
{
|
[SerializeField] Transform m_EffectParent;
|
|
float checkTimer = 0f;
|
float weatherEndTime = 0f;
|
SFXController weatherEffect;
|
int m_WeatherIndex = -1;
|
int currentMapId { get { return PlayerDatas.Instance.baseData.MapID; } }
|
|
private void OnEnable()
|
{
|
checkTimer = 0f;
|
CheckAndPlayEffect();
|
}
|
|
private void OnDisable()
|
{
|
}
|
|
private void LateUpdate()
|
{
|
checkTimer += Time.deltaTime;
|
if (checkTimer > 60f)
|
{
|
CheckAndPlayEffect();
|
checkTimer = 0f;
|
}
|
|
if (Time.time > weatherEndTime && weatherEffect != null)
|
{
|
SFXPlayUtility.Instance.Release(weatherEffect);
|
weatherEffect = null;
|
}
|
}
|
|
private void CheckAndPlayEffect()
|
{
|
var weatherConfig = WeatherConfig.Get(currentMapId);
|
if (weatherConfig == null)
|
{
|
m_WeatherIndex = -1;
|
if (weatherEffect != null)
|
{
|
SFXPlayUtility.Instance.Release(weatherEffect);
|
weatherEffect = null;
|
}
|
}
|
else
|
{
|
var index = DateTime.Now.Minute / 5;
|
if (m_WeatherIndex != index)
|
{
|
var effectId = weatherConfig != null ? weatherConfig.EffectIds[index] : 0;
|
|
if (weatherEffect != null)
|
{
|
SFXPlayUtility.Instance.Release(weatherEffect);
|
weatherEffect = null;
|
}
|
|
if (effectId != 0)
|
{
|
weatherEffect = SFXPlayUtility.Instance.Play(effectId, m_EffectParent);
|
weatherEndTime = Time.time + weatherConfig.EffectDurings[index] * 0.001f;
|
}
|
|
}
|
}
|
|
}
|
|
|
}
|