using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace HyperspaceGame
{
public class UIManager : MonoBehaviour
{
public static UIManager _ins;
///
/// 记录一个总分
///
public static int mHyperspaceScore { get; set; } = 0;
[SerializeField] Button _btnQuit;
[SerializeField] Button _btnReload;
[SerializeField] Button _btnCrosshair;
[SerializeField] Button _btnCalibrationOffset;
[SerializeField] Material outlight;
//准心部分
private bool open = false;
private bool visiable = false;
private bool onlyShow = true;
private Image image = null;
private void Awake()
{
if (_ins != null && _ins != this)
{
//Destroy(this.gameObject); // 如果已经存在实例,则销毁当前对象
return;
}
_ins = this;
//DontDestroyOnLoad(this.gameObject); // 保证对象在场景切换时不被销毁
//生成时候初始化一下状态
if (ShootCheck.ins) ShootCheck.ins.bluetoothDeviceStatus = SmartBowSDK.BluetoothDeviceStatus.MagazineLoading;
}
private void OnDestroy()
{
if (_ins == this)
{
_ins = null; // 在销毁时释放单例
}
GlobalEventCenter.ins.onSimulateMouseAwakeChanged -= UpdateHideShow;
}
// Start is called before the first frame update
void Start()
{
//关闭原来准心
SimulateMouseController.ins?.RemoveOpenLocker("NotGame");
image = GeneratingTarget.gm.shootingEvent.GetComponent();
//b端单人
if (CommonConfig.StandaloneModeOrPlatformB)
{
_btnCrosshair.gameObject.SetActive(false);
_btnCalibrationOffset.gameObject.SetActive(false);
} else {
//获取设置值和一个存储值
bool onInitOpen = InfraredDemo._ins ? InfraredDemo._ins.bInitCrosshairShow() : true;
Image crossHairImage = _btnCrosshair.GetComponentInChildren();
crossHairImage.material = onInitOpen ? outlight : null;
_btnCrosshair.onClick.AddListener(delegate () {
AudioMgr.ins.PlayBtn();
bool onlyShow = !GetOnlyShow();
SetOnlyShow(onlyShow);
//记录准心值
if (InfraredDemo._ins) InfraredDemo._ins.setCrosshairValue(onlyShow);
if (onlyShow)
{
crossHairImage.material = outlight;
}
else
{
crossHairImage.material = null;
}
});
//校准
_btnCalibrationOffset.onClick.AddListener(delegate () {
AudioMgr.ins.PlayBtn();
AutoResetView.DoIdentity();
});
}
_btnQuit.onClick.AddListener(OnShutDown);
_btnReload.onClick.AddListener(Reload);
SetOpen(UserSettings.ins.openCrossHair);
visiable = open;
OnValueChanged(visiable);
UpdateHideShow(SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked);
GlobalEventCenter.ins.onSimulateMouseAwakeChanged += UpdateHideShow;
//CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load("Prefabs/CrossHairOutBoundChecker1")).GetComponent();
//outBoundChecker.crossHair = transform as RectTransform;
//读取准心值
if (AimHandler.ins && !AimHandler.ins.bRuning9Axis() && InfraredDemo._ins) SetOnlyShow(InfraredDemo._ins.getCrosshairValue() == 1);
}
void UpdateHideShow(bool mouseAwaked)
{
//transform.Find("Image").GetComponent().enabled = !mouseAwaked;
SetOnlyShow(!mouseAwaked);
}
public void ShowQuit()
{
_btnQuit.gameObject.SetActive(true);
}
void OnShutDown()
{
//SceneManager.LoadScene("Home",LoadSceneMode.Single);
GeneratingTarget.gm.onUploadScore();
//结束游戏页面
GeneratingTarget.gm.userGameAnalyse1.showResultView(() =>
{
SceneManager.LoadScene("Home", LoadSceneMode.Single);
});
}
public void Reload()
{
GeneratingTarget.gm.OnSeparation();
GeneratingTarget.gm.OnLoading();
}
public bool GetArrowBtnState()
{
if (open)
return true;
return false;
}
// Update is called once per frame
void Update()
{
if (AutoResetView.ins != null)
{
//进入校准时候,一定显示准心
SetVisiable(true);
}
else
{
if (open)
SetVisiable(onlyShow);
else
SetVisiable(false);
}
}
void SetVisiable(bool value)
{
if (this.visiable == value) return;
this.visiable = value;
OnValueChanged(this.visiable);
}
void OnValueChanged(bool isOn)
{
var color = image.color;
if (isOn)
{
color.a = 1;
image.color = color;
//_togImge.sprite = _togSprites[0];
}
else
{
color.a = 0;
image.color = color;
//_togImge.sprite = _togSprites[1];
}
}
public void SetOpen(bool open)
{
this.open = open;
if (!this.open)
{
SetVisiable(false);
}
}
public bool GetOpen()
{
return this.open;
}
public void SetOnlyShow(bool onlyShow)
{
this.onlyShow = onlyShow;
}
public bool GetOnlyShow()
{
return this.onlyShow;
}
}
}