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.

244 lines
6.1 KiB

2 years ago
using DG.Tweening;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ZhuanWanData : MonoBehaviour
{
public Transform ImgCamera, MainCamera, CutCamera;
public Transform cameraPos1;
public Transform cameraPos2;
public Button ChangePosBtn;
private int currentPos = 1;
public Text speedText,banjing,liuliang,wendu;
public Toggle toggle1, toggle2, toggle3;
public NewBehaviourScript DrawTool;
private int liulangValue = 0;
public bool isStartRecord = false;
public Button StartRecordBtn;
public Text RecordText;
public GetImage CutManager;
public GameObject AnalyWnd;
public GameObject checker1, checker2;
public Text nameTxt;
[Header("超速阈值设置相关")]
public Slider overSpeedSlider;
public Text overSpeedSetTxt;
public bool isCanRerocd = false;
private Dictionary<string, GameObject> checkerDict = new Dictionary<string, GameObject>();
private bool isOpenLiuLiangCheck;
private bool isOpenWenduCheck;
private bool isOpenBanJingCheck;
public void Init()
{
ChangePosBtn.onClick.AddListener(ChangeCameraPos);
StartRecordBtn.onClick.AddListener(Record);
toggle1.onValueChanged.AddListener((b1) => {
if (toggle1.isOn)
{
SetTimeScale(1);
}
});
toggle2.onValueChanged.AddListener((b2) => {
if (toggle2.isOn)
{
SetTimeScale(2);
}
});
toggle3.onValueChanged.AddListener((b3) => {
if (toggle3.isOn)
{
SetTimeScale(3);
}
});
overSpeedSlider.onValueChanged.AddListener((overSpeed) => {
overSpeedSetTxt.text = overSpeedSlider.value.ToString();
DriveManager.Instance.OverSpeedMaxValue = overSpeedSlider.value;
});
}
public void RigsterChecker(string name,GameObject checker)
{
if (!checkerDict.ContainsKey(name))
{
checkerDict.Add(name, checker);
}
}
public void OpenChecker(string name)
{
foreach (var item in checkerDict)
{
item.Value.SetActive(false);
}
if (checkerDict.ContainsKey(name))
{
checkerDict[name].SetActive(true);
}
}
public void ResetChecker()
{
foreach (var item in checkerDict)
{
item.Value.SetActive(true);
}
}
public void SetCanRerocd(bool b)
{
isCanRerocd = b;
}
public void Record()
{
if (!isCanRerocd)
{
//提示还不能开始录制
GameManagerForZhuanWan.Instance.ShowTip("请先完成事故事故干预和标识训练,再进行视频监控录制!");
return;
}
isStartRecord = !isStartRecord;
if (isStartRecord)
{
RecordText.text = "点击中止录制";
CutCamera.gameObject.SetActive(true);
CutManager.isStartRecord = true;
}
else
{
CutManager.isStartRecord = false;
RecordText.text = "分析";
//添加打开分析窗口功能
StartRecordBtn.onClick.RemoveAllListeners();
StartRecordBtn.onClick.AddListener(() => {
CutCamera.gameObject.SetActive(false);
AnalyWnd.SetActive(true);
toggle1.isOn = true;
CutManager.PlayImgsAction();
});
}
}
public void SetSpeedTxt(float speed)
{
//float value = Random.Range(85, 130);
if (!GameManagerForZhuanWan.Instance.isNormalRoadState)
{
if (speed > DriveManager.Instance.OverSpeedMaxValue)
{
speedText.color = Color.red;
}
else
{
speedText.color = Color.green;
}
}
speedText.text = speed.ToString("0.0")+"km/h";
}
public void SetBanJingTxt()
{
if (!isOpenBanJingCheck) return;
float value = Random.Range(30, 45);
banjing.text = value.ToString() ;
}
public void OpenBanJingCheck()
{
isOpenBanJingCheck = true;
}
public void SetLiuLiang()
{
if (!isOpenLiuLiangCheck) return;
liulangValue++;
liuliang.text = liulangValue.ToString();
}
public void OpenLiuLiangCheck()
{
isOpenLiuLiangCheck = true;
}
public void SetWendu()
{
if (!isOpenWenduCheck) return;
float value = Random.Range(40, 60);
wendu.text = value.ToString() + "℃";
}
public void OpenWebduCheck()
{
isOpenWenduCheck = true;
}
public void SetTimeScale(float value)
{
Time.timeScale = value;
}
public void ChangeCameraPos()
{
switch (currentPos)
{
case 1:
nameTxt.text = "转弯处2号检测点";
checker1.SetActive(false);
checker2.SetActive(true);
CutCamera.DOMove(cameraPos2.position, 0.5f);
ImgCamera.DOMove(cameraPos2.position, 0.5f);
MainCamera.DOMove(cameraPos2.position, 0.5f);
CutCamera.DORotate(cameraPos2.eulerAngles, 0.5f);
ImgCamera.DORotate(cameraPos2.eulerAngles, 0.5f);
MainCamera.DORotate(cameraPos2.eulerAngles, 0.5f);
currentPos = 2;
break;
case 2:
nameTxt.text = "转弯处1号检测点";
checker2.SetActive(false);
checker1.SetActive(true);
CutCamera.DOMove(cameraPos1.position, 0.5f);
ImgCamera.DOMove(cameraPos1.position, 0.5f);
MainCamera.DOMove(cameraPos1.position, 0.5f);
CutCamera.DORotate(cameraPos1.eulerAngles, 0.5f);
ImgCamera.DORotate(cameraPos1.eulerAngles, 0.5f);
MainCamera.DORotate(cameraPos1.eulerAngles, 0.5f);
currentPos = 1;
break;
}
}
}