OnlineGameScript.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. using UnityEngine.UI;
  6. public class OnlineGameScript : MonoBehaviour {
  7. // Status color Pending, not your turn, your turn, declined
  8. List<Color32> statusColors = new List<Color32>() { new Color32(234, 164, 17, 100), new Color32(255, 255, 24, 175), new Color32(0, 255, 0, 100), new Color32(219, 12, 65, 100), new Color32(12,12,219,150) };
  9. public const string GAME_STATUS_ACTIVE = "ACTIVE";
  10. public const string GAME_STATUS_PENDING = "PENDING";
  11. public const string GAME_STATUS_YOUR_TURN = "YOUR_TURN";
  12. public const string GAME_STATUS_INVITED = "INVITED";
  13. public const string GAME_STATUS_OTHERS_TURN = "OTHERS_TURN";
  14. public Text gameStatusText;
  15. public Text gameTitleText;
  16. private int id;
  17. private int winNumber;
  18. private int answerTimer;
  19. private int roundTimeLimit;
  20. private string currentPlayer;
  21. private int round;
  22. private string startDate;
  23. private string lastPlayedDate;
  24. private string finishedDate;
  25. private List<String> players;
  26. private List<KeyValuePair<string, string>> playerInfos;
  27. public int GetId() {
  28. return id;
  29. }
  30. public void SetId(int value) {
  31. id = value;
  32. }
  33. public int WinNumber { get => winNumber; set => winNumber = value; }
  34. public int AnswerTimer { get => answerTimer; set => answerTimer = value; }
  35. public int RoundTimeLimit { get => roundTimeLimit; set => roundTimeLimit = value; }
  36. public string CurrentPlayer { get => currentPlayer; set => currentPlayer = value; }
  37. public int Round { get => round; set => round = value; }
  38. public string StartDate { get => startDate; set => startDate = value; }
  39. public string LastPlayedDate { get => lastPlayedDate; set => lastPlayedDate = value; }
  40. public string FinishedDate { get => finishedDate; set => finishedDate = value; }
  41. public string GameStatus {
  42. get { return gameStatus; }
  43. set {
  44. gameStatus = value;
  45. SetColor(gameStatus);
  46. SetGameStatusText();
  47. }
  48. }
  49. public List<KeyValuePair<string, string>> PlayerInfos { get => playerInfos; set => playerInfos = value; }
  50. public List<string> Players { get => players; set => players = value; }
  51. private string PENDING_TITLE = "ONLINE_GAME_STATUS_TITLE_VALUE_PENDING";
  52. private string ACTIVE_TITLE = "ONLINE_GAME_STATUS_TITLE_ACTIVE";
  53. private string DECLINED_TITLE = "ONLINE_GAME_STATUS_TITLE_DECLINED";
  54. private string INVITED_TITLE = "ONLINE_GAME_STATUS_TITLE_INVITED";
  55. private string FINISHED_TITLE = "ONLINE_GAME_STATUS_TITLE_INVITED";
  56. private string PENDING = "ONLINE_GAME_STATUS_PENDING";
  57. private string DECLINED = "ONLINE_GAME_STATUS_DECLINED";
  58. private string ACTIVE = "ONLINE_GAME_STATUS_ACTIVE";
  59. private string INVITED = "ONLINE_GAME_STATUS_INVITED";
  60. private string OTHERS_TURN = "ONLINE_GAME_STATUS_OTHERS_TURN";
  61. private string YOUR_TURN = "ONLINE_GAME_STATUS_YOUR_TURN";
  62. // BEHÖVS EN FINISHED OCKSÅ.
  63. // behövs nog en partialy declined status också, om en av fyra tackar nej kanske man viss spela ändå.
  64. // behövs också en med dina inbjudningar.
  65. private Button gameInfoButton;
  66. private void Start() {
  67. gameInfoButton = this.GetComponent<Button>();
  68. gameInfoButton.onClick.AddListener(ShowInfoPanel);
  69. }
  70. private void ShowInfoPanel() {
  71. GameObject gameInfoPanel = GameObject.Find("GameInfoPanel");
  72. GameInfoScript gameInfoScript = gameInfoPanel.GetComponent<GameInfoScript>();
  73. gameInfoScript.SetOnlineData(this);
  74. gameInfoScript.Show();
  75. }
  76. public void addPlayer(string playerName) {
  77. if (Players == null) {
  78. Players = new List<String>();
  79. }
  80. Players.Add(playerName);
  81. }
  82. public void addPlayerInfo(string playerName, string playerStatus) {
  83. if (PlayerInfos == null) {
  84. PlayerInfos = new List<KeyValuePair<string, string>>();
  85. }
  86. PlayerInfos.Add(new KeyValuePair<string, string>(playerName, playerStatus));
  87. }
  88. public string gameStatus;
  89. private void SetColor(string status) {
  90. Image image = this.GetComponent<Image>();
  91. if (OnlineGameScript.GAME_STATUS_PENDING.Equals(status)) {
  92. image.color = statusColors[0];
  93. } else if (OnlineGameScript.GAME_STATUS_YOUR_TURN.Equals(status)) {
  94. image.color = statusColors[2];
  95. } else if (OnlineGameScript.GAME_STATUS_OTHERS_TURN.Equals(status)) {
  96. image.color = statusColors[1];
  97. } else if ("DECLINED".Equals(status)) {
  98. image.color = statusColors[3];
  99. } else if (OnlineGameScript.GAME_STATUS_INVITED.Equals(status)) {
  100. image.color = statusColors[4];
  101. } else if (GAME_STATUS_ACTIVE.Equals(status)) {
  102. if (CurrentPlayer != null && CurrentPlayer.Equals(Database.Instance.GetSignedInUser().Value)) {
  103. image.color = statusColors[2];
  104. } else {
  105. image.color = statusColors[1];
  106. }
  107. } else {
  108. image.color = new Color32(100, 100, 100, 100);
  109. }
  110. }
  111. public void SetTitleText(string text) {
  112. gameTitleText.text = text;
  113. }
  114. public void SetGameStatusText() {
  115. if (OnlineGameScript.GAME_STATUS_PENDING.Equals(GameStatus)) {
  116. gameStatusText.gameObject.GetComponent<TextLocalization>().key = PENDING;
  117. gameStatusText.text = LocalizationManager.Instance.GetText(PENDING);
  118. gameTitleText.gameObject.GetComponent<TextLocalization>().key = PENDING_TITLE;
  119. SetTitleText(LocalizationManager.Instance.GetText(PENDING_TITLE));
  120. } else if (OnlineGameScript.GAME_STATUS_YOUR_TURN.Equals(GameStatus)) {
  121. gameStatusText.gameObject.GetComponent<TextLocalization>().key = YOUR_TURN;
  122. gameStatusText.text = LocalizationManager.Instance.GetText(YOUR_TURN);
  123. gameTitleText.gameObject.GetComponent<TextLocalization>().key = "FCM_NEXT_PLAYER_TITLE";
  124. SetTitleText(LocalizationManager.Instance.GetText("FCM_NEXT_PLAYER_TITLE"));
  125. } else if (OnlineGameScript.GAME_STATUS_OTHERS_TURN.Equals(GameStatus)) {
  126. TextLocalization textLocalization = gameStatusText.gameObject.GetComponent<TextLocalization>();
  127. textLocalization.key = OTHERS_TURN;
  128. textLocalization.SetReplaceText(CurrentPlayer);
  129. string message = LocalizationManager.Instance.GetText(OTHERS_TURN);
  130. // message = String.Format(message, CurrentPlayer);
  131. gameStatusText.text = message;
  132. gameTitleText.gameObject.GetComponent<TextLocalization>().key = "NOT_YOUR_TURN";
  133. SetTitleText(LocalizationManager.Instance.GetText("NOT_YOUR_TURN"));
  134. } else if ("DECLINED".Equals(GameStatus)) {
  135. gameStatusText.gameObject.GetComponent<TextLocalization>().key = DECLINED;
  136. gameStatusText.text = LocalizationManager.Instance.GetText(DECLINED);
  137. gameTitleText.gameObject.GetComponent<TextLocalization>().key = DECLINED_TITLE;
  138. SetTitleText(LocalizationManager.Instance.GetText(DECLINED_TITLE));
  139. } else if (OnlineGameScript.GAME_STATUS_INVITED.Equals(GameStatus)) {
  140. gameStatusText.gameObject.GetComponent<TextLocalization>().key = INVITED;
  141. gameStatusText.text = LocalizationManager.Instance.GetText(INVITED);
  142. gameTitleText.gameObject.GetComponent<TextLocalization>().key = INVITED_TITLE;
  143. SetTitleText(LocalizationManager.Instance.GetText(INVITED_TITLE));
  144. } else if (GAME_STATUS_ACTIVE.Equals(GameStatus)) {
  145. TextLocalization textLocalization = gameStatusText.gameObject.GetComponent<TextLocalization>();
  146. textLocalization.key = ACTIVE;
  147. textLocalization.SetReplaceText(CurrentPlayer);
  148. gameTitleText.gameObject.GetComponent<TextLocalization>().key = ACTIVE_TITLE;
  149. gameTitleText.text = LocalizationManager.Instance.GetText(ACTIVE_TITLE);
  150. } else {
  151. gameStatusText.text = "SOMETHING WRONG WITH STATUS TITLE FROM TEXT " + GameStatus;
  152. }
  153. }
  154. public void SetId(string id) {
  155. Int32.TryParse(id, out int intId);
  156. SetId(intId);
  157. }
  158. public void SetWinNumber(string winNumber) {
  159. Int32.TryParse(winNumber, out int intWinNumber);
  160. WinNumber = intWinNumber;
  161. }
  162. public void SetAnswerTimer(string answerTimer) {
  163. Int32.TryParse(answerTimer, out int intAnswerTimer);
  164. AnswerTimer = intAnswerTimer;
  165. }
  166. public void SetRoundTimeLimit(string roundTimeLimit) {
  167. Int32.TryParse(roundTimeLimit, out int intRoundTimelimit);
  168. RoundTimeLimit = intRoundTimelimit;
  169. }
  170. public void SetRound(string round) {
  171. Int32.TryParse(round, out int intRound);
  172. Round = intRound;
  173. }
  174. public void SetGameStatus(string status) {
  175. GameStatus = status;
  176. }
  177. }