170 lines
5.5 KiB
C#
170 lines
5.5 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using TMPro;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
|
||
public class DeviceItem : MonoBehaviour
|
||
{
|
||
/// <summary>
|
||
/// 已实例化的设备
|
||
/// Key:设备名称;Value:设备实例物体
|
||
/// </summary>
|
||
public static Dictionary<string, GameObject> InstantiatedObjects = new Dictionary<string, GameObject>();
|
||
/// <summary>
|
||
/// 所有设备列表
|
||
/// </summary>
|
||
public static List<DeviceItem> DeviceItemsList = new List<DeviceItem>();
|
||
/// <summary>
|
||
/// 当前选中的设备
|
||
/// </summary>
|
||
public static DeviceItem SelectedItem;
|
||
/// <summary>
|
||
/// 设备按钮
|
||
/// </summary>
|
||
public Button OnSelectButton;
|
||
/// <summary>
|
||
/// 设备名称
|
||
/// </summary>
|
||
public TextMeshProUGUI DeviceName;
|
||
|
||
/// <summary>
|
||
/// 设备数据
|
||
/// </summary>
|
||
public DevicesItemData DevicesItemData;
|
||
|
||
/// <summary>
|
||
/// 是否处在爆炸状态
|
||
/// </summary>
|
||
public bool IsExploded;
|
||
|
||
/// <summary>
|
||
/// 默认颜色
|
||
/// </summary>
|
||
public Color NormalColor = new Color(0.066f, 0.316f, 0.598f);
|
||
/// <summary>
|
||
/// 高亮颜色
|
||
/// </summary>
|
||
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<GameObject>("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<CusButton>().SetStatus(false);
|
||
}
|
||
//取消选中
|
||
//else
|
||
//{
|
||
// SelectedItem.OnDisselectDo();
|
||
// SelectedItem = null;
|
||
//}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前选中状态
|
||
/// </summary>
|
||
public void OnSelectDo()
|
||
{
|
||
//选中效果
|
||
OnSelectButton.GetComponent<Image>().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<CameraSettings>().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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 取消当前选中状态
|
||
/// </summary>
|
||
public void OnDisselectDo()
|
||
{
|
||
OnSelectButton.GetComponent<Image>().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();
|
||
}
|
||
}
|