185 lines
6.2 KiB
C#
185 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Runtime;
|
|
using Runtime.UI.Other;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using ZGame;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace HK
|
|
{
|
|
public class Product2StickerItem : UIItemBase
|
|
{
|
|
[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;
|
|
|
|
public int maxSize = 160;
|
|
|
|
public override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
|
|
#region AutoGen_Init
|
|
|
|
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);
|
|
|
|
#endregion
|
|
|
|
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);
|
|
}
|
|
|
|
private void SwitchTheme(int obj)
|
|
{
|
|
var allTheme = ThemeManagement.Instance.GetAllTheme();
|
|
var o = allTheme[obj] as ThemeScriptableObject;
|
|
GenThemeItem(o, Color.white);
|
|
GenSelectColor(o);
|
|
EventManager.Instance.FireNow(this, new Product2DesignCoverClearEventArgs());
|
|
}
|
|
|
|
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);
|
|
GenSelectColor(allTheme[inde] as ThemeScriptableObject);
|
|
}
|
|
|
|
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(() =>
|
|
{
|
|
EventManager.Instance.FireNow(this,
|
|
new Product2GenStickerEventArgs(currentTheme, sticker, color));
|
|
});
|
|
}
|
|
}
|
|
|
|
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(goThemeColor, 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);
|
|
EventManager.Instance.FireNow(this, new Product2SetDesignCoverPositionEventArgs(1));
|
|
InitSticker();
|
|
EventManager.Instance.FireNow(this, new Product_DesignCover_SetShowEventArgs(true, false));
|
|
}
|
|
|
|
public override void OnHide()
|
|
{
|
|
base.OnHide();
|
|
EventManager.Instance.FireNow(this, new Product_DesignCover_SetShowEventArgs(false, false));
|
|
}
|
|
|
|
#region AutoGen_Method
|
|
|
|
private void OnClickbtnSticker()
|
|
{
|
|
ClickAction?.Invoke();
|
|
}
|
|
|
|
#endregion
|
|
|
|
public override void OnDispose()
|
|
{
|
|
base.OnDispose();
|
|
NotebookColorBar.OnClickAction -= ChooseColor;
|
|
CarouselImage.ClickAction -= SwitchTheme;
|
|
|
|
#region AutoGen_Dispose
|
|
|
|
btnSticker.onClick.RemoveListener(OnClickbtnSticker);
|
|
|
|
btnSticker = null;
|
|
themeItemParent = null;
|
|
themeSelectColorParent = null;
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
} |