GameContext.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Photon.Pun;
  5. using System.Linq;
  6. //Class to manage the overall game situation
  7. [System.Serializable]
  8. public class GameContext
  9. {
  10. #region constructor
  11. public GameContext(Player _You, Player _Opponent)
  12. {
  13. You = _You;
  14. Opponent = _Opponent;
  15. if (PhotonNetwork.IsConnected)
  16. {
  17. SetPlayerID();
  18. }
  19. Memory = 0;
  20. }
  21. #endregion
  22. #region メモリー
  23. public int Memory { get; set; } = 0;
  24. #endregion
  25. #region List of cards in scene
  26. public List<CardSource> ActiveCardList
  27. {
  28. get; set;
  29. } = new List<CardSource>();
  30. #endregion
  31. #region Player
  32. public Player You;
  33. public Player Opponent;
  34. public List<Player> Players
  35. {
  36. get
  37. {
  38. List<Player> players = new List<Player>();
  39. players.Add(PlayerFromID(0));
  40. players.Add(PlayerFromID(1));
  41. return players;
  42. }
  43. }
  44. public List<Player> Players_ForTurnPlayer
  45. {
  46. get
  47. {
  48. List<Player> players = new List<Player>();
  49. players.Add(TurnPlayer);
  50. players.Add(NonTurnPlayer);
  51. return players;
  52. }
  53. }
  54. public List<Player> Players_ForNonTurnPlayer
  55. {
  56. get
  57. {
  58. List<Player> players = new List<Player>();
  59. players.Add(NonTurnPlayer);
  60. players.Add(TurnPlayer);
  61. return players;
  62. }
  63. }
  64. public Player TurnPlayer;
  65. public Player NonTurnPlayer
  66. {
  67. get
  68. {
  69. Player _player = null;
  70. foreach (Player player in Players)
  71. {
  72. if (player != TurnPlayer)
  73. {
  74. _player = player;
  75. break;
  76. }
  77. }
  78. return _player;
  79. }
  80. }
  81. public Player FirstPlayer;
  82. #endregion
  83. #region Permanents
  84. public List<Permanent> PermanentsForTurnPlayer
  85. {
  86. get
  87. {
  88. return Players_ForTurnPlayer.Map(player => player.GetFieldPermanents()).Flat();
  89. }
  90. }
  91. #endregion
  92. #region Phase of the turn
  93. public enum phase
  94. {
  95. Active,
  96. Draw,
  97. Breeding,
  98. Main,
  99. End,
  100. None,
  101. }
  102. public phase TurnPhase;
  103. #endregion
  104. #region Player ID Assignment
  105. public void SetPlayerID()
  106. {
  107. if (PhotonNetwork.IsMasterClient)
  108. {
  109. You.PlayerID = 0;
  110. Opponent.PlayerID = 1;
  111. }
  112. else
  113. {
  114. You.PlayerID = 1;
  115. Opponent.PlayerID = 0;
  116. }
  117. }
  118. #endregion
  119. #region Returns the player corresponding to the player ID
  120. public Player PlayerFromID(int playerID)
  121. {
  122. if (You.PlayerID == playerID)
  123. {
  124. return You;
  125. }
  126. else if (Opponent.PlayerID == playerID)
  127. {
  128. return Opponent;
  129. }
  130. return null;
  131. }
  132. #endregion
  133. public bool DoSwitchTurnPlayer { get; set; } = true;
  134. #region turn-player switching
  135. public void SwitchTurnPlayer()
  136. {
  137. if (DoSwitchTurnPlayer)
  138. {
  139. foreach (Player player in Players)
  140. {
  141. if (player != TurnPlayer)
  142. {
  143. TurnPlayer = player;
  144. break;
  145. }
  146. }
  147. }
  148. DoSwitchTurnPlayer = true;
  149. }
  150. #endregion
  151. public bool IsSecurityLooking { get; set; } = false;
  152. }