Files
aibis-dream/Assets/Scripts/SceneManagement/EnvironmentKit/SpriteScenePart.cs
T

49 lines
1.5 KiB
C#

using System;
using System.Linq;
using UnityEngine;
namespace AibisDream
{
[RequireComponent(typeof(SpriteRenderer))]
public class SpriteScenePart : AbsScenePart
{
[SerializeField] private SpritePartAsset[] spritePartAssets;
private SpriteRenderer _spriteRenderer;
public override void Init(TimesOfDay time, Weather weather)
{
_spriteRenderer = GetComponent<SpriteRenderer>();
curWeather = weather;
OnTimeChange(time);
}
public override void OnTimeChange(TimesOfDay time)
{
curTime = time;
var timeArray = spritePartAssets.Where(item => item.time == time).ToArray();
if (timeArray.Length == 0) return;
var res = timeArray.DefaultIfEmpty(timeArray[0]).First(item => item.weather == curWeather);
_spriteRenderer.sprite = res.sprite;
}
public override void OnWeatherChange(Weather weather)
{
curWeather = weather;
var weatherArray = spritePartAssets.Where(item => item.weather == weather).ToArray();
if (weatherArray.Length == 0) return;
var res = weatherArray.DefaultIfEmpty(weatherArray[0]).First(item => item.time == curTime);
_spriteRenderer.sprite = res.sprite;
}
}
[Serializable]
public struct SpritePartAsset
{
public TimesOfDay time;
public Weather weather;
public Sprite sprite;
}
}