BattleSession.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. public class BattleSession
  6. {
  7. public MapData.MapID mapId;
  8. public MapData.Mode mode;
  9. public Player myPlayer;
  10. private int m_AiTakerUserId = -1;
  11. private MessageManager messageManager;
  12. private BattleController battleController;
  13. private Dictionary<int, Player> playerDict;
  14. private List<Player> playerList;
  15. public Dictionary<int, PlayerStatsData> battleStatsDict;
  16. public BattleSession (MessageManager messageManager)
  17. {
  18. this.messageManager = messageManager;
  19. playerDict = new Dictionary<int, Player>();
  20. playerList = new List<Player> ();
  21. battleStatsDict = new Dictionary<int, PlayerStatsData>();
  22. }
  23. public void ResetBattle()
  24. {
  25. if (battleController != null)
  26. battleController.isExit = true;
  27. m_AiTakerUserId = -1;
  28. battleController = null;
  29. myPlayer = null;
  30. playerDict.Clear();
  31. playerList.Clear();
  32. }
  33. public MessageManager GetMessageManager()
  34. {
  35. return messageManager;
  36. }
  37. public int aiTakerUserId
  38. {
  39. set{
  40. m_AiTakerUserId = value;
  41. }
  42. get{
  43. if (BattleController.battleType == BattleController.BattleType.Menu)
  44. return Session.myUserId;
  45. return m_AiTakerUserId;
  46. }
  47. }
  48. public int myUserId
  49. {
  50. get
  51. {
  52. return messageManager.myUserId;
  53. }
  54. }
  55. public void SetMyPlayerId(int id)
  56. {
  57. int oldId = myPlayer.userId;
  58. playerDict.Remove (oldId);
  59. myPlayer.userId = id;
  60. playerDict.Add (id, myPlayer);
  61. }
  62. public Player AddPlayer(int id, string nick, TeamUtil.Team team, int playerId)
  63. {
  64. Player player = null;
  65. playerDict.TryGetValue (id, out player);
  66. if (player == null) {
  67. player = new Player ();
  68. player.userId = id;
  69. player.nick = nick;
  70. player.team = team;
  71. player.playerId = playerId;
  72. //If AI take this player id
  73. RemoveAIPlayerByPlayerId(playerId);
  74. playerDict.Add (player.userId, player);
  75. playerList.Add (player);
  76. }
  77. else
  78. {
  79. if (player.lost)
  80. player.lost = false;
  81. }
  82. if (player.userId == myUserId) {
  83. myPlayer = player;
  84. player.isMe = true;
  85. }
  86. return player;
  87. }
  88. private void RemoveAIPlayerByPlayerId(int playerId)
  89. {
  90. for(int i=0; i<playerList.Count; i++)
  91. {
  92. Player player = playerList [i];
  93. if(player.playerId == playerId && player.userId < 0)
  94. {
  95. battleController.DealPlayerDeath (player, player.GetHero ().GetCraft());
  96. }
  97. }
  98. }
  99. public void PlayerLeft(int userId)
  100. {
  101. Player player = null;
  102. playerDict.TryGetValue (userId, out player);
  103. if(player != null)
  104. {
  105. player.lost = true;
  106. }
  107. }
  108. public Player GetPlayer(int userId)
  109. {
  110. if(playerDict.ContainsKey(userId))
  111. {
  112. return playerDict[userId];
  113. }
  114. return null;
  115. }
  116. public Player GetPlayerByTeam(TeamUtil.Team team)
  117. {
  118. for(int i=0; i<playerList.Count; i++)
  119. {
  120. Player player = playerList [i];
  121. if(player.team == team)
  122. {
  123. return player;
  124. }
  125. }
  126. return null;
  127. }
  128. public List<Player> GetPlayerList()
  129. {
  130. return playerList;
  131. }
  132. public void resetBattleStats()
  133. {
  134. battleStatsDict.Clear();
  135. }
  136. public Dictionary<int, PlayerStatsData> GetBattleStats()
  137. {
  138. return battleStatsDict;
  139. }
  140. public bool IsReady()
  141. {
  142. return this.battleController != null;
  143. }
  144. public bool IsOver()
  145. {
  146. return this.battleController != null && this.battleController.isGameOver;
  147. }
  148. public void registeBattleController(BattleController battleController)
  149. {
  150. this.battleController = battleController;
  151. // GetMessageManager().PlayerJoin();
  152. }
  153. public BattleController GetBattleController()
  154. {
  155. return battleController;
  156. }
  157. public bool CanCraftSelect(int index)
  158. {
  159. UserData userData = Session.GetInstance().myUserData;
  160. if(userData.IsVIP())
  161. return true;
  162. if(userData.craftSelectLimit == null)
  163. return true;
  164. if(index < 0 || index >= userData.craftSelectLimit.Length)
  165. return false;
  166. int level = userData.GetBadge() / 10;
  167. level = 0;
  168. int craftLevel = userData.craftSelectLimit[index];
  169. if(level >= craftLevel)
  170. return true;
  171. return false;
  172. }
  173. public bool CanCraftSelectById(int id)
  174. {
  175. UserData userData = Session.GetInstance().myUserData;
  176. if(userData.IsVIP())
  177. return true;
  178. if(userData.craftSelectLimit == null)
  179. return true;
  180. int index = -1;
  181. List<CraftConfigData> list = CraftManager.GetInstance().GetDataList();
  182. for(int i=0; i<list.Count; i++)
  183. {
  184. if(list[i].id == id)
  185. {
  186. index = i;
  187. break;
  188. }
  189. }
  190. if(index < 0 || index >= userData.craftSelectLimit.Length)
  191. return false;
  192. int level = userData.GetBadge() / 10;
  193. int craftLevel = userData.craftSelectLimit[index];
  194. if(level >= craftLevel)
  195. return true;
  196. return false;
  197. }
  198. public bool IsAlly(TeamUtil.Team team)
  199. {
  200. return myPlayer.team == team;
  201. }
  202. }