using DG.Tweening;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows;
///
/// 模式选择
///
[AddComponentMenu("PatternChoose/模式选择")]
public class PatternChoose : MonoBehaviour
{
static PatternChoose _inst;
public static PatternChoose Inst => _inst;
public Button TS_button;
public Button RL_button;
///
/// 热力效果图
///
public GameObject heatMap;
public GameObject search_go;
Vector3 init_pos;
Vector3 init_rot;
[SerializeField] public Color red_alarm;
[SerializeField] public Color yellow_alarm;
[SerializeField] public Color blue_alarm;
public Button back_page;
public Toggle roomCut;
public Toggle quanJing;
public Toggle niaoKan;
[Header("上次点击的菜单类型")]
public Menu current_menu;
///
/// 设备新增窗口
///
public GameObject sb_xz_page;
///
/// 设备编辑窗口
///
public GameObject sb_bj_page;
///
/// 设备查看窗口
///
public GameObject sb_ck_page;
///
/// 端口新增窗口
///
public GameObject dk_xz_page;
///
/// 端口编辑窗口
///
public GameObject dk_bj_page;
public CreateLine huaXian;
///
/// 线缆
///
public ByCode xianlan;
public GameObject xianlan_popup;
public UIToCabinet uiToCabinet;
public Image xunJianImg;
[Header("时间筛选")]
public GameObject calendar;
//public ZCalendar zCalendar;
[Header("图片轮播UI")]
public GameObject Carousel_Object;
private void Awake()
{
if (_inst != null && _inst != this)
{
Destroy(this.gameObject);
}
else
{
_inst = this;
//DontDestroyOnLoad(this.gameObject);
}
init_pos = Camera.main.transform.localPosition;
init_rot = Camera.main.transform.localEulerAngles;
}
void Start()
{
//Debug.Log("版本号 1.1.1");
roomCut.onValueChanged.AddListener((x) =>
{
if (CabinetUIManager.Instance.current_menu == Menu.M_数字机房_智能巡检)
return;
ExtendedFlycam.Inst.reminder((isgo, list, prompt) =>
{
if (isgo)
{
GameManager.Inst.RemoveEmptyElements();
//FindDeletedDevices(list);
roomCut_fuc();
}
});
});
quanJing.onValueChanged.AddListener((x) =>
{
if (!x)
return;
ExtendedFlycam.Inst.reminder((isgo, list, prompt) =>
{
if (isgo)
{
GameManager.Inst.RemoveEmptyElements();
//FindDeletedDevices(list);
quanJing_fuc();
}
});
});
niaoKan.onValueChanged.AddListener((x) =>
{
ExtendedFlycam.Inst.reminder((isgo, list, prompt) =>
{
if (isgo)
{
GameManager.Inst.RemoveEmptyElements();
//FindDeletedDevices(list);
niaoKan_fuc();
}
});
});
back_page.onClick.AddListener(() =>
{
ExtendedFlycam.Inst.reminder((isgo, list, prompt) =>
{
if (isgo)
{
GameManager.Inst.RemoveEmptyElements();
//FindDeletedDevices(list);
if (Menu.M_数字机房_线缆连接_配置 == CabinetUIManager.Instance.current_menu)
{
ExtendedFlycam.Inst.QieHuan(Menu.M_数字机房_线缆连接_配置);
LineGroupManager.Instance.ShowPanel();
SecondConfirmPanel.Instance.panel_object.SetActive(false);
return;
}
quanJing_fuc();
if (Menu.M_数字机房_线缆连接_展示 == CabinetUIManager.Instance.current_menu)
{
SearchName searchName = search_go.GetComponent();
searchName.showXianLan(searchName._co);
}
else if (Menu.M_数字机房_场景管理 == CabinetUIManager.Instance.current_menu)
{
SearchName searchName = GameManager.Inst.search_box.GetComponent();
searchName.LoadCabinet(SearchName.SearchType.机柜);
GameManager.Inst.search_box.SetActive(true);
searchName.inputField.text = string.Empty;
}
}
});
});
//Debug.Log("版本号 1.1.1");
}
///
/// 寻找删除的设备在列表中的位置
///
///
public void FindDeletedDevices(List list)
{
if (list != null && list.Count > 0)
{
for (int i = 0; i < list.Count; i++)
{
var v = GameManager.Inst.Racks_go.FirstOrDefault(x => x == list[i]);
if (v != null)
GameManager.Inst.Racks_go.Remove(v);
}
}
}
///
/// 点击切换房间
///
public void roomCut_fuc()
{
ExtendedFlycam.Inst.QieHuan(CabinetUIManager.Instance.current_menu, 2);
for (int i = 0; i < xianlan.transform.childCount; i++)
{
xianlan.transform.GetChild(i).gameObject.SetActive(false);
}
}
///
/// 点击全景
///
public void quanJing_fuc()
{
//if (!quanJing.isOn)
// return;
GameManager.Inst.RemoveEmptyElements();
sb_ck_page.SetActive(false);
GameManager.Inst.magnifyState = false;
TransparentGlowManage.Inst.is_magnify = false;
for (int i = 0; i < CabinetUIManager.Instance.cabine_hights_now.Count; i++)
{
CabinetUIManager.Instance.cabine_hights_now[i].SetActive(true);
}
CabinetUIManager.Instance.cabine_hights_now.Clear();
if (Menu.M_全景监控_柜门状态 != CabinetUIManager.Instance.current_menu)
{
GameManager.Inst.power_close();
//GameManager.Inst.Cabinets_go[0].GetComponent().openCap(false);
}
//ExtendedFlycam.Inst.CameraRtDisable();
GameManager.Inst.editorMenu.gameObject.SetActive(false);
ExtendedFlycam.Inst.QieHuan(CabinetUIManager.Instance.current_menu);
//ExtendedFlycam.Inst.CameraRtDisable();
for (int i = 0; i < xianlan.transform.childCount; i++)
{
xianlan.transform.GetChild(i).gameObject.SetActive(false);
}
if (Menu.M_数字机房_接地网 != CabinetUIManager.Instance.current_menu)
{
for (int i = 0; i < GameManager.Inst.Cabinets_go.Count; i++)
{
//string s2 = GameManager.Inst.Cabinets_go[i].GetComponent().deviceList.devicePosition.Split('-')[0];
//if (s1 != s2)
GameManager.Inst.Cabinets_go[i].SetActive(true);
//else if (s1 == s2 && GameManager.Inst.Cabinets_go[i] != gameObject)
GameManager.Inst.Cabinets_go[i].GetComponent().F2();
}
for (int i = 0; i < GameManager.Inst.roomDoors.Count; i++)
{
GameManager.Inst.roomDoors[i].gameObject.GetComponent().enabled = true;
}
}
else
{
List transforms = new List();
transforms.AddRange(TransparentGlowManage.Inst.points);
transforms.AddRange(TransparentGlowManage.Inst.points_battery);
var s = Array.FindAll(transforms.ToArray(), (item) =>
{
return (item.GetComponent() != null /*&&
item.name != "R08" && item.name != "R15" && item.name != "R65" &&
item.name != "R57" && item.name != "R54" && item.name != "R45" &&
item.name != "R37" && item.name != "R29" && item.name != "R22"*/);
}).Select(item => item.GetComponent()).ToArray();
TransparentGlowManage.Inst.transparencyALL(s);
}
for (int i = 0; i < GameManager.Inst.TmsPorts_go.Count; i++)
{
GameManager.Inst.TmsPorts_go[i].GetComponent().hight.SetActive(false);
}
}
///
/// 点击鸟瞰
///
public void niaoKan_fuc()
{
GameManager.Inst.editorMenu.gameObject.SetActive(false);
ExtendedFlycam.Inst.QieHuan(CabinetUIManager.Instance.current_menu, 3);
}
// Update is called once per frame
void Update()
{
if (GameManager.Inst.magnifyState)
{
back_page.gameObject.SetActive(true);
}
else
{
back_page.gameObject.SetActive(false);
}
}
public void F1(bool isheatMap)
{
heatMap.SetActive(isheatMap);
ExtendedFlycam.Inst.init_mainCamera_rot();
Camera.main.transform.DOMove(/*TransparentGlowManage.Inst.MainCamera_pos*/init_pos, 1f);
Camera.main.transform.DORotateQuaternion(Quaternion.Euler(/*TransparentGlowManage.Inst.MainCamera_rot*/init_rot), 1f).OnComplete(() =>
{
//更新相机初始旋转角度
ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles;
});
TransparentGlowManage.Inst.renewALL();
}
void F2(bool isheatMap)
{
heatMap.SetActive(isheatMap);
ExtendedFlycam.Inst.init_mainCamera_rot();
Camera.main.transform.DOMove(/*TransparentGlowManage.Inst.MainCamera_pos*/init_pos, 1f);
Camera.main.transform.DORotateQuaternion(Quaternion.Euler(/*TransparentGlowManage.Inst.MainCamera_rot*/init_rot), 1f).OnComplete(() =>
{
//更新相机初始旋转角度
ExtendedFlycam.Inst.initialRotationEulerAngles = Camera.main.transform.localEulerAngles;
});
TransparentGlowManage.Inst.renewALL();
}
///
/// 关闭所有弹窗
///
public void clspup(Menu menu = Menu.None)
{
sb_bj_page.SetActive(false);
sb_xz_page.SetActive(false);
if (Menu.M_数字机房_线缆连接_配置 != menu || !GameManager.Inst.magnifyState)
dk_bj_page.SetActive(false);
dk_xz_page.SetActive(false);
sb_ck_page.SetActive(false);
}
///
/// 检测字符
///
///
///
///
public void DetectCharacters(Action _callback, TMP_InputField inputField = null, InputField inputField1 = null)
{
if (inputField != null)
{
if (CheckString(inputField.text))
_callback?.Invoke(true);
else
{
SecondConfirmPanel.DeleteConform((x) =>
{
_callback?.Invoke(false);
}, "请检查:输入长度(50字符内);内容是否含有空格、换行、转义字符、特殊符号");
}
}
else if (inputField1 != null)
{
if (CheckString(inputField1.text))
_callback?.Invoke(true);
else
{
SecondConfirmPanel.DeleteConform((x) =>
{
_callback?.Invoke(false);
}, "请检查:输入长度(50字符内);内容是否含有空格、换行、转义字符、特殊符号");
}
}
else
_callback?.Invoke(false);
}
///
/// 检查字符串
///
///
///
public bool CheckString(string input)
{
if (string.IsNullOrEmpty(input))
{
return false; // 如果输入为空字符串,则返回false
}
if (input.Length > 50)
{
return false; // 如果长度超过50,则返回false
}
foreach (char c in input)
{
if (char.IsWhiteSpace(c) || char.IsControl(c) || char.IsSymbol(c))
{
return false; // 如果包含空格、换行、转义字符、特殊符号,则返回false
}
}
return true; // 如果没有空格、换行、转义字符、特殊符号且长度不超过50,则返回true
}
}