You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

308 lines
10 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LzFramework;
using System;
using DG.Tweening;
namespace DisComputer
{
/*
* @func 映射3D零件
* @author lz
* @data 2020/05/29
* */
public class RendereSpareControl : Singleton<RendereSpareControl>
{
public List<SpareRendererType> spareRendererTypes;
public List<SpareRenderContainerInfo> spareContainers;
//圆盘
[SerializeField]
private GameObject circlePlatGo;
//圆盘缩放系数
private float circleScaleVal;
private SpareRendererType curSpareRen;
private RendererSpareContainer curContainer;
private float curSpareScaleVal;
// Start is called before the first frame update
void Start()
{
circleScaleVal = circlePlatGo.transform.localScale.x;
circlePlatGo.transform.localScale = Vector3.zero;
circlePlatGo.SetActive(false);
}
public void ClearRendererSpare()
{
curSpareRen = null;
curContainer = null;
}
/// <summary>
/// 显示商店零件
/// </summary>
/// <param name="type"></param>
public void ShowStoreSpareRenderer(SpareType type)
{
for (int i = 0; i < spareRendererTypes.Count; i++)
{
if (spareRendererTypes[i].type == type)
{
spareRendererTypes[i].targetGo.SetActive(true);
curSpareScaleVal = spareRendererTypes[i].targetGo.transform.localScale.x;
curSpareRen = spareRendererTypes[i];
if (curSpareRen != null)
{
RendererSpare renderer = curSpareRen.targetGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.SelectStoreRSpare();
}
}
break;
}
}
}
/// <summary>
/// 显示商店零件
/// </summary>
/// <param name="info"></param>
public void ShowStoreSpareRenderer(SpareInfo info)
{
//string strinfo = Newtonsoft.Json.JsonConvert.SerializeObject(info);
//Debug.LogFormat(">>>>>>>>>>>>>>>>>>> show store {0}", strinfo);
for (int i = 0; i < spareContainers.Count; i++)
{
//Debug.LogFormat("spareContainers[i].type {0} info.type {1} ", spareContainers[i].type, info.type);
if (spareContainers[i].type == info.type)
{
curContainer = spareContainers[i].container;
curContainer.SelectSpareRenderGo(info);
curSpareScaleVal = curContainer.curRendererGo.transform.localScale.x;
if (curContainer.curRendererGo != null)
{
RendererSpare renderer = curContainer.curRendererGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.SelectStoreRSpare();
}
}
break;
}
}
}
/// <summary>
/// 隐藏商店零件
/// </summary>
public void HideStoreSpareRenderer()
{
if (curSpareRen != null && curSpareRen.targetGo != null)
{
RendererSpare renderer = curSpareRen.targetGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.HideRSpare();
}
curSpareRen.targetGo.transform.DOScale(Vector3.zero, 0.1f).SetEase(Ease.InSine).OnComplete(() =>
{
curSpareRen.targetGo.SetActive(false);
curSpareRen.targetGo.transform.localScale = new Vector3(curSpareScaleVal, curSpareScaleVal, curSpareScaleVal);
});
}
if (curContainer != null && curContainer.curRendererGo != null)
{
RendererSpare renderer = curContainer.curRendererGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.HideRSpare();
}
curContainer.curRendererGo.transform.DOScale(Vector3.zero, 0.1f).SetEase(Ease.InSine).OnComplete(() =>
{
curContainer.curRendererGo.SetActive(false);
curContainer.curRendererGo.transform.localScale = new Vector3(curSpareScaleVal, curSpareScaleVal, curSpareScaleVal);
});
}
}
/// <summary>
/// 显示零件渲染
/// </summary>
/// <param name="type"></param>
public void ShowSpareRenderer(SpareType type)
{
for(int i = 0;i< spareRendererTypes.Count; i++)
{
if(spareRendererTypes[i].type == type)
{
spareRendererTypes[i].targetGo.SetActive(true);
curSpareScaleVal = spareRendererTypes[i].targetGo.transform.localScale.x;
curSpareRen = spareRendererTypes[i];
if (curSpareRen != null)
{
RendererSpare renderer = curSpareRen.targetGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.SelectRSpare();
}
}
circlePlatGo.gameObject.SetActive(true);
circlePlatGo.transform.DOScale(new Vector3(circleScaleVal, circleScaleVal, circleScaleVal),0.25f).SetEase(Ease.InSine);
LzFramework.UI.TTUIPage.ShowPage<SparePlatformView>(type);
break;
}
}
}
/// <summary>
/// 显示零件渲染
/// </summary>
/// <param name="info">零件信息</param>
public void ShowSpareRenderer(SpareInfo info)
{
for (int i = 0; i < spareContainers.Count; i++)
{
if (spareContainers[i].type == info.type)
{
curContainer = spareContainers[i].container;
curContainer.SelectSpareRenderGo(info);
curSpareScaleVal = curContainer.curRendererGo.transform.localScale.x;
if (curContainer != null)
{
RendererSpare renderer = curContainer.curRendererGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.SelectRSpare();
}
}
circlePlatGo.gameObject.SetActive(true);
circlePlatGo.transform.DOScale(new Vector3(circleScaleVal, circleScaleVal, circleScaleVal), 0.25f).SetEase(Ease.InSine);
LzFramework.UI.TTUIPage.ShowPage<SparePlatformView>(info.type);
MessageContainer.SendMessage(info.simpleInfoStr,this,MsgName.TipViewShowSparePlatform);
break;
}
}
}
/// <summary>
/// 隐藏零件渲染
/// </summary>
public void HideSpareRenderer()
{
circlePlatGo.transform.DOScale(Vector3.zero, 0.2f).SetEase(Ease.InSine).OnComplete(()=>
{
circlePlatGo.SetActive(false);
});
if (curSpareRen != null && curSpareRen.targetGo != null)
{
RendererSpare renderer = curSpareRen.targetGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.HideRSpare();
}
MessageContainer.SendMessage(null, this, MsgName.TipViewHideSparePlatform);
curSpareRen.targetGo.transform.DOScale(Vector3.zero, 0.2f).SetEase(Ease.InSine).OnComplete(() =>
{
curSpareRen.targetGo.SetActive(false);
curSpareRen.targetGo.transform.localScale = new Vector3(curSpareScaleVal, curSpareScaleVal, curSpareScaleVal);
LzFramework.UI.TTUIPage.ClosePage<SparePlatformView>();
//打开零件背包
LzFramework.UI.TTUIPage.ShowPage<SparePartsView>(false);
MessageContainer.SendMessage(curSpareRen.type, this, MsgName.SparePartsViewAddSpare, 0.25f);
});
}
if (curContainer != null && curContainer.curRendererGo != null)
{
RendererSpare renderer = curContainer.curRendererGo.GetComponent<RendererSpare>();
if (renderer != null)
{
renderer.HideRSpare();
}
MessageContainer.SendMessage(null, this, MsgName.TipViewHideSparePlatform);
curContainer.curRendererGo.transform.DOScale(Vector3.zero, 0.2f).SetEase(Ease.InSine).OnComplete(() =>
{
curContainer.curRendererGo.SetActive(false);
curContainer.curRendererGo.transform.localScale = new Vector3(curSpareScaleVal, curSpareScaleVal, curSpareScaleVal);
LzFramework.UI.TTUIPage.ClosePage<SparePlatformView>();
//打开零件背包
LzFramework.UI.TTUIPage.ShowPage<SparePartsView>(false);
MessageContainer.SendMessage(curContainer.curSpareInfo, this, MsgName.SparePartsViewAddSpare, 0.25f);
});
}
}
}
[Serializable]
public class SpareRendererType
{
public SpareType type;
public GameObject targetGo;
}
[Serializable]
public class SpareRenderContainerInfo
{
public SpareType type;
public RendererSpareContainer container;
}
}