You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.9 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using Multiplayer;
  6. public class GameMode : MonoBehaviour {
  7. //references to all players
  8. List<GameObject> Players = new List<GameObject>();
  9. public Recipe recipe;
  10. GameObject LocalPlayer;
  11. public CharacterMovement charMove;
  12. public Timer timer;
  13. public GameObject winCanvas;
  14. public GameObject loseCanvas;
  15. private void Start()
  16. {
  17. LocalPlayer = Multiplayer.PlayersManager.Instance.LocalPlayer;
  18. Players.Add(LocalPlayer);
  19. foreach (GameObject curPlayer in Multiplayer.PlayersManager.Instance.RemotePlayers.Values)
  20. {
  21. Players.Add(curPlayer);
  22. }
  23. }
  24. private void OnEnable()
  25. {
  26. ClientManager.Instance.Client.RegisterHandler(PlayerMsgID.GameWin,GameWin);
  27. ClientManager.Instance.Client.RegisterHandler(PlayerMsgID.GameOver, GameLose);
  28. }
  29. private void OnDisable()
  30. {
  31. ClientManager.Instance.Client.UnregisterHandler(PlayerMsgID.GameWin);
  32. ClientManager.Instance.Client.UnregisterHandler(PlayerMsgID.GameOver);
  33. }
  34. void Update()
  35. {
  36. //CheckValues();
  37. if (charMove.CheckNearby())
  38. {
  39. if (recipe.CheckVictory())
  40. {
  41. PreGameWin();
  42. }
  43. }
  44. }
  45. public void EndGame()
  46. {
  47. Multiplayer.ClientManager.Instance.SendMessage(Multiplayer.PlayerMsgID.Lobby);
  48. }
  49. public void PreGameWin()
  50. {
  51. ClientManager.Instance.SendMessage(PlayerMsgID.GameWin);
  52. }
  53. public void PreGameLose()
  54. {
  55. ClientManager.Instance.SendMessage(PlayerMsgID.GameOver);
  56. }
  57. public void GameWin(NetworkMessage msg)
  58. {
  59. winCanvas.SetActive(true);
  60. timer.enabled = false;
  61. }
  62. public void GameLose(NetworkMessage msg)
  63. {
  64. loseCanvas.SetActive(true);
  65. timer.enabled = false;
  66. }
  67. /*
  68. //Check the values for player to see if it changes the minimum or maximum values of all players
  69. void CheckValues()
  70. {
  71. float maxDistance = 0;
  72. foreach(GameObject gamePlayer in Players)
  73. {
  74. float distance = (transform.position - gamePlayer.transform.position).magnitude;
  75. Player playerScript = gamePlayer.GetComponent<Player>();
  76. foreach (GameObject dummy in playerScript.dummies)
  77. {
  78. float newDis = (transform.position - gamePlayer.transform.position).magnitude;
  79. if (newDis < distance)
  80. {
  81. distance = newDis;
  82. }
  83. }
  84. if (distance > maxDistance)
  85. {
  86. maxDistance = distance;
  87. }
  88. }
  89. if (maxDistance < DistanceToWin)
  90. {
  91. if (recipe.CheckVictory())
  92. {
  93. //Win Game here
  94. }
  95. }
  96. }
  97. */
  98. }