using System.Collections.Generic;
using UnityEngine;
using UnityImage = UnityEngine.UI.Image;
namespace VketCloudGUITools.Runtime
{
///
/// HeliodorのCImage相当
/// MEMO : ExecuteAlways は、エディタ上で親子変更やOn/Off変更による状態変化を追跡するために必要
///
[ExecuteAlways]
[RequireComponent(typeof(RectTransform))]
[RequireComponent(typeof(UnityImage))]
public class VCImage : VCGUIItemBehaviour, IVCGUIItem, IHasStateToggleList, IHasVCTransform
{
[SerializeField] private UnityImage _unityImage;
[SerializeField] private List _toggleList = new List();
[SerializeField] private List _uvArea;
[SerializeField] private List _uvAreaRate;
//[SerializeField] private string _fileName;
public override void ResolveRequireComponents()
{
_vcTransform = GetComponent();
_unityImage = GetComponent();
}
public string Name
{
get => gameObject.name;
set => gameObject.name = value;
}
public Sprite Sprite
{
get => _unityImage.sprite;
set => _unityImage.sprite = value;
}
public Color MulColor
{
get => _unityImage.color;
set => _unityImage.color = value;
}
public List ToggleList
{
get => _toggleList;
set => _toggleList = value;
}
public List UVArea
{
get => _uvArea;
set => _uvArea = value;
}
public List UVAreaRate
{
get => _uvAreaRate;
set => _uvAreaRate = value;
}
public override void OnParentLayerShowChanged()
{
UpdateVisible();
}
public override void UpdateVisible()
{
// Visibleフラグは、heliodorとの互換性のための表示状態管理フラグです。
// https://hikky.atlassian.net/wiki/spaces/VKETCLOUD/pages/530317633/Canvas+Show
Visible = Show && _toggleList.IsAllTrue() && ((ParentLayer != null) ? ParentLayer.Show : true);
}
public override void OnVisibleChanged()
{
if (_unityImage != null)
_unityImage.enabled = Visible;
}
public override void OnResolveReferences(VCLayerList parentLayer)
{
_parentLayer = parentLayer;
ResolveRequireComponents();
}
public void ToggleChange(string name)
{
StateToggleListUtility.CommonToggleChange(this, this, name);
}
public void ToggleDefault(string name)
{
StateToggleListUtility.CommonToggleDefault(this, this, name);
}
}
}