using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class Layer2 : MonoBehaviour
{
public static Layer2 instance;
#region 按钮
[Header(“返回一级界面”)]
public Button back_btn;
[Header(“展开列表”)]
public Button list_btn;
[Header(“关闭列表”)]
public Button close_list_btn;
[Header("播放模型动画")]
public Button model_play_btn;
[Header("暂停模型动画")]
public Button model_stop_btn;
[Header("播放、暂停模型动画按钮父物体")]
public GameObject model_obj_btn;
[Header("主键按钮")]
public List<Button> MKey_btn;
[Header("副键按钮")]
public List<Button> AKey_btn;
[Header("副键数目按钮")]
public List<Button> listbtn_text;
[Header("主键数目按钮")]
public List<Button> listmainbtn_text;
#endregion
#region 物体
[Header("局部按钮")]
public GameObject btns_obj;
[Header("主键数量")]
public GameObject btns_MKey_obj;
[Header("副键数量")]
public GameObject btns_AKey_obj;
[Header("副键数目文本")]
public List<Text> list_text;
[Header("主键数目文本")]
public List<Text> listmain_text;
#endregion
#region 物体
//展开 收起
private int index = 0;
//模型动画播放 暂停
private int index_model = 0;
#endregion
#region 按钮
private int secondbtnIdx1 = 0;
[Header("未选中的颜色副键按钮-灰色")]
/// <summary>
/// 未选中的颜色-灰色
/// </summary>
public Texture2D m_unselected_texture2d;
[Header("选中的颜色副键按钮-亮色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
public Texture2D m_selected_texture2d;
//上方数目的按钮的点击数
private int AmountbtnIdx = 0;
//下方数目的按钮的点击数
private int AmountbtnIdx1 = 0;
[Header("未选中的颜色副键按钮-灰色")]
/// <summary>
/// 未选中的颜色-灰色
/// </summary>
public Texture2D m_unselected_Amount_texture2d;
[Header("选中的颜色副键按钮-亮色")]
/// <summary>
/// 选中的颜色-橙色
/// </summary>
public Texture2D m_selected_Amount_texture2d;
#endregion
[Header("对准模型的相机")]
public Camera camera;
[Header("八系统介绍")]
public GameObject table_obj;
[Header("主键介绍")]
public Text text_obj;
[Header("主键介绍")]
public List<GameObject> btns;
private int indexbtn;
[Header("模型父物体")]
public GameObject model_obj;
[Header("模型图片动画")]
public Image img_obj;
[Header("模型动画")]
public List<Animation> anims;
[Header("数目按钮父物体")]
public GameObject numbel_obj;
[Header("模型显示")]
public Button modelshow_btn;
public Animation lastanim;
[Header("高亮模型介绍")]
public Text text_hight;
[Header("系统介绍")]
public GameObject system_obj;
[Header("操作介绍")]
public GameObject action_obj;
[Header("点击副键数目按钮记录")]
public int recort;
[Header("上一个点击下排副键按钮记录")]
public int lastdown;
[Header("图片滑动")]
public ScrollRect scroll;
// Start is called before the first frame update
void Start()
{
instance = this;
back_btn.onClick.AddListener(Back_OnClick);
list_btn.onClick.AddListener(List_OnClick);
close_list_btn.onClick.AddListener(List_OnClick);
modelshow_btn.onClick.AddListener(ModelShow_OnClick);
//模型动画
model_play_btn.onClick.AddListener(Model_Anim_OnClick);
model_stop_btn.onClick.AddListener(Model_Anim_OnClick);
//点击主键按钮监听
for (int i = 0; i < MKey_btn.Count; i++)
{
int a = i;
MKey_btn[i].onClick.AddListener(delegate () { ChooseMKey_OnClick(a); });
}
//点击副键按钮监听
for (int i = 0; i < AKey_btn.Count; i++)
{
int a = i;
AKey_btn[i].onClick.AddListener(delegate () { ChooseAKey_OnClick(a); });
}
//点击主键数目按钮监听
for (int i = 0; i < listmainbtn_text.Count; i++)
{
int a = i;
listmainbtn_text[i].onClick.AddListener(delegate () { AmountMain_OnClick(a); });
}
//点击副键数目按钮监听
for (int i = 0; i < listbtn_text.Count; i++)
{
int a = i;
listbtn_text[i].onClick.AddListener(delegate () { AmountVice_OnClick(a); });
}
model_obj.SetActive(false);
}
//点击主键数目按钮点击效果
private void AmountMain_OnClick(int i)
{
system_obj.SetActive(true);
action_obj.SetActive(false);
table_obj.SetActive(false);
text_obj.gameObject.SetActive(true);
//主键介绍
text_obj.text = "\u3000\u3000" + LoadXml.instance.data_list[i].text;
if (AmountbtnIdx >= 0)
{
ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
}
ChangeButtonUI1(listmainbtn_text[i], m_selected_Amount_texture2d);
AmountbtnIdx = i;
}
//点击副键数目按钮点击效果
private void AmountVice_OnClick(int i)
{
modelshow_btn.gameObject.SetActive(false);
Time.timeScale = 1;
system_obj.SetActive(true);
action_obj.SetActive(false);
if (recort >= 0)
{
//ChangeButtonUI1(listbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
ChangeButtonUI1(listbtn_text[recort], m_unselected_Amount_texture2d);
ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
}
ChangeButtonUI1(listbtn_text[i], m_selected_Amount_texture2d);
AmountbtnIdx = i;
StopAllCoroutines();
StartCoroutine(PlayAnimate(i));
recort = i;
}
/// <summary>
/// 数目按钮点击后改变颜色
/// </summary>
/// <param name="_btn"></param>
/// <param name="_tex2D"></param>
public void ChangeButtonUI1(Button _btn, Texture2D _tex2D)
{
_btn.GetComponent<Image>().sprite = Sprite.Create(_tex2D, new Rect(0, 0, _tex2D.width, _tex2D.height), new Vector2(0.5f, 0.5f));
}
private void OnEnable()
{
for (int i = 0; i < AKey_btn.Count; i++)
{
ChangeButtonUI(AKey_btn[i], m_unselected_texture2d);
}
index = 0;
list_btn.gameObject.SetActive(true);
close_list_btn.gameObject.SetActive(false);
btns_obj.SetActive(false);
btns_MKey_obj.SetActive(false);
btns_AKey_obj.SetActive(false);
table_obj.SetActive(true);
text_obj.gameObject.SetActive(false);
}
/// <summary>
/// 点击主键 副键数目显示
/// </summary>
private void ChooseMKey_OnClick(int i)
{
modelshow_btn.gameObject.SetActive(false);
table_obj.SetActive(false);
text_obj.gameObject.SetActive(true);
//播放模型图片动画
ModelManager.instance.ModelChange(0);
//主键介绍
text_obj.text = "\u3000\u3000" + LoadXml.instance.data_list[i].text;
ChangeButtonUI(AKey_btn[secondbtnIdx1], m_unselected_texture2d);
camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
AmountbtnIdx1 = recort;
ChangeButtonUI1(listbtn_text[AmountbtnIdx1], m_unselected_Amount_texture2d);
if (AmountbtnIdx >= 0)
{
ChangeButtonUI1(listmainbtn_text[secondbtnIdx1], m_unselected_Amount_texture2d);
modelControl.Instance.CloseHighlighter();
}
btns_AKey_obj.SetActive(true);
btns_MKey_obj.SetActive(false);
for (int j = 0; j < 5; j++)
{
list_text[j].text = LoadXml.instance.data_list[i].datas[j].datas.Count.ToString();
}
indexbtn = i;
}
/// <summary>
/// 判断主类型下标
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public int GetMianIndex(string name)
{
switch (name)
{
case "锁紧":
{
return 0;
}
case "润滑":
{
return 1;
}
case "驱动":
{
return 2;
}
case "传递":
{
return 3;
}
case "空压":
{
return 4;
}
case "电装":
{
return 5;
}
case "控制":
{
return 6;
}
case "计装":
{
return 7;
}
default:
break;
}
return -1;
}
/// <summary>
/// 点击副键 主键数目显示
/// </summary>
private void ChooseAKey_OnClick(int i)
{
modelshow_btn.gameObject.SetActive(false);
system_obj.SetActive(true);
action_obj.SetActive(false);
Time.timeScale = 1;
Modulontroller.instance.type1 = -1;
btns_MKey_obj.SetActive(true);
btns_AKey_obj.SetActive(false);
btns[indexbtn].SetActive(false);
//点击副键时 副键数目的按钮高亮取消
if (AmountbtnIdx >= 0)
{
ChangeButtonUI1(listbtn_text[secondbtnIdx1], m_unselected_Amount_texture2d);
modelControl.Instance.CloseHighlighter();
ChangeButtonUI1(listmainbtn_text[AmountbtnIdx], m_unselected_Amount_texture2d);
}
for (int j = 0; j < 8; j++)
{
listmain_text[j].text = LoadXml.instance.data_list[j].datas[i].datas.Count.ToString();
}
if (secondbtnIdx1 >= 0)
{
ChangeButtonUI(AKey_btn[secondbtnIdx1], m_unselected_texture2d);
}
ChangeButtonUI(AKey_btn[i], m_selected_texture2d);
secondbtnIdx1 = i;
StopAllCoroutines();
StartCoroutine(PlayAnimate(i));
lastdown = i;
}
IEnumerator PlayAnimate(int i)
{
index_model = 1;
Model_Anim_OnClick();
model_obj_btn.SetActive(false);
camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
ModelManager.instance.ModelChange(0);
ModelManager.instance.models[0].GetComponent<ModelSet>().RecoverObj();
//点击下面按钮时 大模型里面 小模型块高亮
if(lastdown >= 0)
{
//副键按钮
modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[lastdown]);
}
if (recort >= 0)
{
//副键数目按钮
modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[recort]);
}
//Debug.Log("============show============" + i);
modelControl.Instance.SetHighlighter(ModelManager.instance.modelshows[i]);
yield return new WaitForSeconds(2);
//点击下面按钮时 大模型里面 小模型块高亮取消
modelControl.Instance.CloseHigh(ModelManager.instance.modelshows[i]);
if (lastanim != null)
{
lastanim.Stop();
if (lastanim.GetComponent<ModelSet>() != null)
lastanim.GetComponent<ModelSet>().RecoverObj();
}
camera.transform.DOKill();
Inspection.Instance.RecoverHideObjs();
yield return new WaitForEndOfFrame();
if (i == 0)
{
camera.transform.DOMove(new Vector3(0.16f, 1.9f, 29.6f), 2);
camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
}
else if (i == 1)
{
camera.transform.DOMove(new Vector3(0.135f, 2.68f, 27.5f), 2);
camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
}
else if (i == 2)
{
camera.transform.DOMove(new Vector3(0.54f, 2.82f, 26.26f), 2);
camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
}
else if (i == 3)
{
camera.transform.DOMove(new Vector3(-0.54f, 3.44f, 27.6f), 2);
camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
}
else if (i == 4)
{
camera.transform.DOMove(new Vector3(0.13f, 3.35f, 25.72f), 2);
camera.transform.DOLocalRotate(new Vector3(0f, 0f, 0), 2);
}
yield return new WaitForSeconds(2);
ModelManager.instance.ModelChange(i + 1);
model_obj_btn.SetActive(true);
anims[i].Rewind();
anims[i].Play();
lastanim = anims[i];
}
//模型闪烁发亮
IEnumerator LoadHigh(int i)
{
modelControl.Instance.SetHighlighter(ModelManager.instance.models[i]);
yield return new WaitForSeconds(2);
}
IEnumerator Load()
{
ModelManager.instance.ModelChange(0);
Layer2.instance.camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
Layer2.instance.camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
yield return new WaitForSeconds(2);
}
IEnumerator LoadModel(int i)
{
yield return new WaitForSeconds(2);
ModelManager.instance.ModelChange(i);
}
/// <summary>
/// 下面副键按钮点击后改变颜色
/// </summary>
/// <param name="_btn"></param>
/// <param name="_tex2D"></param>
public void ChangeButtonUI(Button _btn, Texture2D _tex2D)
{
_btn.GetComponent<Image>().sprite = Sprite.Create(_tex2D, new Rect(0, 0, _tex2D.width, _tex2D.height), new Vector2(0.5f, 0.5f));
}
/// <summary>
/// 返回一级界面
/// </summary>
private void Back_OnClick()
{
model_obj.SetActive(false);
UIManager.instance.UIChange(0);
camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
img_obj.gameObject.SetActive(true);
ModelManager.instance.ModelChange(0);
model_obj_btn.SetActive(false);
modelshow_btn.gameObject.SetActive(false);
system_obj.SetActive(true);
action_obj.SetActive(false);
scroll.content.localPosition = Vector2.zero;
}
/// <summary>
/// 展开列表
/// </summary>
private void List_OnClick()
{
index++;
if (index % 2 == 1)
{
//展开
close_list_btn.gameObject.SetActive(true);
list_btn.gameObject.SetActive(false);
btns_obj.SetActive(true);
numbel_obj.SetActive(true);
model_obj.SetActive(true);
img_obj.gameObject.SetActive(false);
camera.transform.position = new Vector3(0f, 2.8f, 24.5f);
camera.transform.eulerAngles = new Vector3(0f, 0f, 0f);
}
else
{
//收起
close_list_btn.gameObject.SetActive(false);
list_btn.gameObject.SetActive(true);
btns_obj.SetActive(false);
numbel_obj.SetActive(false);
table_obj.SetActive(true);
text_obj.gameObject.SetActive(false);
model_obj_btn.SetActive(false);
modelshow_btn.gameObject.SetActive(false);
}
}
private void Model_Anim_OnClick()
{
index_model++;
if (index_model % 2 == 1)
{
//暂停
model_stop_btn.gameObject.SetActive(false);
model_play_btn.gameObject.SetActive(true);
//整个动画被暂停
//Time.timeScale = 0;
//if (lastanim != null)
//{
// lastanim.Stop();
//}
if (lastanim != null)
{
lastanim["Take 001"].speed = 0;
}
}
else
{
//播放
model_stop_btn.gameObject.SetActive(true);
model_play_btn.gameObject.SetActive(false);
//整个动画继续播放
//Time.timeScale = 1;
//if (lastanim != null)
//{
// lastanim.Play();
//}
if (lastanim != null)
{
lastanim["Take 001"].speed = 1;
}
}
}
/// <summary>
/// 每点击一次下两排按钮
/// </summary>
private void Closebtn()
{
model_stop_btn.gameObject.SetActive(false);
model_play_btn.gameObject.SetActive(true);
}
/// <summary>
/// 模型显示
/// </summary>
public void ModelShow_OnClick()
{
Inspection.Instance.RecoverHideObjs();
//延迟两秒模型显示按钮隐藏
StartCoroutine(WaitTime());
}
IEnumerator WaitTime()
{
yield return new WaitForSeconds(2);
modelshow_btn.gameObject.SetActive(false);
}
// Update is called once per frame
void Update()
{
}
}