207 lines
7.9 KiB
C#
207 lines
7.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using DG.Tweening;
|
|
using HK.Keyboard;
|
|
using Runtime;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using TouchScript.Gestures.TransformGestures;
|
|
using UnityEngine;
|
|
using ZGame;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace HK
|
|
{
|
|
public class DesignCoverItem : UIItemBase
|
|
{
|
|
[SerializeField] private Image imgDesignParent;
|
|
[SerializeField] private TMP_InputField inpContent;
|
|
|
|
[SerializeField] private List<UpdatePosAndRotData> updatePosAndRotData;
|
|
|
|
GameObject designItem;
|
|
GameObject designItemOnlyOne;
|
|
List<GameObject> designItems = new List<GameObject>();
|
|
public int maxSize = 160;
|
|
[SerializeField] float doTweenTime = 1f;
|
|
|
|
public override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
|
|
#region AutoGen_Init
|
|
|
|
imgDesignParent = GetValue<Image>("imgDesignParent");
|
|
inpContent = GetValue<TMP_InputField>("inpContent");
|
|
|
|
#endregion
|
|
|
|
EventManager.Instance.Subscribe(Product_DesignCover_SetShowEventArgs.EventId,
|
|
Product_DesignCover_SetShowEvent);
|
|
EventManager.Instance.Subscribe(ProductIsShowDesignCoverEventArgs.EventId, ProductIsShowDesignCoverEvent);
|
|
EventManager.Instance.Subscribe(Product3SetTextPositionEventArgs.EventId, Product3SetTextPositionEvent);
|
|
EventManager.Instance.Subscribe(Product2GenStickerEventArgs.EventId, Product2GenStickerEvent);
|
|
EventManager.Instance.Subscribe(Product2DesignCoverClearEventArgs.EventId, Product2DesignCoverClearEvent);
|
|
EventManager.Instance.Subscribe(Product2SetDesignCoverPositionEventArgs.EventId,
|
|
Product2SetDesignCoverPositionEvent);
|
|
designItem =
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst.Assets_Res_Prefab_UI_Item_btnDesignCover_prefab);
|
|
designItemOnlyOne =
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst.Assets_Res_Prefab_UI_Item_btnDesignCover_prefab);
|
|
IsOpenStickerTouch(false);
|
|
IsOpenInputFiledTouch(false);
|
|
}
|
|
|
|
private void Product_DesignCover_SetShowEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as Product_DesignCover_SetShowEventArgs;
|
|
IsOpenStickerTouch(args.isShow_Sticker);
|
|
IsOpenInputFiledTouch(args.isShow_InputText);
|
|
|
|
if (args.isShow_InputText && string.IsNullOrEmpty(inpContent.text))
|
|
{
|
|
inpContent.placeholder.GetComponent<TMP_Text>().text = "Add Text...";
|
|
}
|
|
else if (!args.isShow_InputText && string.IsNullOrEmpty(inpContent.text))
|
|
{
|
|
inpContent.placeholder.GetComponent<TMP_Text>().text = "";
|
|
}
|
|
|
|
if (args.isShow_InputText && !args.isShow_Sticker)
|
|
{
|
|
EventManager.Instance.FireNow(this,
|
|
new OpenKeyboardEventArgs(inpContent, inpContent.GetComponent<TMP_InputField_Register>().OKAction));
|
|
}
|
|
}
|
|
|
|
private void ProductIsShowDesignCoverEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as ProductIsShowDesignCoverEventArgs;
|
|
gameObject.SetActive(args.isShow);
|
|
}
|
|
|
|
public override void OnShow()
|
|
{
|
|
base.OnShow();
|
|
EventManager.Instance.FireNow(this, new Product3SetTextTargetEventArgs(inpContent));
|
|
}
|
|
|
|
private void IsOpenStickerTouch(bool isOpen)
|
|
{
|
|
foreach (var o in designItems)
|
|
{
|
|
o.GetComponent<TransformGesture>().enabled = isOpen;
|
|
}
|
|
}
|
|
|
|
private void IsOpenInputFiledTouch(bool isOpen)
|
|
{
|
|
inpContent.GetComponent<TransformGesture>().enabled = isOpen;
|
|
}
|
|
|
|
private void Product3SetTextPositionEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as Product3SetTextPositionEventArgs;
|
|
inpContent.transform.localPosition = args.pos;
|
|
inpContent.transform.localEulerAngles = args.angle;
|
|
inpContent.textComponent.alignment = args.alignmentOptions;
|
|
}
|
|
|
|
private void Product2DesignCoverClearEvent(object sender, GameEventArgs e)
|
|
{
|
|
foreach (var o in designItems)
|
|
{
|
|
GameObject.Destroy(o.gameObject);
|
|
}
|
|
|
|
designItems.Clear();
|
|
}
|
|
|
|
private void Product2SetDesignCoverPositionEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as Product2SetDesignCoverPositionEventArgs;
|
|
UpdatePosition(args.index);
|
|
}
|
|
|
|
private void Product2GenStickerEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as Product2GenStickerEventArgs;
|
|
GenThemeItemToParent(args.currentTheme, args.sprite, args.color);
|
|
}
|
|
|
|
#region AutoGen_Method
|
|
|
|
#endregion
|
|
|
|
private void GenThemeItemToParent(ThemeScriptableObject theme, Sprite sprite, Color color)
|
|
{
|
|
GameObject obj;
|
|
if (theme.isOnlyOne)
|
|
{
|
|
foreach (var o in designItems)
|
|
{
|
|
GameObject.Destroy(o.gameObject);
|
|
}
|
|
|
|
designItems.Clear();
|
|
obj = GameObject.Instantiate(designItemOnlyOne, imgDesignParent.transform);
|
|
}
|
|
else
|
|
obj = GameObject.Instantiate(designItem, imgDesignParent.transform);
|
|
|
|
var image = obj.GetComponent<Image>();
|
|
image.sprite = sprite;
|
|
image.color = color;
|
|
var rect = obj.GetComponent<RectTransform>();
|
|
var rectTransform = imgDesignParent.GetComponent<RectTransform>();
|
|
if (theme.isOnlyOne)
|
|
{
|
|
rect.sizeDelta = new Vector2(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y);
|
|
}
|
|
else
|
|
{
|
|
var x = rectTransform.sizeDelta.x / 2;
|
|
var y = rectTransform.sizeDelta.y / 2;
|
|
rect.anchoredPosition = new Vector2(Random.Range(-x, x), Random.Range(-y, y));
|
|
|
|
var max = sprite.rect.width > sprite.rect.height ? sprite.rect.width : sprite.rect.height;
|
|
var size = maxSize / max;
|
|
rect.sizeDelta = new Vector2(size * sprite.rect.width, size * sprite.rect.height);
|
|
|
|
// var f = Random.Range(1f, 2f);
|
|
// obj.transform.localScale = Vector3.one * f;
|
|
// obj.GetComponent<UIDragHandler>();
|
|
}
|
|
|
|
EventManager.Instance.FireNow(this, new Product2AddDesignCoverEventArgs(obj));
|
|
designItems.Add(obj);
|
|
}
|
|
|
|
private void UpdatePosition(int index)
|
|
{
|
|
transform.DOLocalMove(updatePosAndRotData[index].localPosition, doTweenTime);
|
|
transform.DOLocalRotate(updatePosAndRotData[index].localRotation.eulerAngles, doTweenTime);
|
|
transform.DOScale(updatePosAndRotData[index].localScale, doTweenTime);
|
|
}
|
|
|
|
public override void OnDispose()
|
|
{
|
|
base.OnDispose();
|
|
EventManager.Instance.Unsubscribe(Product_DesignCover_SetShowEventArgs.EventId,
|
|
Product_DesignCover_SetShowEvent);
|
|
EventManager.Instance.Unsubscribe(ProductIsShowDesignCoverEventArgs.EventId, ProductIsShowDesignCoverEvent);
|
|
EventManager.Instance.Unsubscribe(Product3SetTextPositionEventArgs.EventId, Product3SetTextPositionEvent);
|
|
EventManager.Instance.Unsubscribe(Product2GenStickerEventArgs.EventId, Product2GenStickerEvent);
|
|
EventManager.Instance.Unsubscribe(Product2DesignCoverClearEventArgs.EventId, Product2DesignCoverClearEvent);
|
|
EventManager.Instance.Unsubscribe(Product2SetDesignCoverPositionEventArgs.EventId,
|
|
Product2SetDesignCoverPositionEvent);
|
|
|
|
#region AutoGen_Dispose
|
|
|
|
imgDesignParent = null;
|
|
inpContent = null;
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
} |