using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class DeviceItem : MonoBehaviour
{
///
/// 已实例化的设备
/// Key:设备名称;Value:设备实例物体
///
public static Dictionary InstantiatedObjects = new Dictionary();
///
/// 所有设备列表
///
public static List DeviceItemsList = new List();
///
/// 当前选中的设备
///
public static DeviceItem SelectedItem;
///
/// 设备按钮
///
public Button OnSelectButton;
///
/// 设备名称
///
public TextMeshProUGUI DeviceName;
///
/// 设备数据
///
public DevicesItemData DevicesItemData;
///
/// 是否处在爆炸状态
///
public bool IsExploded;
///
/// 默认颜色
///
public Color NormalColor = new Color(0.066f, 0.316f, 0.598f);
///
/// 高亮颜色
///
public Color HighlightColor = new Color(0, 0.766f, 1);
public void Init(DevicesItemData devicesItemData)
{
if (!DeviceItemsList.Contains(this))
DeviceItemsList.Add(this);
OnSelectButton.onClick.AddListener(OnSelect);
if (devicesItemData == null) return;
DevicesItemData = devicesItemData;
DeviceName.text = devicesItemData.dev_name;
DeviceName.color = NormalColor;
var dev = Resources.Load("Prefabs/Devices/" + devicesItemData.dev_name);
if (dev != null)
{
var x = Instantiate(dev, GameObject.Find("GameCenter").transform);
InstantiatedObjects.Add(devicesItemData.dev_name, x);
x.gameObject.SetActive(false);
}
if (TrainingManager.Instance.PictureDic.ContainsKey(DevicesItemData.dev_name))
{
var _path = TrainingManager.Instance.PictureDic[DevicesItemData.dev_name].Find(x => System.IO.Path.GetFileNameWithoutExtension(x) == DevicesItemData.pic_id);
MainCoroutine.Instance.CoroutineStart(InterfaceManager.GetSprite(_path, (_sp) =>
{
DevicesItemData._right_sprite = _sp;
}));
}
}
private void OnSelect()
{
if (SelectedItem != this)
{
if (SelectedItem != null)
SelectedItem.OnDisselectDo();
SelectedItem = this;
SelectedItem.OnSelectDo();
//if (TrainingManager.Instance.IsTutorial)
//{
// AudioManager.Instance.PlayAudio(DevicesItemData.dev_name);
//}
//切换设备时关闭正在播放的,并且状态切回
AudioManager.Instance.StopAudio();
CanvasMain.Instance.PlayAudioButton.GetComponent().SetStatus(false);
}
//取消选中
//else
//{
// SelectedItem.OnDisselectDo();
// SelectedItem = null;
//}
}
///
/// 当前选中状态
///
public void OnSelectDo()
{
//选中效果
OnSelectButton.GetComponent().enabled = true;
DeviceName.color = HighlightColor;
if (InstantiatedObjects.ContainsKey(SelectedItem.DevicesItemData.dev_name))
{
//展示设备模型
InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].SetActive(true);
//更新交互设备
//BaseCam.Instance.Init(InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].transform.Find("ObjectCenter"));
OrbitCamera.Instance.Init(InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].GetComponent().CameraSettingsParam, InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].transform.Find("ObjectCenter"));
}
//更新设备信息介绍
CanvasMain.Instance.Introduction.text = DevicesItemData.dev_int;
//若在结构模式下切换设备,更新标签展示
if (!CanvasMain.Instance.IsPrincipleMode /*&& CanvasMain.Instance.IsTutorialMode*/)
CanvasMain.Instance.ShowDeviceTags();
//改变设备时,对应改变练习模式的当前设备信息
TrainingManager.ChangeDevice(SelectedItem);
}
///
/// 取消当前选中状态
///
public void OnDisselectDo()
{
OnSelectButton.GetComponent().enabled = false;
DeviceName.color = NormalColor;
//若在结构模式下切换设备,更新标签展示
if (!CanvasMain.Instance.IsPrincipleMode)
{
if (InstantiatedObjects.ContainsKey(SelectedItem.DevicesItemData.dev_name))
CanvasMain.Instance.HideDeviceTags(immediately: true, lastDevice: InstantiatedObjects[SelectedItem.DevicesItemData.dev_name]);
else
CanvasMain.Instance.HideDeviceTags(immediately: true);
}
else
{
//前面动画没播放完,不能隐藏此物体
if (InstantiatedObjects.ContainsKey(SelectedItem.DevicesItemData.dev_name))
InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].SetActive(false);
}
}
//private void SetActiveFalse()
//{
// if (InstantiatedObjects.ContainsKey(SelectedItem.DevicesItemData.dev_name))
// InstantiatedObjects[SelectedItem.DevicesItemData.dev_name].SetActive(false);
//}
private void OnDestroy()
{
DeviceItemsList.Clear();
}
}