FM/Assets/Scripts/FUJIFILM/UI/Other/ImageDesignItem.cs

101 lines
3.3 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
using ZGame;
namespace HK.FUJIFILM
{
public class ImageDesignItem : MonoBehaviour
{
[SerializeField] private Image maskImage;
[SerializeField] private Transform designParent;
[SerializeField] private Button btnAddImage;
[SerializeField] private Image btnAddImage_Child;
public Transform DesignParent => designParent;
private RectTransform rectTransform;
public RectTransform RectTransform
{
get
{
if (rectTransform == null)
rectTransform = transform.GetComponent<RectTransform>();
return rectTransform;
}
}
public float SizeDeltaMax =>
RectTransform.sizeDelta.x > RectTransform.sizeDelta.y
? RectTransform.sizeDelta.x
: RectTransform.sizeDelta.y;
public float SizeDeltaMin =>
RectTransform.sizeDelta.x < RectTransform.sizeDelta.y
? RectTransform.sizeDelta.x
: RectTransform.sizeDelta.y;
public string ID;
public ImageDesignItemParent Parent;
public Action OnClickAddImage;
public Transform targetTran = null;
public Color selectedColor = Color.white;
public Color normalColor = Color.white;
private void Awake()
{
maskImage = GetComponent<Image>();
designParent = transform.GetChild(0).transform;
btnAddImage = transform.GetChild(1).GetComponent<Button>();
btnAddImage.onClick.AddListener(ClickAddImage);
btnAddImage_Child = btnAddImage.GetComponentInChildren<Image>();
EventManager.Instance.Subscribe(ImageDesignItemButtonRestoreEventArgs.EventId,
ImageDesignItemButtonRestoreEvent);
btnAddImage_Child.color = normalColor;
}
private void OnDestroy()
{
EventManager.Instance.Unsubscribe(ImageDesignItemButtonRestoreEventArgs.EventId,
ImageDesignItemButtonRestoreEvent);
}
private void ImageDesignItemButtonRestoreEvent(object sender, GameEventArgs e)
{
var args = e as ImageDesignItemButtonRestoreEventArgs;
if (args.ID == ID)
return;
btnAddImage.transform.localScale = Vector3.one;
btnAddImage_Child.color = normalColor;
}
public void SetData(string id, ImageDesignItemParent parent = null)
{
ID = id;
Parent = parent;
}
public void IsHideBtnAdd(bool value)
{
btnAddImage.gameObject.SetActive(!value);
}
public void DeleteAllPhoto()
{
for (var i = 0; i < designParent.childCount; i++)
{
GameObject.Destroy(designParent.GetChild(i).gameObject);
}
}
private void ClickAddImage()
{
btnAddImage.transform.localScale = Vector3.one * 1.1f;
btnAddImage_Child.color = selectedColor;
OnClickAddImage?.Invoke();
EventManager.Instance.FireNow(this, new ProductDesignItemEventArgs(designParent, ID));
EventManager.Instance.FireNow(this, new ImageDesignItemButtonRestoreEventArgs(ID));
}
}
}