2025-07-02 10:24:01 +08:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using Runtime;
|
|
|
|
using Runtime.UI.Other;
|
2025-06-17 09:31:12 +08:00
|
|
|
using UnityEngine.UI;
|
|
|
|
using TMPro;
|
|
|
|
using UnityEngine;
|
2025-07-02 10:24:01 +08:00
|
|
|
using Random = UnityEngine.Random;
|
2025-06-17 09:31:12 +08:00
|
|
|
|
|
|
|
namespace HK
|
|
|
|
{
|
|
|
|
public class Product2StickerItem : UIItemBase
|
|
|
|
{
|
2025-07-02 10:24:01 +08:00
|
|
|
[SerializeField] private Button btnSticker;
|
|
|
|
|
|
|
|
// [SerializeField] private Transform themeParent;
|
|
|
|
[SerializeField] private Transform themeItemParent;
|
|
|
|
[SerializeField] private Transform themeSelectColorParent;
|
|
|
|
[SerializeField] private NotebookColorBar NotebookColorBar;
|
|
|
|
[SerializeField] private CarouselImage CarouselImage;
|
|
|
|
[SerializeField] private Transform imgDesignParent;
|
|
|
|
|
|
|
|
Book_M book;
|
|
|
|
public Action ClickAction;
|
|
|
|
|
|
|
|
// tmp
|
|
|
|
GameObject goTheme;
|
|
|
|
GameObject goThemeItem;
|
|
|
|
GameObject goThemeColor;
|
|
|
|
GameObject goDesign;
|
|
|
|
GameObject goDesignOnly;
|
|
|
|
|
|
|
|
public int maxSize = 160;
|
2025-06-17 09:31:12 +08:00
|
|
|
|
|
|
|
public override void OnInit()
|
|
|
|
{
|
|
|
|
base.OnInit();
|
2025-07-02 10:24:01 +08:00
|
|
|
|
2025-06-17 09:31:12 +08:00
|
|
|
#region AutoGen_Init
|
|
|
|
|
2025-07-02 10:24:01 +08:00
|
|
|
btnSticker = GetValue<Button>("btnSticker");
|
|
|
|
// themeParent = GetValue<Transform>("themeParent");
|
|
|
|
themeItemParent = GetValue<Transform>("themeItemParent");
|
|
|
|
themeSelectColorParent = GetValue<Transform>("themeSelectColorParent");
|
|
|
|
NotebookColorBar = GetValue<NotebookColorBar>("NotebookColorBar");
|
|
|
|
CarouselImage = GetValue<CarouselImage>("CarouselImage");
|
|
|
|
imgDesignParent = GetValue<Transform>("imgDesignParent");
|
|
|
|
|
|
|
|
btnSticker.onClick.AddListener(OnClickbtnSticker);
|
2025-06-17 09:31:12 +08:00
|
|
|
|
|
|
|
#endregion
|
2025-07-02 10:24:01 +08:00
|
|
|
|
|
|
|
NotebookColorBar.OnClickAction += ChooseColor;
|
|
|
|
CarouselImage.ClickAction += SwitchTheme;
|
|
|
|
goTheme = ResourcesManager.Instance.Load<GameObject>(AssetConst
|
|
|
|
.Assets_Res_Prefab_UI_Item_btnProduct2Sticker_Theme_prefab);
|
|
|
|
goThemeItem =
|
|
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst
|
|
|
|
.Assets_Res_Prefab_UI_Item_btnProduct2Sticker_ThemeItem_prefab);
|
|
|
|
goThemeColor =
|
|
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst
|
|
|
|
.Assets_Res_Prefab_UI_Item_btnProduct2Sticker_SelectColor_prefab);
|
|
|
|
goDesign =
|
|
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst
|
|
|
|
.Assets_Res_Prefab_UI_Item_btnProduct2Sticker_ItemDesign_prefab);
|
|
|
|
goDesignOnly =
|
|
|
|
ResourcesManager.Instance.Load<GameObject>(AssetConst
|
|
|
|
.Assets_Res_Prefab_UI_Item_btnProduct2Sticker_ItemDesignOnly_prefab);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void SwitchTheme(int obj)
|
|
|
|
{
|
|
|
|
var allTheme = ThemeManagement.Instance.GetAllTheme();
|
|
|
|
var o = allTheme[obj] as ThemeScriptableObject;
|
|
|
|
GenThemeItem(o, Color.white);
|
|
|
|
GenSelectColor(o);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void ChooseColor(Texture obj)
|
|
|
|
{
|
|
|
|
book.ChangeTexture(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetBook(Book_M book)
|
|
|
|
{
|
|
|
|
this.book = book;
|
|
|
|
}
|
|
|
|
|
|
|
|
void InitSticker()
|
|
|
|
{
|
|
|
|
var allTheme = ThemeManagement.Instance.GetAllTheme();
|
|
|
|
Sprite[] sprites = new Sprite[allTheme.Length];
|
|
|
|
for (var i = 0; i < allTheme.Length; i++)
|
|
|
|
{
|
|
|
|
var o = allTheme[i] as ThemeScriptableObject;
|
|
|
|
sprites[i] = o.banner;
|
|
|
|
}
|
|
|
|
|
|
|
|
var inde = PlayerPersistent.GetInt("ThemeIndex");
|
|
|
|
CarouselImage.Init(sprites, inde);
|
|
|
|
GenThemeItem(allTheme[inde] as ThemeScriptableObject, Color.white);
|
|
|
|
}
|
|
|
|
|
|
|
|
ThemeScriptableObject currentTheme;
|
|
|
|
|
|
|
|
void GenThemeItem(ThemeScriptableObject theme, Color color)
|
|
|
|
{
|
|
|
|
currentTheme = theme;
|
|
|
|
for (var i = 0; i < themeItemParent.childCount; i++)
|
|
|
|
{
|
|
|
|
GameObject.Destroy(themeItemParent.GetChild(i).gameObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (var sticker in theme.lightStickers)
|
|
|
|
{
|
|
|
|
var go = GameObject.Instantiate(goThemeItem, themeItemParent);
|
|
|
|
var image = go.GetComponent<Image>();
|
|
|
|
image.sprite = sticker;
|
|
|
|
image.color = color;
|
|
|
|
var rect = sticker.rect;
|
|
|
|
var max = rect.width > rect.height ? rect.width : rect.height;
|
|
|
|
var size = maxSize / max;
|
|
|
|
image.rectTransform.sizeDelta = new Vector2(size * rect.width, size * rect.height);
|
|
|
|
|
|
|
|
go.GetComponent<Button>().onClick.AddListener(() => { GenThemeItemToParent(sticker, color); });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
List<GameObject> themeItemDesignList = new List<GameObject>();
|
|
|
|
|
|
|
|
void GenThemeItemToParent(Sprite sprite, Color color)
|
|
|
|
{
|
|
|
|
GameObject obj;
|
|
|
|
if (currentTheme.isOnlyOne)
|
|
|
|
{
|
|
|
|
foreach (var o in themeItemDesignList)
|
|
|
|
{
|
|
|
|
GameObject.Destroy(o.gameObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
themeItemDesignList.Clear();
|
|
|
|
obj = GameObject.Instantiate(goDesignOnly, imgDesignParent);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
obj = GameObject.Instantiate(goDesign, imgDesignParent);
|
|
|
|
|
|
|
|
var image = obj.GetComponent<Image>();
|
|
|
|
image.sprite = sprite;
|
|
|
|
image.color = color;
|
|
|
|
var rect = obj.GetComponent<RectTransform>();
|
|
|
|
var rectTransform = imgDesignParent.GetComponent<RectTransform>();
|
|
|
|
if (currentTheme.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>();
|
|
|
|
}
|
|
|
|
|
|
|
|
themeItemDesignList.Add(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
void GenSelectColor(ThemeScriptableObject theme)
|
|
|
|
{
|
|
|
|
for (var i = 0; i < themeSelectColorParent.childCount; i++)
|
|
|
|
{
|
|
|
|
GameObject.Destroy(themeSelectColorParent.GetChild(i).gameObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (var color in theme.colors)
|
|
|
|
{
|
|
|
|
var go = GameObject.Instantiate(goTheme, themeSelectColorParent);
|
|
|
|
var image = go.GetComponent<Image>();
|
|
|
|
image.color = color;
|
|
|
|
go.GetComponent<Button>().onClick.AddListener(() => { GenThemeItem(theme, image.color); });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void OnShow()
|
|
|
|
{
|
|
|
|
base.OnShow();
|
|
|
|
book.SetIndex(1);
|
|
|
|
InitSticker();
|
2025-06-17 09:31:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
#region AutoGen_Method
|
2025-07-02 10:24:01 +08:00
|
|
|
|
|
|
|
private void OnClickbtnSticker()
|
|
|
|
{
|
|
|
|
ClickAction?.Invoke();
|
|
|
|
}
|
2025-06-17 09:31:12 +08:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
public override void OnDispose()
|
|
|
|
{
|
|
|
|
base.OnDispose();
|
2025-07-02 10:24:01 +08:00
|
|
|
NotebookColorBar.OnClickAction -= ChooseColor;
|
|
|
|
CarouselImage.ClickAction -= SwitchTheme;
|
|
|
|
|
2025-06-17 09:31:12 +08:00
|
|
|
#region AutoGen_Dispose
|
2025-07-02 10:24:01 +08:00
|
|
|
|
|
|
|
btnSticker.onClick.RemoveListener(OnClickbtnSticker);
|
|
|
|
|
|
|
|
btnSticker = null;
|
|
|
|
themeItemParent = null;
|
|
|
|
themeSelectColorParent = null;
|
2025-06-17 09:31:12 +08:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|