PKMatchingView.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using UnityEngine.SceneManagement;
  7. public class PKMatchingView : MonoBehaviour
  8. {
  9. [SerializeField] Sprite[] matchHeadBGList;
  10. float waitingTime = 0;
  11. SocketPlayer socketPlayer;
  12. void Awake()
  13. {
  14. }
  15. void Start()
  16. {
  17. (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(0);
  18. RenderPlayerInfo(1, avatar, nickname, true);
  19. RenderPlayerInfo(2, null, "", false);
  20. socketPlayer = new GameObject("SocketPlayer").AddComponent<SocketPlayer>();
  21. socketPlayer.onLoad_ = () => {
  22. socketPlayer.UploadPlayerInfo();
  23. socketPlayer.RandomMatchRoom();
  24. };
  25. socketPlayer.onMatchSuccess = () => {
  26. int otherIndex = (GlobalData.playerIndexInRoom + 1) % 2;
  27. MatchPlayerInfo info = GlobalData.matchPlayerInfos[otherIndex];
  28. (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(info.avatarID);
  29. nickname = LoginMgr.myUserInfo.nickname;
  30. RenderPlayerInfo(2, avatar, nickname, true);
  31. RenderTip("匹配成功,即将开始游戏!");
  32. HideBtnBack();
  33. PauseWaitingTime();
  34. socketPlayer.AgreeStartGame();
  35. };
  36. socketPlayer.onAgreeStartGame = () => {
  37. DontDestroyOnLoad(socketPlayer);
  38. if (GlobalData.matchRoomType == 0) {
  39. GameMgr.gameType = 9;
  40. SceneManager.LoadScene("Game", LoadSceneMode.Single);
  41. }
  42. };
  43. }
  44. void Update() {
  45. if (waitingTime >= 0) {
  46. waitingTime += Time.deltaTime;
  47. this.transform.Find("BoxRight/TimeBG").GetComponentInChildren<Text>().text = TimeUtil.GetTimeStr(waitingTime, false);
  48. }
  49. }
  50. void PauseWaitingTime() {
  51. waitingTime = -1;
  52. }
  53. void RenderPlayerInfo(int playerID, Sprite avatar, string nickname, bool active) {
  54. this.transform.Find($"BoxRight/Player{playerID}/NameBox")
  55. .GetComponentInChildren<Text>().text = active ? nickname : "等待加入";
  56. Transform avatarT = this.transform.Find($"BoxRight/Player{playerID}/MatchHeadBG/Avatar");
  57. avatarT.gameObject.SetActive(active);
  58. avatarT.Find("Sprite").GetComponent<Image>().sprite = avatar;
  59. }
  60. void ChangeMatchHeadBG(int typeIndex) {
  61. Image img = this.transform.Find("BoxRight/Player2/MatchHeadBG").GetComponent<Image>();
  62. img.sprite = matchHeadBGList[typeIndex];
  63. img.GetComponent<Button>().enabled = typeIndex == 1;
  64. }
  65. void RenderTip(string content) {
  66. this.transform.Find("BoxRight/Tip").GetComponentInChildren<Text>().text = content;
  67. }
  68. void HideBtnBack() {
  69. this.transform.Find("Back").gameObject.SetActive(false);
  70. }
  71. public void Back() {
  72. AudioMgr.ins.PlayBtn();
  73. Destroy(this.gameObject);
  74. }
  75. }