ServerListData.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. ServerStatus_Normal = 0;
  2. CGameListItem = cc.Class({
  3. ctor :function () {
  4. //属性数据
  5. this.m_ItemGenre=0;
  6. this.m_pParentListItem=0;
  7. },
  8. init :function(ItemGenre){
  9. //属性数据
  10. this.m_ItemGenre=ItemGenre;
  11. }
  12. });
  13. CGameKindItem = cc.Class({
  14. extends: CGameListItem,
  15. ctor :function () {
  16. //更新变量
  17. this.m_dwUpdateTime=0;
  18. this.m_bUpdateItem=false;
  19. //扩展数据
  20. this.m_dwProcessVersion=0;
  21. this.m_GameKind = new tagGameKind();
  22. },
  23. });
  24. CGameTypeItem = cc.Class({
  25. extends: CGameListItem,
  26. ctor:function() {
  27. this.m_GameType = new tagGameType();
  28. }
  29. });
  30. CGameServerItem = cc.Class({
  31. extends: CGameListItem,
  32. ctor:function () {
  33. //辅助变量
  34. this.m_pGameKindItem=0;
  35. //扩展数据
  36. this.m_ServerStatus=ServerStatus_Normal;
  37. this.m_GameType = new tagGameType();
  38. this.m_GameServer = new tagGameServer();
  39. this.m_GameMatch = new tagGameMatch();
  40. }
  41. });
  42. CServerListData = cc.Class({
  43. ctor:function () {
  44. //接口变量
  45. this.m_pIServerListDataSink=null;
  46. this.m_dwAllOnLineCount=0;
  47. this.m_GameTypeItemMap = new Array(); //种类索引
  48. this.m_GameServerItemMap = new Array(); //房间索引
  49. this.m_GameKindItemMap = new Array();
  50. },
  51. //设置接口
  52. SetServerListDataSink :function(pIServerListDataSink){
  53. //设置变量
  54. this.m_pIServerListDataSink=pIServerListDataSink;
  55. },
  56. //插入种类
  57. InsertGameType:function (pGameType){
  58. //效验参数
  59. if (pGameType==null) return false;
  60. //变量定义
  61. var pGameTypeItem = null;
  62. var bInsert = false;
  63. var it = this.m_GameTypeItemMap[pGameType.wTypeID];
  64. if (it == null)
  65. {
  66. pGameTypeItem = new CGameTypeItem();
  67. bInsert = true;
  68. }
  69. else
  70. {
  71. pGameTypeItem = it;
  72. }
  73. if (pGameTypeItem == 0) return false;
  74. pGameTypeItem.wJoinID = pGameType.wJoinID;
  75. pGameTypeItem.wSortID = pGameType.wSortID;
  76. pGameTypeItem.wTypeID = pGameType.wTypeID;
  77. pGameTypeItem.szTypeName = pGameType.szTypeName;
  78. //寻找父项
  79. if (pGameType.wJoinID!=0)
  80. {
  81. //寻找父项
  82. pGameTypeItem.m_pParentListItem=this.SearchGameType(pGameType.wJoinID);
  83. //待决判断
  84. if (pGameTypeItem.m_pParentListItem==0)
  85. {
  86. //m_GameListItemWait.push_back(pGameTypeItem);
  87. return true;
  88. }
  89. }
  90. //插入处理
  91. if (bInsert==true)
  92. {
  93. //设置索引
  94. this.m_GameTypeItemMap[pGameType.wTypeID]=pGameTypeItem;
  95. //界面更新
  96. if (this.m_pIServerListDataSink)
  97. this.m_pIServerListDataSink.OnGameItemInsert(pGameTypeItem);
  98. }
  99. else
  100. {
  101. //界面更新
  102. if (this.m_pIServerListDataSink)
  103. this.m_pIServerListDataSink.OnGameItemUpdate(pGameTypeItem);
  104. }
  105. return true;
  106. },
  107. //插入房间
  108. InsertGameServer :function(pGameServer) {
  109. //效验参数
  110. if (pGameServer==null) return false;
  111. //变量定义
  112. var pGameServerItem = null;
  113. var bInsert = false;
  114. var it = this.m_GameServerItemMap[pGameServer.wServerID];
  115. if (it == null)
  116. {
  117. pGameServerItem = new CGameServerItem();
  118. bInsert = true;
  119. }
  120. else
  121. {
  122. pGameServerItem = it;
  123. }
  124. if (pGameServerItem == 0) return false;
  125. //设置数据
  126. pGameServerItem.wKindID = pGameServer.wKindID;
  127. pGameServerItem.wNodeID = pGameServer.wNodeID;
  128. pGameServerItem.wSortID = pGameServer.wSortID;
  129. pGameServerItem.wServerID = pGameServer.wServerID;
  130. pGameServerItem.wServerKind = pGameServer.wServerKind;
  131. pGameServerItem.wServerType = pGameServer.wServerType;
  132. pGameServerItem.wServerPort = pGameServer.wServerPort;
  133. pGameServerItem.lCellScore = pGameServer.lCellScore;
  134. pGameServerItem.lEnterScore = pGameServer.lEnterScore;
  135. pGameServerItem.dwServerRule = pGameServer.dwServerRule;
  136. pGameServerItem.dwOnLineCount = pGameServer.dwOnLineCount;
  137. pGameServerItem.dwAndroidCount = pGameServer.dwAndroidCount;
  138. pGameServerItem.dwFullCount = pGameServer.dwFullCount;
  139. pGameServerItem.szServerAddr = pGameServer.szServerAddr;
  140. pGameServerItem.szServerName = pGameServer.szServerName;
  141. this.m_dwAllOnLineCount += pGameServer.dwOnLineCount;
  142. //插入处理
  143. if (bInsert==true) {
  144. //设置索引
  145. this.m_GameServerItemMap[pGameServer.wServerID]=pGameServerItem;
  146. //插入子项
  147. if (this.m_pIServerListDataSink)
  148. this.m_pIServerListDataSink.OnGameItemInsert(pGameServerItem);
  149. }
  150. else
  151. {
  152. //更新子项
  153. if (this.m_pIServerListDataSink)
  154. this.m_pIServerListDataSink.OnGameItemUpdate(pGameServerItem);
  155. }
  156. return true;
  157. },
  158. //查找房间
  159. SearchGameServer :function(wServerID) {
  160. return this.m_GameServerItemMap[wServerID];
  161. },
  162. //设置人数
  163. SetServerOnLineCount:function (wServerID, dwOnLineCount){
  164. //搜索房间
  165. var pGameServerItem=this.SearchGameServer(wServerID);
  166. //设置人数
  167. if (pGameServerItem!=0)
  168. {
  169. //设置变量
  170. this.m_dwAllOnLineCount -= pGameServerItem.m_GameServer.dwOnLineCount;
  171. this.m_dwAllOnLineCount += dwOnLineCount;
  172. //设置变量
  173. pGameServerItem.m_GameServer.dwOnLineCount=dwOnLineCount;
  174. //查找类型
  175. var pGameKindItem = this.SearchGameKind(pGameServerItem.m_GameServer.wKindID);
  176. if(pGameKindItem)
  177. {
  178. //设置变量
  179. pGameKindItem.m_GameKind.dwOnLineCount = dwGameKindOnline;
  180. //事件通知
  181. if (this.m_pIServerListDataSink!=0) this.m_pIServerListDataSink.OnGameItemUpdate(pGameKindItem);
  182. }
  183. }
  184. },
  185. //查找类型
  186. SearchGameKind:function (wKindID){
  187. return this.m_GameKindItemMap[wKindID];
  188. },
  189. //查找种类
  190. SearchGameType :function(wTypeID) {
  191. return this.m_GameTypeItemMap[wTypeID];
  192. },
  193. GetGameServerCount:function (){
  194. return this.m_GameServerItemMap.length;
  195. },
  196. ClearGameServer :function(){
  197. this.m_GameServerItemMap.length = 0;
  198. },
  199. EmunGameServerItem :function(wIndex) {
  200. return this.m_GameServerItemMap[wIndex];
  201. },
  202. });
  203. g_ServerListData = new CServerListData();
  204. g_ServerListDataLast = null;