BattleSession.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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 Player AddPlayer(int id, string nick, TeamUtil.Team team, int playerId)
  56. {
  57. Player player = null;
  58. playerDict.TryGetValue (id, out player);
  59. if (player == null) {
  60. player = new Player ();
  61. player.userId = id;
  62. player.nick = nick;
  63. player.team = team;
  64. player.playerId = playerId;
  65. //If AI take this player id
  66. RemoveAIPlayerByPlayerId(playerId);
  67. playerDict.Add (player.userId, player);
  68. playerList.Add (player);
  69. }
  70. else
  71. {
  72. if (player.lost)
  73. player.lost = false;
  74. }
  75. if (player.userId == myUserId) {
  76. myPlayer = player;
  77. player.isMe = true;
  78. }
  79. return player;
  80. }
  81. private void RemoveAIPlayerByPlayerId(int playerId)
  82. {
  83. for(int i=0; i<playerList.Count; i++)
  84. {
  85. Player player = playerList [i];
  86. if(player.playerId == playerId && player.userId < 0)
  87. {
  88. battleController.DealPlayerDeath (player, player.GetHero ().GetCraft());
  89. }
  90. }
  91. }
  92. public void PlayerLeft(int userId)
  93. {
  94. Player player = null;
  95. playerDict.TryGetValue (userId, out player);
  96. if(player != null)
  97. {
  98. player.lost = true;
  99. }
  100. }
  101. public Player GetPlayer(int userId)
  102. {
  103. if(playerDict.ContainsKey(userId))
  104. {
  105. return playerDict[userId];
  106. }
  107. return null;
  108. }
  109. public Player GetPlayerByTeam(TeamUtil.Team team)
  110. {
  111. for(int i=0; i<playerList.Count; i++)
  112. {
  113. Player player = playerList [i];
  114. if(player.team == team)
  115. {
  116. return player;
  117. }
  118. }
  119. return null;
  120. }
  121. public List<Player> GetPlayerList()
  122. {
  123. return playerList;
  124. }
  125. public void resetBattleStats()
  126. {
  127. battleStatsDict.Clear();
  128. }
  129. public Dictionary<int, PlayerStatsData> GetBattleStats()
  130. {
  131. return battleStatsDict;
  132. }
  133. public bool IsReady()
  134. {
  135. return this.battleController != null;
  136. }
  137. public bool IsOver()
  138. {
  139. return this.battleController != null && this.battleController.isGameOver;
  140. }
  141. public void registeBattleController(BattleController battleController)
  142. {
  143. this.battleController = battleController;
  144. // GetMessageManager().PlayerJoin();
  145. }
  146. public BattleController GetBattleController()
  147. {
  148. return battleController;
  149. }
  150. public bool CanCraftSelect(int index)
  151. {
  152. UserData userData = Session.GetInstance().myUserData;
  153. if(userData.IsVIP())
  154. return true;
  155. if(userData.craftSelectLimit == null)
  156. return true;
  157. if(index < 0 || index >= userData.craftSelectLimit.Length)
  158. return false;
  159. int level = userData.GetBadge() / 10;
  160. level = 0;
  161. int craftLevel = userData.craftSelectLimit[index];
  162. if(level >= craftLevel)
  163. return true;
  164. return false;
  165. }
  166. public bool CanCraftSelectById(int id)
  167. {
  168. UserData userData = Session.GetInstance().myUserData;
  169. if(userData.IsVIP())
  170. return true;
  171. if(userData.craftSelectLimit == null)
  172. return true;
  173. int index = -1;
  174. List<CraftConfigData> list = CraftManager.GetInstance().GetDataList();
  175. for(int i=0; i<list.Count; i++)
  176. {
  177. if(list[i].id == id)
  178. {
  179. index = i;
  180. break;
  181. }
  182. }
  183. if(index < 0 || index >= userData.craftSelectLimit.Length)
  184. return false;
  185. int level = userData.GetBadge() / 10;
  186. int craftLevel = userData.craftSelectLimit[index];
  187. if(level >= craftLevel)
  188. return true;
  189. return false;
  190. }
  191. public bool IsAlly(TeamUtil.Team team)
  192. {
  193. return myPlayer.team == team;
  194. }
  195. }