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 _btnCalibrationOffset_2P;
[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;
[HideInInspector]
public Image UserAvatarPlayer1 => _imgUserAvatar;
[SerializeField] Text _textUserNickname;
[SerializeField] Text _textUserRecordScore;
//处理用户信息2
[SerializeField] GameObject _info_2P;
[SerializeField] Text _textHighScore_2P;
[SerializeField] Image _imgUserAvatar_2P;
[HideInInspector]
public Image UserAvatarPlayer2 => _imgUserAvatar_2P;
[SerializeField] Text _textUserNickname_2P;
[SerializeField] Text _textUserRecordScore_2P;
public Action onQuitCallback;
#endregion
#region Lifecycle
// Start is called before the first frame update
void Start()
{
btnConnectText.text = "未连接(点击连接)";
if (GameMananger.GetInstance().CurrentGameType == GameTypeEnum.LocalTwoPlayer)
{
//双人情况显示当前分数
_textHighScore.text = StringModule.GetInstance().GetData("score") + ":";
_textHighScore_2P.text = StringModule.GetInstance().GetData("score") + ":";
}
else {
//单人时候分数标题显示最高分
_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");
if (GameMananger.GetInstance().CurrentGameType == GameTypeEnum.LocalTwoPlayer)
{
//本地双人设置显示信息
RenderUserInfoByLocalTwoPlayer();
}
else
{
//按照之前单人的设置信息
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();
}
///
/// 应该是实时叠加的,同时设置两个用户
///
public void RenderUserInfoByLocalTwoPlayer() {
_info_2P.SetActive(true);
_textUserNickname.text = "Player-1";
_textUserNickname_2P.text = "Player-2";
RoleMgr.SetAvatarToImage(
_imgUserAvatar,
0, ""
);
RoleMgr.SetAvatarToImage(
_imgUserAvatar_2P,
0, ""
);
float recordScore = 0;
_textUserRecordScore.text = recordScore.ToString();
_textUserRecordScore_2P.text = recordScore.ToString();
}
///
/// 本地双人模式下,实时更新对战分数
///
public void UpdateUserInfo() {
_textUserRecordScore.text = GameMananger.GetInstance().TotalScore.ToString();
_textUserRecordScore_2P.text = GameMananger.GetInstance().TotalScore_2P.ToString();
}
// Update is called once per frame
void Update()
{
UpdateProcess();
//如果本地双人实时更新最高分数
if (GameMananger.GetInstance().CurrentGameType == GameTypeEnum.LocalTwoPlayer)
UpdateUserInfo();
////更新显示陀螺仪校准文本
//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();
});
if (CommonConfig.bDisplayTwoPlayerGames && _btnCalibrationOffset_2P) {
_btnCalibrationOffset_2P.gameObject.SetActive(true);
_btnCalibrationOffset_2P.onClick.AddListener(delegate ()
{
AudioMgr.ins.PlayBtn();
OnClick_ResetAim_2P();
});
}
}
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_ResetAim_2P()
{
AudioMgr.ins.PlayBtn();
//GameMananger.GetInstance().ResetAim(PlayerTypeEnum.Second);
if (GameObject.Find("AutoResetViewNewRight")) return;
GameObject resetView = Instantiate(Resources.Load("AutoResetViewNew"));
resetView.name = "AutoResetViewNewRight";
AutoResetViewNew autoResetViewNewScript = resetView.GetComponent();
autoResetViewNewScript.setTextKey("new-user-guider_tip_视角归位-瞄准-infraredD");
autoResetViewNewScript.setPosRight();
autoResetViewNewScript.action_OnDestroy += () =>
{
if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "WildAttackDouble")
{
GameMananger.GetInstance().ResetAim(PlayerTypeEnum.Second);
}
};
}
//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
}
}