166 lines
6.2 KiB
C#
166 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using ZGame;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace HK.FUJIFILM
|
|
{
|
|
public class A11ozCeramicsMugItem : UIItemBase
|
|
{
|
|
[SerializeField] protected RawImage raw;
|
|
[SerializeField] protected Image imgTemplate;
|
|
protected ProductScriptableObject productScriptableObject;
|
|
|
|
protected Dictionary<string, ImageDesignItem> designItems = new Dictionary<string, ImageDesignItem>();
|
|
protected GameObject modelObject;
|
|
protected GameObject currentDesignGo;
|
|
|
|
public override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
|
|
#region AutoGen_Init
|
|
|
|
raw = GetValue<RawImage>("raw");
|
|
imgTemplate = GetValue<Image>("imgTemplate");
|
|
|
|
#endregion
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.W))
|
|
{
|
|
}
|
|
}
|
|
|
|
public void StartRenderPrinting(Action<byte[], List<byte[]>> callback = null)
|
|
{
|
|
RenderPrintingManager.Instance.StartRenderPrinting(currentDesignGo, this.currentDesignGo, callback);
|
|
}
|
|
|
|
public void StartRenderPrintingOnlyDesign(Action<byte[], List<byte[]>> callback = null)
|
|
{
|
|
RenderPrintingManager.Instance.StartRenderPrinting(null, this.currentDesignGo, callback);
|
|
}
|
|
|
|
public override void OnShow()
|
|
{
|
|
base.OnShow();
|
|
EventManager.Instance.Subscribe(ProductA11ozCeramicsMugItemEventArgs.EventId,
|
|
ProductA11ozCeramicsMugItemEvent);
|
|
EventManager.Instance.Subscribe(ProductDesgin_GenPhotoEventArgs.EventId, ProductDesgin_GenPhotoEvent);
|
|
}
|
|
|
|
public override void OnHide()
|
|
{
|
|
base.OnHide();
|
|
EventManager.Instance.Unsubscribe(ProductA11ozCeramicsMugItemEventArgs.EventId,
|
|
ProductA11ozCeramicsMugItemEvent);
|
|
EventManager.Instance.Unsubscribe(ProductDesgin_GenPhotoEventArgs.EventId, ProductDesgin_GenPhotoEvent);
|
|
}
|
|
|
|
protected virtual void ProductDesgin_GenPhotoEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as ProductDesgin_GenPhotoEventArgs;
|
|
|
|
if (!designItems.TryGetValue(args.ID, out ImageDesignItem designItem))
|
|
return;
|
|
|
|
var loadGameObject = ResourcesManager.Instance.LoadGameObject(
|
|
AssetConst.Assets_Res_FUJIFILM_Prefabs_UI_Item_imgDesignItem_prefab, designItem.DesignParent);
|
|
|
|
var image = loadGameObject.GetComponent<Image>();
|
|
image.sprite = args.sprite;
|
|
|
|
ImageScaler.ScaleImageWithMaxSize_Scale(image, designItem.SizeDeltaMax);
|
|
// ImageScaler.ScaleImageWithSize(image, designItem.SizeDeltaMax);
|
|
var itemPosition = Vector2.zero;
|
|
image.rectTransform.anchoredPosition = itemPosition;
|
|
|
|
loadGameObject.SetActive(true);
|
|
|
|
// 随机位置
|
|
// var rectTransformSizeDelta = designItem.RectTransform.sizeDelta / 2;
|
|
// loadGameObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(
|
|
// Random.Range(-rectTransformSizeDelta.x, rectTransformSizeDelta.x),
|
|
// Random.Range(-rectTransformSizeDelta.y, rectTransformSizeDelta.y));
|
|
|
|
EventManager.Instance.FireNow(this,
|
|
new MugActualModel_Fixed_GenPhotoEventArgs(loadGameObject, designItem.ID));
|
|
}
|
|
|
|
public void SetData(ProductScriptableObject productScriptableObject)
|
|
{
|
|
this.productScriptableObject = productScriptableObject;
|
|
if (string.IsNullOrEmpty(productScriptableObject.productGameObjectPfbPath))
|
|
return;
|
|
if (productScriptableObject.is2D)
|
|
{
|
|
modelObject = ResourcesManager.Instance.LoadGameObject(productScriptableObject.productGameObjectPfbPath,
|
|
transform);
|
|
modelObject.GetComponent<RectTransform>().anchoredPosition = productScriptableObject.modelPosition;
|
|
}
|
|
else
|
|
{
|
|
modelObject =
|
|
ResourcesManager.Instance.Load3DModelGameObject(productScriptableObject.productGameObjectPfbPath);
|
|
modelObject.GetComponent<Transform>().localPosition = productScriptableObject.modelPosition;
|
|
var mugActualModel = modelObject.GetComponent<MugActualModel>();
|
|
GetComponent<ModelRotateHitbox>().model = mugActualModel;
|
|
mugActualModel.InitModel(imgTemplate.rectTransform.sizeDelta);
|
|
}
|
|
}
|
|
|
|
protected virtual void ProductA11ozCeramicsMugItemEvent(object sender, GameEventArgs e)
|
|
{
|
|
var args = e as ProductA11ozCeramicsMugItemEventArgs;
|
|
designItems.Clear();
|
|
for (var i = 0; i < imgTemplate.transform.childCount; i++)
|
|
{
|
|
GameObject.Destroy(imgTemplate.transform.GetChild(i).gameObject);
|
|
}
|
|
|
|
imgTemplate.sprite = args.sprite;
|
|
currentDesignGo = ResourcesManager.Instance.LoadGameObject(args.designItem.designItemAssetPath,
|
|
imgTemplate.transform);
|
|
if (currentDesignGo.TryGetComponent(typeof(Image), out var image))
|
|
{
|
|
var img = ((Image)image);
|
|
img.sprite = args.sprite;
|
|
img.enabled = productScriptableObject.isShowTemplate;
|
|
}
|
|
|
|
var list = currentDesignGo.transform.FindChildDeeps<ImageDesignItem>();
|
|
foreach (var item in list)
|
|
{
|
|
item.SetData(GuidGenerator.GenerateStandardGuid());
|
|
designItems.Add(item.ID, item);
|
|
}
|
|
|
|
EventManager.Instance.FireNow(this,
|
|
new ProduceDesign_CopyDesignItemAssetEventArgs(currentDesignGo, productScriptableObject, args.sprite,
|
|
designItems));
|
|
}
|
|
|
|
#region AutoGen_Method
|
|
|
|
#endregion
|
|
|
|
public override void OnDispose()
|
|
{
|
|
base.OnDispose();
|
|
GameObject.Destroy(modelObject);
|
|
|
|
#region AutoGen_Dispose
|
|
|
|
raw = null;
|
|
imgTemplate = null;
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
} |