| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.SceneManagement;
- public class PKMatchingView : MonoBehaviour
- {
- [SerializeField] Sprite[] matchHeadBGList;
- float waitingTime = 0;
- SocketPlayer socketPlayer;
- void Awake()
- {
- }
- void Start()
- {
- Sprite avatar = RoleMgr.GetAvatar(LoginMgr.myUserInfo.avatarID);
- string nickname = LoginMgr.myUserInfo.nickname;
- RenderPlayerInfo(1, avatar, nickname, true);
- RenderPlayerInfo(2, null, "", false);
- socketPlayer = new GameObject("SocketPlayer").AddComponent<SocketPlayer>();
- socketPlayer.onLoad_ = () => {
- socketPlayer.UploadPlayerInfo();
- socketPlayer.RandomMatchRoom();
- };
- socketPlayer.onMatchSuccess = () => {
- int otherIndex = (GlobalData.playerIndexInRoom + 1) % 2;
- MatchPlayerInfo info = GlobalData.matchPlayerInfos[otherIndex];
- (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(info.avatarID);
- nickname = info.nickname;
- RenderPlayerInfo(2, avatar, nickname, true);
- RenderTip("匹配成功,即将开始游戏!");
- HideBtnBack();
- PauseWaitingTime();
- socketPlayer.AgreeStartGame();
- };
- socketPlayer.onAgreeStartGame = () => {
- DontDestroyOnLoad(socketPlayer);
- toLoadGame = true;
- };
- socketPlayer.onDestroy_ += () => {
- if (this && this.gameObject) {
- Destroy(this.gameObject);
- Destroy(socketPlayer.gameObject);
- PopupMgr.ins.ShowBGTip("网络发生意外!");
- }
- };
- }
- //通过此方法,不需要经过匹配页面进行匹配,可以直接在游戏场景匹配,方便测试
- public static void MoniMatchForTestInGameScene(Action onAgreeStartGame) {
- SocketPlayer socketPlayer = new GameObject("SocketPlayer").AddComponent<SocketPlayer>();
- socketPlayer.onLoad_ = () => {
- socketPlayer.UploadPlayerInfo();
- socketPlayer.RandomMatchRoom();
- };
- socketPlayer.onMatchSuccess = () => {
- int otherIndex = (GlobalData.playerIndexInRoom + 1) % 2;
- MatchPlayerInfo info = GlobalData.matchPlayerInfos[otherIndex];
- (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(info.avatarID);
- nickname = LoginMgr.myUserInfo.nickname;
- socketPlayer.AgreeStartGame();
- };
- socketPlayer.onAgreeStartGame = () => {
- DontDestroyOnLoad(socketPlayer);
- if (onAgreeStartGame != null) onAgreeStartGame();
- };
- }
- bool toLoadGame = false;
- float loadGameSceneCountdown = 1;
- void Update() {
- if (waitingTime >= 0) {
- waitingTime += Time.deltaTime;
- this.transform.Find("BoxRight/TimeBG").GetComponentInChildren<Text>().text = TimeUtil.GetTimeStr(waitingTime, false);
- }
- if (toLoadGame) {
- loadGameSceneCountdown -= Time.deltaTime;
- if (loadGameSceneCountdown <= 0) {
- toLoadGame = false;
- //loadscene
- if (GlobalData.matchRoomType == 0) {
- GameMgr.gameType = 9;
- SceneManager.LoadScene("Game", LoadSceneMode.Single);
- }
- }
- }
- }
- void PauseWaitingTime() {
- waitingTime = -1;
- }
- void RenderPlayerInfo(int playerID, Sprite avatar, string nickname, bool active) {
- this.transform.Find($"BoxRight/Player{playerID}/NameBox")
- .GetComponentInChildren<Text>().text = active ? nickname : "等待加入";
- Transform avatarT = this.transform.Find($"BoxRight/Player{playerID}/MatchHeadBG/Avatar");
- avatarT.gameObject.SetActive(active);
- avatarT.Find("Sprite").GetComponent<Image>().sprite = avatar;
- }
- void ChangeMatchHeadBG(int typeIndex) {
- Image img = this.transform.Find("BoxRight/Player2/MatchHeadBG").GetComponent<Image>();
- img.sprite = matchHeadBGList[typeIndex];
- img.GetComponent<Button>().enabled = typeIndex == 1;
- }
- void RenderTip(string content) {
- this.transform.Find("BoxRight/Tip").GetComponentInChildren<Text>().text = content;
- }
- void HideBtnBack() {
- this.transform.Find("Back").gameObject.SetActive(false);
- }
- public void Back() {
- AudioMgr.ins.PlayBtn();
- Destroy(this.gameObject);
- Destroy(socketPlayer.gameObject);
- }
- }
|