using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace WildAttack { public class MainPanel : MonoBehaviour { #region Members [SerializeField] Button _btnConnect; [SerializeField] Text textMacAddress; [SerializeField] Text textBattery; [SerializeField] Button _btnCalibrateGyr; [SerializeField] Button _btnCalibrateMag; [SerializeField] Button _btnResetAim; [SerializeField] Button _btnCalibrationOffset; [SerializeField] Button _btnStartRotationSensor; [SerializeField] Button _btnStopRotationSensor; [SerializeField] Button _btnStartShootingSensor; [SerializeField] Button _btnStopShootingSensor; [SerializeField] Button _btnChangeShootType; [SerializeField] InputField _inputFieldGameID; [SerializeField] InputField _inputFieldChannelID; [SerializeField] InputField _inputFieldUsername; [SerializeField] InputField _inputFieldPassword; [SerializeField] Button _btnLogin; [SerializeField] Button _btnLogout; [SerializeField] Button _btnGetUserInfo; [SerializeField] Image _imgAvatar; [SerializeField] Text _textNickname; [SerializeField] Text _textGender; [SerializeField] Text btnConnectText; [SerializeField] GameObject _processObj; [SerializeField] Text _textProcessTitle; [SerializeField] Text _textProcess; [SerializeField] Text _textEnemy; [SerializeField] Text _textHighScore; [SerializeField] Text _textHpBarTitle; [SerializeField] Button _btnQuit; //用户信息 [SerializeField] Image _imgUserAvatar; [SerializeField] Text _textUserNickname; [SerializeField] Text _textUserRecordScore; public Action onQuitCallback; #endregion #region Lifecycle // Start is called before the first frame update void Start() { btnConnectText.text = "未连接(点击连接)"; _textHighScore.text = StringModule.GetInstance().GetData("highScore") + ":"; textBattery.color = new Color(1, 1, 1, 0); textMacAddress.color = new Color(1, 1, 1, 0); _textProcessTitle.text = StringModule.GetInstance().GetData("wave") + ":"; Transform wall = GameObject.Find("Wall").transform; var wallScreenPos = Camera.main.WorldToScreenPoint(wall.position); RegistEvent(); _btnResetAim.GetComponentInChildren().text = StringModule.GetInstance().GetData("resetAim"); RenderUserInfo(); } public void RenderUserInfo() { RoleMgr.SetAvatarToImage( _imgUserAvatar, LoginMgr.myUserInfo.avatarID, LoginMgr.myUserInfo.avatarUrl ); _textUserNickname.text = LoginMgr.myUserInfo.nickname + " "; float recordScore = 0; if (LoginMgr.myUserInfo.timeLimitGameScores.ContainsKey("WildAttack")) { recordScore = LoginMgr.myUserInfo.timeLimitGameScores["WildAttack"]; } _textUserRecordScore.text = recordScore.ToString(); } // Update is called once per frame void Update() { UpdateProcess(); ////更新显示陀螺仪校准文本 //UpdateCalibrateGyrText(); ////更新显示地磁计校准文本 //UpdateCalibrateMagText(); } #endregion #region ButtonClickEvent void RegistEvent() { // SDK //SmartBowHelper.GetInstance().OnBluetoothModuleInited += OnBluetoothModuleInited; //SmartBowHelper.GetInstance().OnBluetoothStatusChanged += OnBluetoothStatusChanged; // SDK相关btn //_btnConnect.onClick.AddListener(OnClick_Connect); //_btnCalibrateGyr.onClick.AddListener(OnClick_CalibrateGyr); //_btnCalibrateMag.onClick.AddListener(OnClick_CalibrateMag); if (CommonConfig.StandaloneModeOrPlatformB) { _btnResetAim.gameObject.SetActive(false); } else { if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToInfraredDevice()) { _btnResetAim.gameObject.SetActive(false); //校准 _btnCalibrationOffset.gameObject.SetActive(true); _btnCalibrationOffset.onClick.AddListener(delegate () { AudioMgr.ins.PlayBtn(); OnClick_ResetAim(); }); } else { _btnResetAim.onClick.AddListener(() => { if (_btnResetAim.GetComponent().isLongPress) return; OnClick_ResetAim(); }); _btnResetAim.gameObject.AddComponent().onLongPress += () => { AudioMgr.ins?.PlayBtn(); if (SB_EventSystem.ins) SB_EventSystem.ins.AwakenSimulateMouse(); }; } } //_btnStopRotationSensor.onClick.AddListener(OnClick_StopRotationSensor); //_btnStopShootingSensor.onClick.AddListener(OnClick_StopShootingSensor); //_btnLogin.onClick.AddListener(OnClick_Login); //_btnLogout.onClick.AddListener(OnClick_Logout); //_btnGetUserInfo.onClick.AddListener(OnClick_GetUserInfo); _btnQuit.onClick.AddListener(OnClick_Quit); } /// /// 退出游戏 /// private void OnClick_Quit() { //#if UNITY_EDITOR // UnityEditor.EditorApplication.isPlaying = false; //#else // Application.Quit(); //#endif AudioMgr.ins.PlayBtn(); //UnityEngine.SceneManagement.SceneManager.LoadScene("Home", UnityEngine.SceneManagement.LoadSceneMode.Single); onQuitCallback?.Invoke(); } //public void OnClick_Connect() //{ // if (SmartBowHelper.GetInstance().GetBluetoothStatus() == BluetoothStatusEnum.Connecting) return; // if (SmartBowHelper.GetInstance().GetBluetoothStatus() == BluetoothStatusEnum.None) // { // SmartBowHelper.GetInstance().Connect(); // return; // } // if (SmartBowHelper.GetInstance().GetBluetoothStatus() == BluetoothStatusEnum.Connected) // { // if (SmartBowHelper.GetInstance().IsBluetoothModuleInited()) // { // SmartBowHelper.GetInstance().Disconnect(); // return; // } // else // { // return; // } // } //} //public void OnClick_CalibrateGyr() //{ // if (SmartBowHelper.GetInstance().GetBluetoothStatus() != BluetoothStatusEnum.Connected // || !SmartBowHelper.GetInstance().IsBluetoothModuleInited()) return; // if (SmartBowHelper.GetInstance().IsGyrCalibrating()) // { // SmartBowHelper.GetInstance().StopGyrCalibration(); // } // else // { // SmartBowHelper.GetInstance().StartGyrCalibration(); // } //} ///// ///// 地磁计校准 ///// //float _clickCalibrateMagTime = -100; //public void OnClick_CalibrateMag() //{ // _clickCalibrateMagTime = Time.realtimeSinceStartup; // SmartBowHelper.GetInstance().StartMagCalibration(); //} ////private bool isResetAim = false; public void OnClick_ResetAim() { // todo: 不连接时 归位正中间 // UI改回1280 归位按钮放大 AudioMgr.ins.PlayBtn(); AutoResetView.DoIdentity(); //TipText.Show("OnClick_ResetAim"); //isResetAim = true; } //public void OnClick_StopRotationSensor() //{ // bool success = SmartBowHelper.GetInstance().StopRotationSensor(); // if (!success) TipText.Show("停止九轴传感失败\n原因\n模块未连接或未初始化完成"); // else TipText.Show("停止九轴传感\n指令发送成功"); // // 移除监听 // SmartBowHelper.GetInstance().OnRotationUpdate -= GameMananger.GetInstance().OnRotationUpdate; //} //public void OnClick_StopShootingSensor() //{ // bool success = SmartBowHelper.GetInstance().StopShootingSensor(); // if (!success) TipText.Show("停止射箭传感失败\n原因\n模块未连接或未初始化完成"); // else TipText.Show("停止射箭传感\n指令发送成功"); // // 移除onshooting监听 // SmartBowHelper.GetInstance().OnShooting -= GameMananger.GetInstance().OnShooting; //} /// /// 切换射击模式 /// //private void OnClick_ChangeShootType() //{ // ShootTypeEnum type = GameMananger.GetInstance().GetShootType(); // if (type == ShootTypeEnum.FixedScreen) // { // GameMananger.GetInstance().SetShootType(ShootTypeEnum.FixedCrossHair); // } // else if (type == ShootTypeEnum.FixedCrossHair) // { // GameMananger.GetInstance().SetShootType(ShootTypeEnum.moreScreen); // } // else if (type == ShootTypeEnum.moreScreen) // { // GameMananger.GetInstance().SetShootType(ShootTypeEnum.FixedScreen); // } // TipText.Show(GameMananger.GetInstance().GetShootType().ToString()); //} //public void OnClick_Login() //{ // if (string.IsNullOrWhiteSpace(_inputFieldUsername.text) || string.IsNullOrWhiteSpace(_inputFieldPassword.text)) // { // TipText.Show("请输入账号密码"); // return; // } // SmartBowHelper.GetInstance().Login( // _inputFieldGameID.text, // _inputFieldChannelID.text, // _inputFieldUsername.text, // _inputFieldPassword.text, // (res) => // { // if (res.success) // { // Debug.Log("登录成功"); // UpdateLoginUI(1); // } // TipText.Show(res.message); // }); //} //public void OnClick_Logout() //{ // SmartBowHelper.GetInstance().Logout((success) => // { // if (success) // { // TipText.Show($"登出成功"); // UpdateLoginUI(0); // } // else TipText.Show($"登出失败"); // }); //} ///// ///// 获取用户信息按钮点击事件 ///// //public void OnClick_GetUserInfo() //{ // SmartBowHelper.GetInstance().GetUserInfo((res) => // { // if (res.success) // { // Debug.Log("获取用户信息成功"); // UserInfo userInfo = res.userInfo; // //渲染UI // StartCoroutine(SmartBowNetwork.LoadSprite(userInfo.avatarUrl, (sprite) => // { // _imgAvatar.sprite = sprite; // _imgAvatar.enabled = true; // })); // _textNickname.text = userInfo.nickname; // _textNickname.enabled = true; // _textGender.text = userInfo.gender == 1 ? "男" : "女"; // _textGender.enabled = true; // // todo: 更新用户头像,保存最高分 GameOverPanel也用得到 // GameMananger.GetInstance().SetHighScore(0); // } // TipText.Show(res.message); // }); //} //#endregion //#region Functions ///// ///// 登录相关文字更新 ///// ///// //void UpdateLoginUI(int step) //{ // _inputFieldGameID.gameObject.SetActive(step == 0); // _inputFieldChannelID.gameObject.SetActive(step == 0); // _inputFieldUsername.gameObject.SetActive(step == 0); // _inputFieldPassword.gameObject.SetActive(step == 0); // _btnLogin.gameObject.SetActive(step == 0); // _btnLogout.gameObject.SetActive(step == 1); // _btnGetUserInfo.gameObject.SetActive(step == 1); // _imgAvatar.gameObject.SetActive(step == 1); // _textNickname.gameObject.SetActive(step == 1); // _textGender.gameObject.SetActive(step == 1); // _imgAvatar.enabled = false; // _imgAvatar.sprite = null; // _textNickname.enabled = false; // _textGender.enabled = false; //} ///// ///// 陀螺仪文字更新 ///// //void UpdateCalibrateGyrText() //{ // Text text = _btnCalibrateGyr.GetComponentInChildren(); // int progress = (int)(SmartBowHelper.GetInstance().GetGyrProgress() * 100); // string act = SmartBowHelper.GetInstance().IsGyrCalibrating() ? "停止" : "开始"; // text.text = $"点击{act}陀螺仪校准({progress}%)"; //} ///// ///// 地磁计文字更新 ///// //void UpdateCalibrateMagText() //{ // Text text = _btnCalibrateMag.GetComponentInChildren(); // if (SmartBowHelper.GetInstance().IsMagCompleted()) // { // text.text = $"校准完成(点击重置)"; // } // else // { // string tip = Time.realtimeSinceStartup - _clickCalibrateMagTime < 2 ? "已重置" : "点击重置"; // text.text = $"自动校准中({tip})"; // } //} /// /// 进度文字更新 /// public void UpdateProcess() { if (ProcessManager.GetInstance().CurrLevel <= 0) return; _textProcess.text = $"{(ProcessManager.GetInstance().CurrLevel > ProcessModule.GetInstance().processDataDic.Count ? ProcessModule.GetInstance().processDataDic.Count : ProcessManager.GetInstance().CurrLevel)}/{ProcessModule.GetInstance().processDataDic.Count}"; } public void SetProcessInfoActive(bool active) { _processObj.gameObject.SetActive(active); _textEnemy.gameObject.SetActive(active); } //private void OnBluetoothModuleInited() //{ // textBattery.color = new Color(1, 1, 1, 1); // textMacAddress.color = new Color(1, 1, 1, 1); // // 初始化完成 // // 真 连接成功 文本表现 见OnBluetoothStatusChanged注释 // if (SmartBowHelper.GetInstance().IsBluetoothModuleInited()) btnConnectText.text = "已连接(点击断开)"; // else btnConnectText.text = "已连接(正在初始化)"; // // 开始get电量和macAdd (在update处理 //} ///// ///// 蓝牙状态变化 ///// ///// ///// //void OnBluetoothStatusChanged(BluetoothStatusEnum oldStatus, BluetoothStatusEnum newStatus) //{ // if (newStatus == BluetoothStatusEnum.None) btnConnectText.text = "未连接(点击连接)"; // if (newStatus == BluetoothStatusEnum.Connecting) btnConnectText.text = "连接中"; // if (newStatus == BluetoothStatusEnum.Connected) btnConnectText.text = "已连接(正在初始化)"; //} #endregion } }