BattleBehavior.js 78 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339
  1. import BehaviorBase from '../Framework/BehaviorBase';
  2. import GameProcessManager from '../net/GameProcessManager';
  3. import ConstMsgId from '../net/ConstMsgId';
  4. import DataModelManager from '../framework/DataModelManager';
  5. import Event from '../net/Event';
  6. import Common from '../common/Common';
  7. import Define from '../common/Define';
  8. import MsgTransfer from '../net/MsgTransfer';
  9. import LogicUnitManager from '../framework/LogicUnitManager';
  10. import PlayerInfoItem from '../model/PlayerInfoItem';
  11. import GameServerItem from '../model/GameServerItem';
  12. import ViewManager from '../ui/ViewManager';
  13. import NetConfig from '../net/NetConfig';
  14. export default class BattleBehavior extends BehaviorBase
  15. {
  16. constructor()
  17. {
  18. super();
  19. this._GameProcessManager = new GameProcessManager();
  20. this.dmm = DataModelManager;
  21. this.playerInfoModel = this.dmm.getModel('PlayerInfoModel');
  22. this.questionInfoModel = this.dmm.getModel('QuestionInfoModel');
  23. this.battleId = 0;
  24. this.questionId= 0;
  25. this.battleResult = null;
  26. this._roomList = new Array()
  27. this.wTableID = Define.INVALID_TABLE
  28. this.wChairID = Define.INVALID_CHAIR
  29. this.cbTableLock = 0
  30. this.cbGameStatus = 0
  31. this.cbAllowLookon = 0
  32. this.bChangeDesk = false
  33. this.bEnterAntiCheatRoom = false //--进入防作弊房间
  34. this.bSelfExitRoom = false
  35. this._tableUserList = new Array()
  36. this.TableList = []
  37. this._tableStatus = []
  38. this.bWaitQuit = false //-- 退出等待
  39. this._delayEnter = false
  40. this.m_bCallStateEnter = false
  41. this.m_bRoundOver = false
  42. this.m_bIsMyBanker = false
  43. //-- 游戏倒计时
  44. this.COUNTDOWN_READY = 30 // -- 准备倒计时
  45. this.COUNTDOWN_CALLSCORE = 20 // -- 叫分倒计时
  46. this.COUNTDOWN_OUTCARD = 20 // -- 出牌倒计时
  47. this.COUNTDOWN_HANDOUTTIME = 30 // -- 首出倒计时
  48. this.callMaxScore = 0 //当前最大叫分
  49. this.counterInfos = [] // 倒计时
  50. this._counterInterVal = 1000
  51. this.readyCounterId = 1
  52. this.callScoreCounterStartId = 10
  53. this.outCardCounterStartId = 20
  54. this.m_bQuickStart = false
  55. this.needCheckConnectGame = false //杀掉进程的断线重连
  56. this.needCheckConnectGameing = false//没有杀掉进程的断线重连
  57. //this.Counter()
  58. this.roomIndex = 0
  59. this.handCards = {};
  60. var userInfoStr = cc.sys.localStorage.getItem(Define.UserInfo);
  61. var userInfo = JSON.parse(userInfoStr)
  62. this.selfUserID = userInfo[Define.UserId]
  63. this.token = userInfo[Define.Token]
  64. console.log('token:' + this.token)
  65. // this.selfUserID = 169
  66. // this.token = '5558AB18-9CA7-2B92-0077-6215CEB3543B'
  67. this.playerInfoModel.selfUserID = this.selfUserID
  68. this.selfPassword = userInfo[Define.Password]
  69. //this.selfPassword = '123456'
  70. cc.log(Define.UserInfo + ":" + userInfoStr)
  71. var currentGameId = cc.sys.localStorage.getItem('CurrentGameId')
  72. cc.log('currentGameId' + ":" + currentGameId)
  73. this.currentGameId = currentGameId
  74. this.currentGameId = 9
  75. this.wanFaInfo = null
  76. this.currentRoomInfo = null
  77. var self = this
  78. this.currentWanFaId = -1
  79. // setTimeout(() => {
  80. // self.requestWanFaInfo()
  81. // }, 1000);
  82. setTimeout(() => {
  83. self.requerMoregame()
  84. }, 1000);
  85. }
  86. requerMoregame()
  87. {
  88. var self = this
  89. var url = Define.GameWanFaMore + "?id=" + this.currentGameId
  90. Common.sendGetGameConfig(url,function(err,res)
  91. {
  92. if(err)
  93. {
  94. console.log('requerMoregame error:' + err + 'url:' + url )
  95. return
  96. }
  97. console.log('res:' + res)
  98. var info = JSON.parse(res)
  99. console.log('info.code:' + info['code'])
  100. if(info['code']!=200)
  101. {
  102. return
  103. }
  104. self.moregameInfo = info.data
  105. console.log('requerMoregame emit:' + JSON.stringify( info.data))
  106. self.emit(Event.COM_MSG.MOREGAME_INFO,self.moregameInfo);
  107. })
  108. }
  109. requestWanFaInfo()
  110. {
  111. var self = this
  112. var url = Define.GameWanFaUrl + "?id=" + this.currentGameId
  113. Common.sendGetGameConfig(url,function(err,res)
  114. {
  115. if(err)
  116. {
  117. console.log('requestWanFaInfo error:' + err + 'url:' + url )
  118. return
  119. }
  120. console.log('res:' + res)
  121. var info = JSON.parse(res)
  122. console.log('info.code:' + info['code'])
  123. if(info['code']!=200)
  124. {
  125. return
  126. }
  127. self.wanFaInfo = info.data
  128. console.log('requestWanFaInfo emit:' + JSON.stringify( info.data))
  129. self.emit(Event.COM_MSG.WANFA_INFO,self.wanFaInfo);
  130. self.checkRoomConnect()
  131. // self.requestRoomInfo(464)// test
  132. })
  133. }
  134. checkRoomConnect()
  135. {
  136. var serverinfoStr = cc.sys.localStorage.getItem(Define.ServerInfo);
  137. if(serverinfoStr!=null&&serverinfoStr!='')
  138. {
  139. var serverInfo = JSON.parse(serverinfoStr)
  140. if(serverInfo[Define.WanFaId]!=undefined&&serverInfo[Define.WanFaId]!=null&&serverInfo[Define.WanFaId]!='')
  141. {
  142. this.currentWanFaId = parseInt(serverInfo[Define.WanFaId])
  143. this.requestRoomInfo()
  144. }
  145. }
  146. }
  147. requestRoomInfo()
  148. {
  149. if(this.currentWanFaId <=0)
  150. {
  151. console.log('requestRoomInfo error wanFaId ' + this.currentWanFaId)
  152. return
  153. }
  154. var self = this
  155. var url = Define.GameRoomUrl + "?id=" + this.currentWanFaId
  156. Common.sendGetGameConfig(url,function(err,res)
  157. {
  158. if(err)
  159. {
  160. console.log('requestRoomInfo error:' + err + 'url:' + url )
  161. return
  162. }
  163. var info = JSON.parse(res)
  164. console.log('res:' + res)
  165. if(info.code!=200)
  166. {
  167. return
  168. }
  169. for(var i=info.data.length-1;i>0;i--)
  170. {
  171. if( info.data[i].nullity!=0)
  172. {
  173. info.data.splice(i,1)
  174. }
  175. }
  176. console.log('res.data:' + JSON.stringify(info.data))
  177. self.currentRoomInfo = info.data
  178. self.emit(Event.COM_MSG.ROOM_INFO,self.currentRoomInfo);
  179. self.checkServerConnnect()
  180. })
  181. }
  182. checkServerConnnect()
  183. {
  184. var serverinfoStr = cc.sys.localStorage.getItem(Define.ServerInfo);
  185. if(serverinfoStr!=null&&serverinfoStr!='')
  186. {
  187. var serverInfo = JSON.parse(serverinfoStr)
  188. for(var i = 0;i < this.currentRoomInfo.length;i++)
  189. {
  190. var roomInfo = this.currentRoomInfo[i]
  191. if(serverInfo[Define.ServerAddress] == roomInfo.gameserver_addr && serverInfo[Define.ServerPort] == roomInfo.server_port)
  192. {
  193. this.CreateGameStart(i)
  194. this.needCheckConnectGame = true
  195. // cc.sys.localStorage.setItem(Define.ServerInfo,'')
  196. break
  197. }
  198. }
  199. }
  200. }
  201. requestUserInfo()
  202. {
  203. var self = this
  204. var url = Define.GameUserInfoUrl+'/' + this.selfUserID + '?token=' + this.token
  205. console.log('requestUserInfo :' + url )
  206. Common.sendGetGameConfig(url,function(err,res)
  207. {
  208. if(err)
  209. {
  210. console.log('requestUserInfo error:' + err + 'url:' + url )
  211. return
  212. }
  213. console.log('res:' + res)
  214. var info = JSON.parse(res)
  215. console.log('info.code:' + info['code'])
  216. if(info['code']!=200)
  217. {
  218. return
  219. }
  220. self.userInfo = info.data
  221. console.log('requestUserInfo emit:' + JSON.stringify( info.data))
  222. self.emit(Event.COM_MSG.USER_INFO,self.userInfo);
  223. // self.requestRoomInfo(464)// test
  224. })
  225. }
  226. reSetData()
  227. {
  228. this.counterInfos = [] // 倒计时
  229. this.bWaitQuit = false //-- 退出等待
  230. this._delayEnter = false
  231. this.m_bCallStateEnter = false
  232. this.m_bRoundOver = false
  233. this.callMaxScore = 0 //当前最大叫分
  234. }
  235. createGameSocket(index, bBackToRoom)
  236. {
  237. if (bBackToRoom) {
  238. index = this.roomIndex;
  239. }
  240. this.roomIndex = index;
  241. var length = this._roomList[Define.GAMEID].length
  242. if(index < 0 || index >= length)
  243. {
  244. return
  245. }
  246. var gameServerItem = this._roomList[Define.GAMEID][index]
  247. var url = gameServerItem.szServerAddr +":"+ gameServerItem.wServerPort
  248. console.log("createGameSocket:" + url)
  249. this._GameProcessManager.createSocket(url, null,Define.SOCKET_TYPE.GAME)
  250. }
  251. //测试游戏服务器
  252. createGameSocket1(index, bBackToRoom)
  253. {
  254. if (bBackToRoom) {
  255. index = this.roomIndex;
  256. }
  257. this.roomIndex = index;
  258. var length = this.currentRoomInfo.length
  259. if(index < 0 || index >= length)
  260. {
  261. return
  262. }
  263. var gameServerItem = this.currentRoomInfo[index]
  264. var url = 'ws://'+ gameServerItem.gameserver_addr +":"+ gameServerItem.server_port
  265. console.log("createGameSocket:" + url)
  266. this._GameProcessManager.createSocket(url, null,Define.SOCKET_TYPE.GAME)
  267. }
  268. quickStart()
  269. {
  270. if(this._GameProcessManager.getSocketState() == Common.SocketState.OK && this._GameProcessManager.socketType == Define.SOCKET_TYPE.GAME)
  271. {
  272. this.setQuickStart()
  273. // this.onSocketLogonFinish()
  274. }
  275. else
  276. {
  277. this.closeSocket()
  278. console.log('this._roomList: ' + this._roomList)
  279. var length = this._roomList[Define.GAMEID].length
  280. if(this.roomIndex < 0 || this.roomIndex >= length)
  281. {
  282. return
  283. }
  284. var gameServerItem = this._roomList[Define.GAMEID][this.roomIndex]
  285. var url = gameServerItem.szServerAddr +":"+ gameServerItem.wServerPort
  286. console.log("quickStart createGameSocket:" + url)
  287. this._GameProcessManager.createSocket(url, this.setQuickStart.bind(this),Define.SOCKET_TYPE.GAME)
  288. }
  289. }
  290. getFitRoomIdx()
  291. {
  292. return 0
  293. }
  294. quickStart1()
  295. {
  296. var fixIdx = this.getFitRoomIdx()
  297. this.CreateGameStart(fixIdx)
  298. }
  299. CreateGameStart(idx)
  300. {
  301. cc.log("State==",this._GameProcessManager.getSocketState())
  302. cc.log("socketType==",this._GameProcessManager.socketType)
  303. if(idx == this.roomIndex &&this._GameProcessManager.getSocketState() == Common.SocketState.OK && this._GameProcessManager.socketType == Define.SOCKET_TYPE.GAME)
  304. {
  305. cc.log("have connnected ok ");
  306. this.setQuickStart()
  307. // this.onSocketLogonFinish()
  308. this.onSocketLoginGameServer();
  309. }
  310. else
  311. {
  312. cc.log("need select new server connect");
  313. this.closeSocket()
  314. this.roomIndex = idx
  315. var length = this.currentRoomInfo.length
  316. if(this.roomIndex < 0 || this.roomIndex >= length)
  317. {
  318. return
  319. }
  320. var gameServerItem = this.currentRoomInfo[this.roomIndex]
  321. var url = 'ws://'+ gameServerItem.gameserver_addr +":"+ gameServerItem.server_port
  322. console.log("quickStart createGameSocket:" + url)
  323. this._GameProcessManager.createSocket(url, this.setQuickStart.bind(this),Define.SOCKET_TYPE.GAME)
  324. }
  325. }
  326. closeSocket()
  327. {
  328. this._GameProcessManager.closeSocket()
  329. }
  330. setQuickStart()
  331. {
  332. this.m_bQuickStart = true
  333. }
  334. onSocketLoginGameServer(){
  335. var password = '07e85eed53036ba58628aeeb67818e0d'
  336. var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_GP_LOGON,ConstMsgId.MDM_GP_LOGON, 238, this.selfUserID,this.selfPassword)
  337. //var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_GP_LOGON,ConstMsgId.MDM_GP_LOGON, 238, this.selfUserID,password)
  338. this._GameProcessManager.sendMsg(msg);
  339. }
  340. sendLoginGameServer()
  341. {
  342. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GR_LOGON,ConstMsgId.SUB_GR_LOGON_USERID,4 + 4 + 15 + (33 + 33 + 33 ) * 2 )
  343. this._GameProcessManager.sendMsg(msg);
  344. }
  345. sendSitDown(table,chair,password)
  346. {
  347. console.log("sendSitDown:"+ " table:"+table+"chair:"+chair)
  348. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GR_USER,ConstMsgId.SUB_GR_USER_SITDOWN,4 + 4 + 70,table,chair,password)
  349. this._GameProcessManager.sendMsg(msg);
  350. }
  351. sendSelfSitUp(bForce)
  352. {
  353. var MyTable = this.GetMeTableID()
  354. var MyChair = this.GetMeChairID()
  355. this.sendSitUp(MyTable,MyChair,bForce)
  356. }
  357. sendSitUp(table,chair,bForce)
  358. {
  359. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GR_USER,ConstMsgId.SUB_GR_USER_STANDUP,4 + 4 + 5,table,chair,bForce )
  360. this._GameProcessManager.sendMsg(msg);
  361. }
  362. sendGameOption()
  363. {
  364. console.log('sendGameOption')
  365. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GF_FRAME,ConstMsgId.SUB_GF_GAME_OPTION,4 + 4 + 9 )
  366. this._GameProcessManager.sendMsg(msg);
  367. }
  368. sendReady()
  369. {
  370. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GF_FRAME,ConstMsgId.SUB_GF_USER_READY,4 + 4 )
  371. this._GameProcessManager.sendMsg(msg);
  372. }
  373. sendCallScore(score)
  374. {
  375. console.log('sendCallScore score:'+ score)
  376. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GF_GAME,ConstMsgId.SUB_C_CALL_SCORE,4 + 4 + 1,score )
  377. this._GameProcessManager.sendMsg(msg);
  378. }
  379. sendOutCard(cards, bPass)
  380. {
  381. var msg = null
  382. if (bPass )
  383. {
  384. msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GF_GAME,ConstMsgId.SUB_C_PASS_CARD,4 + 4 )
  385. }
  386. else
  387. {
  388. var cardcount = cards.length
  389. msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GF_GAME,ConstMsgId.SUB_C_OUT_CARD,4 + 4 + cardcount + 1,cards )
  390. }
  391. this._GameProcessManager.sendMsg(msg);
  392. }
  393. setData(wMainCmdID, wSubCmdID, data) {
  394. if (ConstMsgId.MDM_GR_LOGON === wMainCmdID) {
  395. if (ConstMsgId.SUB_GR_LOGON_FINISH === wSubCmdID) {
  396. console.log("SUB_GR_LOGON_FINISH");
  397. this.onSocketLogonFinish();
  398. } else if (ConstMsgId.SUB_GR_LOGON_SUCCESS === wSubCmdID) {
  399. console.log("登录成功");
  400. } else if (ConstMsgId.SUB_GR_LOGON_FAILURE === wSubCmdID) {
  401. this.readLoginFail(data);
  402. console.log("登录房间失败:");
  403. } else if (ConstMsgId.SUB_GR_UPDATE_NOTIFY === wSubCmdID) {
  404. console.log("升级提示");
  405. }
  406. } else if (ConstMsgId.MDM_MB_SERVER_LIST === wMainCmdID) {
  407. if (ConstMsgId.SUB_MB_LIST_FINISH === wSubCmdID) {
  408. } else if (ConstMsgId.SUB_MB_LIST_SERVER === wSubCmdID) {
  409. this.readServerList(data);
  410. } else if (ConstMsgId.SUB_MB_AGENT_KIND === wSubCmdID) {
  411. }
  412. } else if (ConstMsgId.MDM_GR_CONFIG === wMainCmdID) {
  413. if (ConstMsgId.SUB_GR_CONFIG_SERVER === wSubCmdID) {
  414. this.readConfigServer(data);
  415. } else if (ConstMsgId.SUB_GR_CONFIG_FINISH === wSubCmdID) {
  416. console.log("房间配置完成");
  417. }
  418. } else if (ConstMsgId.MDM_GR_USER === wMainCmdID) {
  419. if (wSubCmdID === ConstMsgId.SUB_GR_USER_WAIT_DISTRIBUTE) {
  420. console.log("正在进行分组,请稍后...")
  421. this.emit(Event.COM_MSG.SEND_MSG,true,'正在进行分组,请稍后...')
  422. } else if (wSubCmdID === ConstMsgId.SUB_GR_USER_ENTER) {//--用户进入
  423. this.onSocketUserEnter(data);
  424. } else if (wSubCmdID === ConstMsgId.SUB_GR_USER_SCORE) {//--用户积分
  425. this.onSocketUserScore(data);
  426. } else if (wSubCmdID === ConstMsgId.SUB_GR_USER_STATUS) {//--用户状态
  427. this.onSocketUserStatus(data);
  428. } else if (wSubCmdID === ConstMsgId.SUB_GR_REQUEST_FAILURE) {//--请求失败
  429. this.onSocketReQuestFailure(data);
  430. }
  431. } else if (ConstMsgId.MDM_GR_STATUS === wMainCmdID) {
  432. if (ConstMsgId.SUB_GR_TABLE_INFO == wSubCmdID) {
  433. this.readTableInfo(data);
  434. } else if (wSubCmdID === ConstMsgId.SUB_GR_TABLE_STATUS) {//--桌子状态
  435. this.readTableStatus(data);
  436. }
  437. } else if (ConstMsgId.MDM_GF_FRAME === wMainCmdID) {// 游戏框架
  438. if (wSubCmdID == ConstMsgId.SUB_GF_GAME_STATUS ) {//--游戏状态
  439. this.readGameStatus(data);
  440. } else if ( wSubCmdID == ConstMsgId.SUB_GF_GAME_SCENE) {//--游戏场景
  441. this.readGameScene(data);
  442. } else if (wSubCmdID == ConstMsgId.SUB_GF_SYSTEM_MESSAGE) {//--系统消息
  443. this.onSocketSystemMessage(data);
  444. } else if (wSubCmdID == ConstMsgId.SUB_GF_ACTION_MESSAGE) {//--动作消息
  445. this.onSocketActionMessage(data);
  446. } else if (wSubCmdID == ConstMsgId.SUB_GF_USER_CHAT) {//--用户聊天
  447. // local chat = ExternalFun.read_netdata(ConstMsgId.CMD_GF_S_UserChat, dataBuffer)
  448. // --获取玩家昵称
  449. // local useritem = self._UserList[chat.dwSendUserID]
  450. // if not useritem then
  451. // return
  452. // end
  453. // if self.wTableID == yl.INVALID_CHAIR or self.wTableID ~= useritem.wTableID then
  454. // return
  455. // end
  456. // chat.szNick = useritem.szNickName
  457. // GameChatLayer.addChatRecordWith(chat)
  458. // if nil ~= self._viewFrame and nil ~= self._viewFrame.onUserChat then
  459. // -- 播放声音
  460. // local idx = GameChatLayer.compareWithText(chat.szChatString)
  461. // if nil ~= idx then
  462. // local sound_path = "sound/" .. useritem.cbGender .. "_" .. idx .. ".wav"
  463. // if GlobalUserItem.bSoundAble then
  464. // AudioEngine.playEffect(cc.FileUtils:getInstance():fullPathForFilename(sound_path),false)
  465. // end
  466. // end
  467. // self._viewFrame:onUserChat(chat,useritem.wChairID)
  468. // end
  469. } else if (wSubCmdID == ConstMsgId.SUB_GF_USER_EXPRESSION) {//--用户表情
  470. // local expression = ExternalFun.read_netdata(game_cmd.CMD_GF_S_UserExpression, dataBuffer)
  471. // --获取玩家昵称
  472. // local useritem = self._UserList[expression.dwSendUserID]
  473. // if not useritem then
  474. // return
  475. // end
  476. // if self.wTableID == yl.INVALID_CHAIR or self.wTableID ~= useritem.wTableID then
  477. // return
  478. // end
  479. // expression.szNick = useritem.szNickName
  480. // GameChatLayer.addChatRecordWith(expression, true)
  481. // if nil ~= self._viewFrame and nil ~= self._viewFrame.onUserExpression then
  482. // self._viewFrame:onUserExpression(expression,useritem.wChairID)
  483. // end
  484. } else if (wSubCmdID == ConstMsgId.SUB_GF_USER_VOICE) {//-- 用户语音
  485. // AudioRecorder:getInstance():saveRecordFile(dataBuffer, function(uid, tid, spath)
  486. // local msgTab = {}
  487. // msgTab.uid = uid
  488. // msgTab.tid = tid
  489. // msgTab.spath = spath
  490. // table.insert(self._tabVoiceMsgQueue, msgTab)
  491. // self:popVocieMsg()
  492. // end)
  493. }
  494. } else if (ConstMsgId.MDM_GF_GAME === wMainCmdID) {// game
  495. if (ConstMsgId.SUB_S_GAME_START == wSubCmdID ) {//--游戏开始
  496. this.emit(Event.COM_MSG.SEND_MSG,false,'')
  497. this.cbGameStatus = Define.GAME_SCENE_CALL;
  498. this.onSubGameStart(data);
  499. //this.sendCallScore(3)
  500. } else if (ConstMsgId.SUB_S_CALL_SCORE == wSubCmdID) {//--用户叫分
  501. this.cbGameStatus = Define.GAME_SCENE_CALL;
  502. this.onSubCallScore(data);
  503. } else if (ConstMsgId.SUB_S_BANKER_INFO == wSubCmdID ) {//--庄家信息
  504. this.cbGameStatus = Define.GAME_SCENE_PLAY;
  505. this.onSubBankerInfo(data);
  506. } else if (ConstMsgId.SUB_S_OUT_CARD == wSubCmdID) {//--用户出牌
  507. this.cbGameStatus = Define.GAME_SCENE_PLAY;
  508. this.onSubOutCard(data);
  509. } else if (ConstMsgId.SUB_S_PASS_CARD == wSubCmdID) {//--用户放弃
  510. this.cbGameStatus = Define.GAME_SCENE_PLAY;
  511. this.onSubPassCard(data);
  512. } else if (ConstMsgId.SUB_S_GAME_CONCLUDE == wSubCmdID) {// --游戏结束
  513. this.cbGameStatus = Define.GAME_SCENE_END;
  514. this.onSubGameConclude(data);
  515. }
  516. }
  517. }
  518. readLoginFail(data)
  519. {
  520. var len = data.byteLength;
  521. var readPos = 0;
  522. var dataview = new DataView(data);
  523. var code = dataview.getInt32(readPos, Common.littleEndian); //--code
  524. readPos += 4;
  525. var msg = Common.getString(data, readPos, len-4); //--msg
  526. readPos += (len-4);
  527. console.log(Common.GetDateString() + " code:" + code + "msg:" + msg)
  528. }
  529. readServerList(data)
  530. {
  531. console.log('readServerList')
  532. var len = data.byteLength;
  533. if ((len - Math.floor(len / Define.LEN_GAME_SERVER_ITEM) * Define.LEN_GAME_SERVER_ITEM) != 0) {
  534. Common.Print("roomlist_len_error" + len);
  535. return;
  536. }
  537. var itemcount = Math.floor(len / Define.LEN_GAME_SERVER_ITEM);
  538. //--读取房间信息
  539. var readPos = 0;
  540. var dataview = new DataView(data);
  541. this._roomList = new Array();
  542. for (var i = 0; i < itemcount; i++) {
  543. var item = new GameServerItem();
  544. item.wKindID = dataview.getUint16(readPos, Common.littleEndian); //--名称索引
  545. readPos += 2;
  546. item.wNodeID = dataview.getUint16(readPos, Common.littleEndian); //--节点索引
  547. readPos += 2;
  548. item.wSortID = dataview.getUint16(readPos, Common.littleEndian); //--排序索引
  549. readPos += 2;
  550. item.wServerID = dataview.getUint16(readPos, Common.littleEndian); //--房间索引
  551. readPos += 2;
  552. item.wServerKind = dataview.getUint16(readPos, Common.littleEndian); //--房间类型
  553. readPos += 2;
  554. item.wServerType = dataview.getUint16(readPos, Common.littleEndian); //--房间类型
  555. readPos += 2;
  556. item.wServerLevel = dataview.getUint16(readPos, Common.littleEndian); //--房间等级
  557. readPos += 2;
  558. item.wServerPort = dataview.getUint16(readPos, Common.littleEndian); //--房间端口
  559. readPos += 2;
  560. item.lCellScore = Common.readint64(data, readPos); //--单元积分
  561. readPos += 8;
  562. item.cbEnterMember = dataview.getUint8(readPos, Common.littleEndian); //--进入会员
  563. readPos += 1;
  564. item.lEnterScore = Common.readint64(data, readPos); //--进入积分
  565. readPos += 8;
  566. item.dwServerRule = dataview.getUint32(readPos, Common.littleEndian); //--房间规则
  567. readPos += 4;
  568. item.dwOnLineCount = dataview.getUint32(readPos, Common.littleEndian); //--在线人数
  569. readPos += 4;
  570. item.dwAndroidCount = dataview.getUint32(readPos, Common.littleEndian); //--机器人数
  571. readPos += 4;
  572. item.dwFullCount = dataview.getUint32(readPos, Common.littleEndian); //--满员人数
  573. readPos += 4;
  574. item.szServerAddr = Common.getString(data, readPos, 32 * 2); //--房间地址
  575. readPos += 32 * 2;
  576. item.szServerName = Common.getString(data, readPos, 32 * 2); //--房间名称
  577. readPos += 32 * 2;
  578. item.dwSurportType = dataview.getUint32(readPos, Common.littleEndian); //--支持类型
  579. readPos += 4;
  580. item.wTableCount = dataview.getUint16(readPos, Common.littleEndian); //--桌子数目
  581. readPos += 2;
  582. console.log(item.wKindID)
  583. console.log(item.wServerPort)
  584. console.log(item.szServerAddr)
  585. console.log(item.szServerName)
  586. console.log(item.dwSurportType)
  587. console.log(item.wTableCount)
  588. console.log(item)
  589. if(CC_JSB && cc.sys.OS_ANDROID === cc.sys.os)
  590. {
  591. item.szServerAddr = NetConfig.AndroidGameAdress
  592. }
  593. else
  594. {
  595. item.szServerAddr = NetConfig.gameAdress
  596. }
  597. if (item == null) {
  598. break;
  599. }
  600. if (null == this._roomList[item.wKindID] || undefined == this._roomList[item.wKindID]) {
  601. this._roomList[item.wKindID] = new Array();
  602. }
  603. if (item.wServerType == Define.GAME_GENRE_PERSONAL) {
  604. //if GlobalUserItem.bEnableRoomCard then
  605. // if PriRoom then
  606. // PriRoom:getInstance().m_tabPriModeGame[item.wKindID] = true
  607. // end
  608. // table.insert(self._roomList[item.wKindID], item)
  609. //end
  610. } else {
  611. this._roomList[item.wKindID].push(item);
  612. }
  613. }
  614. }
  615. readConfigServer(data)
  616. {
  617. var readPos = 0
  618. var dataview = new DataView(data)
  619. this.wTableCount = dataview.getUint16(readPos,Common.littleEndian) //--名称索引
  620. readPos+=2
  621. this.wChairCount = dataview.getUint16(readPos,Common.littleEndian) //--名称索引
  622. readPos+=2
  623. this.wServerType = dataview.getUint16(readPos,Common.littleEndian) //--名称索引
  624. readPos+=2
  625. this.dwServerRule = dataview.getUint32(readPos,Common.littleEndian) //--名称索引
  626. readPos+=4
  627. console.log("房间配置[table:" + this.wTableCount + "][chair:" + this.wChairCount + "][type:" + this.wServerType + "][rule:" + this.dwServerRule + "]")
  628. }
  629. readTableInfo(data)
  630. {
  631. console.log("readTableInfo")
  632. var readPos = 0
  633. var dataview = new DataView(data)
  634. var wTableCount = dataview.getUint16(readPos,Common.littleEndian)
  635. readPos+=2
  636. this._tableStatus = []
  637. for (var i = 0 ; i < wTableCount;i++ )
  638. {
  639. var tableStatus = {}
  640. tableStatus.cbTableLock = dataview.getUint8(readPos,Common.littleEndian)
  641. readPos+=1
  642. tableStatus.cbPlayStatus = dataview.getUint8(readPos,Common.littleEndian)
  643. readPos+=1
  644. tableStatus.lCellScore = dataview.getInt32(readPos,Common.littleEndian)
  645. readPos+=4
  646. this._tableStatus.push(tableStatus)
  647. }
  648. // console.log("tableStatus:"+ JSON.stringify( this._tableStatus))
  649. this.onGetTableInfo()
  650. }
  651. readTableStatus(data)
  652. {
  653. var readPos = 0
  654. var dataview = new DataView(data)
  655. var wTableID = dataview.getUint16(readPos,Common.littleEndian) + 1
  656. readPos+=2
  657. this._tableStatus[wTableID] = {}
  658. this._tableStatus[wTableID].cbTableLock = dataview.getUint8(readPos,Common.littleEndian)
  659. readPos+=1
  660. this._tableStatus[wTableID].cbPlayStatus = dataview.getUint8(readPos,Common.littleEndian)
  661. readPos+=1
  662. this._tableStatus[wTableID].lCellScore = dataview.getUint32(readPos,Common.littleEndian)
  663. readPos+=4
  664. console.log("SUB_GR_TABLE_STATUS ==> " + wTableID) //--[[ .. " ==> " .. this._tableStatus[wTableID].cbPlayStatus]])
  665. this.upDataTableStatus(wTableID)
  666. }
  667. //--用户进入
  668. onSocketUserEnter(data)
  669. {
  670. var readPos = 0
  671. var dataview = new DataView(data)
  672. var userItem = new PlayerInfoItem("","",-1,0,0)
  673. userItem.dwUserID = dataview.getUint32(readPos,Common.littleEndian)
  674. readPos+=4
  675. var selfUserID = this.selfUserID
  676. var bMySelfInfo = false
  677. console.log("onSocketUserEnter userItem.dwUserID:" + userItem.dwUserID)
  678. var selfPlayer = this.playerInfoModel.getSelfTablePlayer()
  679. //--自己判断
  680. if(selfPlayer)
  681. {
  682. bMySelfInfo = (userItem.dwUserID == selfUserID)
  683. }
  684. console.log("bMySelfInfo:" + bMySelfInfo)
  685. //--读取信息
  686. userItem.wFaceID = 1
  687. userItem.cbGender = dataview.getUint8(readPos,Common.littleEndian)
  688. readPos+=1
  689. userItem.wTableID = dataview.getUint16(readPos,Common.littleEndian)
  690. readPos+=2
  691. userItem.wChairID = dataview.getUint16(readPos,Common.littleEndian)
  692. readPos+=2
  693. userItem.cbUserStatus = dataview.getUint8(readPos,Common.littleEndian)
  694. readPos+=1
  695. userItem.lScore = Common.readint64(data,readPos)
  696. readPos+=8
  697. userItem.lIngot = Common.readint64(data,readPos)
  698. readPos+=8
  699. userItem.dwWinCount = dataview.getUint32(readPos,Common.littleEndian)
  700. readPos+=4
  701. userItem.dwLostCount = dataview.getUint32(readPos,Common.littleEndian)
  702. readPos+=4
  703. userItem.dwDrawCount = dataview.getUint32(readPos,Common.littleEndian)
  704. readPos+=4
  705. userItem.dwFleeCount = dataview.getUint32(readPos,Common.littleEndian)
  706. readPos+=4
  707. userItem.dwExperience = dataview.getUint32(readPos,Common.littleEndian)
  708. readPos+=4
  709. userItem.lIntegralCount = Common.readint64(data,readPos)
  710. readPos+=8
  711. userItem.dwClientAddr = dataview.getUint32(readPos,Common.littleEndian)
  712. readPos+=4
  713. userItem.nickNameLen = dataview.getUint16(readPos,Common.littleEndian)
  714. readPos+=2
  715. userItem.nickNameDes = dataview.getUint16(readPos,Common.littleEndian)
  716. readPos+=2
  717. //变长不X2 而是X1
  718. userItem.szNickName = Common.getString(data, readPos,userItem.nickNameLen * 1);
  719. readPos += userItem.nickNameLen * 1;
  720. userItem.szHeadLen = dataview.getUint16(readPos,Common.littleEndian)
  721. readPos+=2
  722. userItem.szHeadDes = dataview.getUint16(readPos,Common.littleEndian)
  723. readPos+=2
  724. //变长不X2 而是X1
  725. userItem.szHead = Common.getString(data, readPos,userItem.szHeadLen * 1);
  726. readPos += userItem.szHeadLen * 1;
  727. //--添加/更新到缓存
  728. var bAdded = false
  729. var item = this.playerInfoModel.getTablePlayerInfoByUserID(userItem.dwUserID)
  730. if (item != null )
  731. {
  732. item.lScore = userItem.lScore
  733. item.lIngot = userItem.lIngot
  734. item.wFaceID = userItem.wFaceID
  735. item.cbGender = userItem.cbGender
  736. item.wTableID = userItem.wTableID
  737. item.wChairID = userItem.wChairID
  738. item.cbUserStatus = userItem.cbUserStatus
  739. item.dwWinCount = userItem.dwWinCount
  740. item.dwLostCount = userItem.dwLostCount
  741. item.dwDrawCount = userItem.dwDrawCount
  742. item.dwFleeCount = userItem.dwFleeCount
  743. item.dwExperience = userItem.dwExperience
  744. item.lIntegralCount = userItem.lIntegralCount
  745. item.dwClientAddr = userItem.dwClientAddr
  746. item.szNickName = userItem.szNickName
  747. item.szHead = userItem.szHead
  748. bAdded = true
  749. }
  750. // if( bAdded == false )
  751. // {
  752. this.playerInfoModel.setTablePlayerInfo( userItem )
  753. //}
  754. console.log(Common.GetDateString() + ' onSocketUserEnter userItem:' + JSON.stringify(userItem) )
  755. //--记录自己桌椅号
  756. if ( userItem.dwUserID == selfUserID )
  757. {
  758. console.log('this.wTableID:' + userItem.wTableID)
  759. this.wTableID = userItem.wTableID
  760. this.wChairID = userItem.wChairID
  761. }
  762. if(userItem.cbUserStatus <= Define.US_FREE && userItem.dwUserID == selfUserID)
  763. {
  764. this.onExitTable()
  765. return
  766. }
  767. // if(bMySelfInfo)
  768. // {
  769. // return
  770. // }
  771. if ((userItem.wTableID != Define.INVALID_TABLE) && (userItem.cbUserStatus != Define.US_LOOKON ))
  772. {
  773. this.onUpDataTableUser(userItem.wTableID,userItem.wChairID,userItem)
  774. this.onEventUserEnter(userItem.wTableID,userItem.wChairID,userItem)
  775. }
  776. if (( bMySelfInfo == true) && (this._delayEnter == true ))
  777. {
  778. this._delayEnter = false
  779. this.onSocketLogonFinish()
  780. }
  781. }
  782. //--登录完成
  783. onSocketLogonFinish()
  784. {
  785. console.log("onSocketLogonFinish: this._delayEnter:" + this._delayEnter)
  786. // var myUserItem = this.GetMeUserItem()
  787. // if (! myUserItem )
  788. // { console.log("获取自己信息失败!")
  789. // return
  790. // }
  791. if (this.wTableID == Define.INVALID_TABLE )
  792. {
  793. // this.onEnterTable()
  794. // console.log("找到游戏桌子,正在获取场景中...")
  795. // this.sendGameOption()
  796. if(this.needCheckConnectGame == true)
  797. {
  798. cc.sys.localStorage.setItem(Define.ServerInfo,'')
  799. this.needCheckConnectGame = false
  800. console.log('Game Has Over')
  801. return
  802. }
  803. if(this.needCheckConnectGameing == true)
  804. {
  805. cc.sys.localStorage.setItem(Define.ServerInfo,'')
  806. this.needCheckConnectGameing = false
  807. console.log('Game Has Over')
  808. return
  809. }
  810. if(this.m_bQuickStart == true)
  811. {
  812. this.m_bQuickStart = false
  813. this.sendSitDown(0,0,'')
  814. }
  815. }
  816. else
  817. {
  818. if(this.needCheckConnectGame == true)
  819. {
  820. this.needCheckConnectGame = false
  821. console.log('Gameing reconnect')
  822. cc.sys.localStorage.setItem(Define.ServerInfo,'')
  823. }
  824. if(this.needCheckConnectGameing == true)
  825. {
  826. this.needCheckConnectGameing = false
  827. console.log('Gameing reconnect')
  828. }
  829. this.onEnterTable()
  830. this.sendGameOption();
  831. }
  832. this.m_bQuickStart = false
  833. }
  834. //--用户积分
  835. onSocketUserScore(data)
  836. {
  837. console.log("onSocketUserScore")
  838. var readPos = 0
  839. var dataview = new DataView(data)
  840. // var dwUserID = Common.readint64(data,readPos)
  841. // readPos+=8
  842. var dwUserID = dataview.getUint32(readPos,Common.littleEndian)
  843. readPos += 4
  844. var item = this.playerInfoModel.getTablePlayerInfoByUserID(dwUserID)
  845. if(item != null )
  846. { // --更新数据
  847. item.lScore = Common.readint64(data,readPos)
  848. readPos+=8
  849. item.dBeans = dataview.getFloat64(readPos,Common.littleEndian)
  850. readPos+=8
  851. item.dwWinCount = dataview.getUint32(readPos,Common.littleEndian)
  852. readPos += 4
  853. item.dwLostCount = dataview.getUint32(readPos,Common.littleEndian)
  854. readPos += 4
  855. item.dwDrawCount = dataview.getUint32(readPos,Common.littleEndian)
  856. readPos += 4
  857. item.dwFleeCount = dataview.getUint32(readPos,Common.littleEndian)
  858. readPos += 4
  859. item.dwExperience = dataview.getUint32(readPos,Common.littleEndian)
  860. readPos += 4
  861. console.log("更新用户[" + dwUserID+ "][" + item.szNickName+ "][" + item.lScore + "]")
  862. //--自己信息
  863. var selfPlayer = this.playerInfoModel.getSelfTablePlayer()
  864. if (item.dwUserID == selfPlayer.dwUserID && this.IsAllowPlazzScoreChange() )
  865. { console.log("更新金币")
  866. selfPlayer.lUserScore = item.lScore
  867. selfPlayer.dUserBeans = item.dBeans
  868. }
  869. //--通知更新界面
  870. if (this.wTableID != Define.INVALID_TABLE)
  871. {
  872. this.onEventUserScore(item)
  873. }
  874. }
  875. }
  876. //--用户状态
  877. onSocketUserStatus(data)
  878. {
  879. console.log("onSocketUserStatus")
  880. //--读取信息
  881. var readPos = 0;
  882. var dataview = new DataView(data);
  883. //var selfPlayer = this.playerInfoModel.getSelfTablePlayer();
  884. var selfUserID = this.selfUserID
  885. var dwUserID = dataview.getUint32(readPos, Common.littleEndian);
  886. readPos += 4;
  887. var newstatus = {};
  888. newstatus.wTableID = dataview.getUint16(readPos, Common.littleEndian);
  889. readPos += 2;
  890. newstatus.wChairID = dataview.getUint16(readPos, Common.littleEndian);
  891. readPos += 2;
  892. newstatus.cbUserStatus = dataview.getUint8(readPos, Common.littleEndian);
  893. readPos += 1;
  894. cc.log("onSocketUserStatus dwUserID:"+ dwUserID + " Status:" + newstatus.cbUserStatus);
  895. if (newstatus.cbUserStatus == Define.US_LOOKON) {//--过滤观看
  896. console.log("dwUserID:"+ dwUserID + "观战");
  897. return;
  898. }
  899. var bMySelfInfo = (dwUserID == selfUserID);//--自己判断
  900. var useritem = this.playerInfoModel.getTablePlayerInfoByUserID(dwUserID);
  901. if( bMySelfInfo && Define.US_PLAYING == newstatus.cbUserStatus)
  902. {
  903. console.log("游戏状态");
  904. this.onEnterTable();
  905. }
  906. //--找不到用户
  907. if (useritem == null ) {//--当前桌子用户
  908. if (newstatus.wTableID != Define.INVALID_TABLE) {//--虚拟信息
  909. var newitem = new PlayerInfoItem("", "", -1, 0, 0);
  910. newitem.szNickName = "游戏玩家";
  911. newitem.dwUserID = dwUserID;
  912. newitem.cbUserStatus = newstatus.cbUserStatus;
  913. newitem.wTableID = newstatus.wTableID;
  914. newitem.wChairID = newstatus.wChairID;
  915. this.playerInfoModel.setTablePlayerInfo(newitem);
  916. this.onUpDataTableUser(newitem.wTableID, newitem.wChairID, newitem);
  917. //--发送查询
  918. this.QueryUserInfo(newstatus.wTableID, newstatus.wChairID);
  919. }
  920. return;
  921. }
  922. //--记录旧状态
  923. var oldstatus = {};
  924. oldstatus.wTableID = useritem.wTableID;
  925. oldstatus.wChairID = useritem.wChairID;
  926. oldstatus.cbUserStatus = useritem.cbUserStatus;
  927. //--更新信息
  928. useritem.wTableID = newstatus.wTableID;
  929. useritem.wChairID = newstatus.wChairID;
  930. useritem.cbUserStatus = newstatus.cbUserStatus;
  931. this.playerInfoModel.setTablePlayerInfo(useritem);
  932. console.log("newstatus:" + JSON.stringify(newstatus));
  933. console.log("oldstatus:" + JSON.stringify(oldstatus));
  934. //--清除旧桌子椅子记录
  935. if (oldstatus.wTableID != Define.INVALID_TABLE) {
  936. if ((oldstatus.wTableID != newstatus.wTableID) || (oldstatus.wChairID != newstatus.wChairID)) {//--新旧桌子不同
  937. this.onUpDataTableUser(oldstatus.wTableID, oldstatus.wChairID, null);
  938. }
  939. }
  940. //--新桌子记录
  941. if (newstatus.wTableID != Define.INVALID_TABLE) {
  942. this.onUpDataTableUser(newstatus.wTableID, newstatus.wChairID, useritem);
  943. }
  944. // --自己状态
  945. if (bMySelfInfo == true) {
  946. this.wTableID = newstatus.wTableID;
  947. this.wChairID = newstatus.wChairID;
  948. if (newstatus.cbUserStatus == Define.US_NULL) {//--离开
  949. console.log("自己离开")
  950. if (this.bWaitQuit == false) {
  951. this.onExitRoom();
  952. }
  953. this.onEventUserStatus(useritem,newstatus,oldstatus);
  954. } else if ((newstatus.cbUserStatus == Define.US_FREE) && (oldstatus.cbUserStatus > Define.US_FREE)) {//--起立
  955. console.log("自己起立")
  956. // if(this.bSelfExitRoom)
  957. // {
  958. this.onExitTable();
  959. this.onUpDataTableUser(oldstatus.wTableID, oldstatus.wChairID, null);
  960. cc.log('Zhong remove myself tabel info!!!!!')
  961. this.emit(Event.CPT_MSG.SELF_ON_STAND_UP);
  962. this.bSelfExitRoom = false
  963. //}
  964. this.onEventUserStatus(useritem,newstatus,oldstatus);
  965. } else if ((newstatus.cbUserStatus == Define.US_SIT)) {//--坐下
  966. console.log("自己坐下")
  967. this.bChangeDesk = false;
  968. this.onEnterTable();
  969. this.sendGameOption();
  970. this.onEventUserStatus(useritem,newstatus,oldstatus);
  971. } else if ((newstatus.wTableID != Define.INVALID_TABLE) && (this.bChangeDesk == true)) {
  972. console.log("换位");
  973. this.onEnterTable();
  974. this.sendGameOption();
  975. this.onEventUserStatus(useritem,newstatus,oldstatus);
  976. }
  977. else if( Define.US_READY == newstatus.cbUserStatus)
  978. {
  979. console.log("准备");
  980. this.bChangeDesk = false;
  981. this.onEnterTable();
  982. this.sendGameOption();
  983. this.onEventUserStatus(useritem, newstatus, oldstatus);
  984. }
  985. else if( Define.US_MATCH == newstatus.cbUserStatus)
  986. {
  987. console.log("匹配状态");
  988. this.onEnterTable();
  989. this.onEventUserStatus(useritem, newstatus, oldstatus);
  990. }
  991. else if( Define.US_PLAYING == newstatus.cbUserStatus)
  992. {
  993. console.log("游戏状态");
  994. this.onEnterTable();
  995. this.onEventUserStatus(useritem, newstatus, oldstatus);
  996. }
  997. else {
  998. console.log("自己新状态:" + newstatus.cbUserStatus);
  999. this.onEventUserStatus(useritem, newstatus, oldstatus);
  1000. }
  1001. } else {//--他人状态
  1002. //--更新用户
  1003. this.onEventUserStatus(useritem, newstatus, oldstatus);
  1004. if (newstatus.cbUserStatus == Define.US_NULL) {//--删除用户
  1005. this.onRemoveUser(dwUserID);
  1006. }
  1007. }
  1008. cc.log('****************Zhong tabel players:' + JSON.stringify(this._tableUserList));
  1009. }
  1010. //请求失败
  1011. onSocketReQuestFailure(data)
  1012. {
  1013. // game_cmd.CMD_GR_RequestFailure =
  1014. // {
  1015. // {k = "lErrorCode", t = "int"}, --错误代码
  1016. // {k = "szDescribeString", t = "string"} --描述信息
  1017. // }
  1018. var readPos = 0
  1019. var fail = {}
  1020. var dataview = new DataView(data)
  1021. fail.lErrorCode = dataview.getInt32(readPos,Common.littleEndian)
  1022. readPos+=4
  1023. fail.szDescribeString = Common.getString(data,readPos,31*2)
  1024. readPos+=31*2
  1025. console.log('****************onSocketReQuestFailure:' + JSON.stringify(fail));
  1026. this.emit(Event.CPT_MSG.REQUEST_FAILURE_MSG,fail);
  1027. }
  1028. readGameStatus(data)
  1029. {
  1030. var readPos = 0
  1031. var dataview = new DataView(data)
  1032. this.cbGameStatus = dataview.getUint8(readPos,Common.littleEndian)
  1033. readPos+=1
  1034. this.cbAllowLookon = dataview.getUint8(readPos,Common.littleEndian)
  1035. readPos+=1
  1036. }
  1037. readGameScene(data)
  1038. {
  1039. this.onEventGameScene(this.cbGameStatus,data)
  1040. }
  1041. onSocketSystemMessage(data)
  1042. {
  1043. }
  1044. onSocketActionMessage(data)
  1045. {
  1046. }
  1047. onSubGameStart(data) //游戏开始
  1048. {
  1049. this.saveServerInfo()
  1050. // {k = "wStartUser", t = "word"}, --开始玩家
  1051. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1052. // {k = "cbValidCardData", t = "byte"}, --明牌扑克
  1053. // {k = "cbValidCardIndex", t = "byte"}, --明牌位置
  1054. // {k = "cbCardData", t = "byte", l = {cmd.NORMAL_COUNT}}, --扑克列表
  1055. var cards = {}
  1056. var readPos = 0
  1057. var dataview = new DataView(data)
  1058. cards.wStartUser = dataview.getUint16(readPos,Common.littleEndian)
  1059. readPos+=2
  1060. cards.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1061. readPos+=2
  1062. cards.cbValidCardData = dataview.getUint8(readPos,Common.littleEndian)
  1063. readPos+=1
  1064. cards.cbValidCardIndex = dataview.getUint8(readPos,Common.littleEndian)
  1065. readPos+=1
  1066. cards.cbCardData = []
  1067. for (var i = 0 ;i < Define.NORMAL_COUNT; i++)
  1068. {
  1069. var card = dataview.getUint8(readPos,Common.littleEndian)
  1070. readPos+=1
  1071. cards.cbCardData.push(card)
  1072. }
  1073. this.reSetData()
  1074. console.log("onSubGameStart:cards"+ JSON.stringify(cards))
  1075. this.m_bRoundOver = false
  1076. this.handCards = cards;
  1077. this.m_bCallStateEnter= false
  1078. this.emit(Event.CPT_MSG.GAME_START,cards,false);
  1079. }
  1080. saveServerInfo()
  1081. {
  1082. var gameServerItem = this.currentRoomInfo[this.roomIndex]
  1083. var gameserver_addr = gameServerItem.gameserver_addr
  1084. var server_port = gameServerItem.server_port
  1085. var serverInfo = {}
  1086. serverInfo[Define.ServerAddress] = gameserver_addr
  1087. serverInfo[Define.ServerPort] = server_port
  1088. serverInfo[Define.WanFaId] = this.currentWanFaId
  1089. cc.sys.localStorage.setItem(Define.ServerInfo,JSON.stringify(serverInfo));
  1090. }
  1091. onSubCallScore(data) // --用户叫分
  1092. {
  1093. var callScore = {}
  1094. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1095. // {k = "wCallScoreUser", t = "word"}, --叫分玩家
  1096. // {k = "cbCurrentScore", t = "byte"}, --当前叫分
  1097. // {k = "cbUserCallScore", t = "byte"}, --上次叫分
  1098. var readPos = 0
  1099. var dataview = new DataView(data)
  1100. callScore.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1101. readPos+=2
  1102. callScore.wCallScoreUser = dataview.getUint16(readPos,Common.littleEndian)
  1103. readPos+=2
  1104. callScore.cbCurrentScore = dataview.getUint8(readPos,Common.littleEndian)
  1105. readPos+=1
  1106. callScore.cbUserCallScore = dataview.getUint8(readPos,Common.littleEndian)
  1107. console.log("onSubCallScore:"+JSON.stringify( callScore))
  1108. if(callScore.cbCurrentScore > this.callMaxScore)
  1109. {
  1110. this.callMaxScore = callScore.cbCurrentScore
  1111. }
  1112. this.emit(Event.CPT_MSG.CALL_SCORE,callScore.wCurrentUser,callScore.wCallScoreUser,callScore.cbCurrentScore,callScore.cbUserCallScore)
  1113. }
  1114. onSubBankerInfo(data) //--庄家信息
  1115. {
  1116. // {k = "wBankerUser", t = "word"}, --庄家玩家
  1117. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1118. // {k = "cbBankerScore", t = "byte"}, --庄家叫分
  1119. // {k = "cbBankerCard", t = "byte", l = {3}}, --庄家扑克
  1120. var bankerInfo = {}
  1121. var readPos = 0
  1122. var dataview = new DataView(data)
  1123. bankerInfo.wBankerUser = dataview.getUint16(readPos,Common.littleEndian)
  1124. readPos+=2
  1125. bankerInfo.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1126. readPos+=2
  1127. bankerInfo.cbBankerScore = dataview.getUint8(readPos,Common.littleEndian)
  1128. readPos+=1
  1129. bankerInfo.cbBankerCard = []
  1130. for (var i=0;i<3;i++)
  1131. {
  1132. var card = dataview.getUint8(readPos,Common.littleEndian)
  1133. readPos+=1
  1134. bankerInfo.cbBankerCard.push(card)
  1135. }
  1136. console.log("onSubBankerInfo:"+JSON.stringify( bankerInfo))
  1137. this.emit(Event.CPT_MSG.BANKER_INFO,bankerInfo);
  1138. }
  1139. onSubOutCard(data) //--用户出牌
  1140. {
  1141. // --用户出牌
  1142. // cmd.CMD_S_OutCard =
  1143. // {
  1144. // {k = "cbCardCount", t = "byte"}, --出牌数目
  1145. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1146. // {k = "wOutCardUser", t = "word"}, --出牌玩家
  1147. // {k = "cbCardData", t = "byte", l = {cmd.MAX_COUNT}}, --扑克列表
  1148. // }
  1149. var cards = {}
  1150. var readPos = 0
  1151. var dataview = new DataView(data)
  1152. cards.cbCardCount = dataview.getUint8(readPos,Common.littleEndian)
  1153. readPos+=1
  1154. cards.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1155. readPos+=2
  1156. cards.wOutCardUser = dataview.getUint16(readPos,Common.littleEndian)
  1157. readPos+=2
  1158. cards.cbCardData = []
  1159. for (var i = 0 ;i < Define.MAX_COUNT; i++)
  1160. {
  1161. if(i >= cards.cbCardCount)
  1162. {
  1163. break
  1164. }
  1165. var card = dataview.getUint8(readPos,Common.littleEndian)
  1166. readPos+=1
  1167. cards.cbCardData.push(card)
  1168. }
  1169. console.log("onSubOutCard:"+JSON.stringify( cards))
  1170. this.emit(Event.CPT_MSG.OUT_CARD,cards);
  1171. }
  1172. onSubPassCard(data) // --用户放弃
  1173. {
  1174. // --放弃出牌
  1175. // cmd.CMD_S_PassCard =
  1176. // {
  1177. // {k = "cbTurnOver", t = "byte"}, --一轮结束
  1178. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1179. // {k = "wPassCardUser", t = "word"}, --放弃玩家
  1180. // }
  1181. var passCard = {}
  1182. var readPos = 0
  1183. var dataview = new DataView(data)
  1184. passCard.cbTurnOver = dataview.getUint8(readPos,Common.littleEndian)
  1185. readPos+=1
  1186. passCard.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1187. readPos+=2
  1188. passCard.wPassCardUser = dataview.getUint16(readPos,Common.littleEndian)
  1189. readPos+=2
  1190. console.log("onSubPassCard:"+JSON.stringify( passCard))
  1191. this.emit(Event.CPT_MSG.PASS_CARD,passCard);
  1192. }
  1193. onSubGameConclude(data) // --游戏结束
  1194. {
  1195. // --游戏结束
  1196. // cmd.CMD_S_GameConclude =
  1197. // {
  1198. // --积分变量
  1199. // {k = "lCellScore", t = "int"}, --单元积分
  1200. // {k = "lGameScore", t = "score", l = {3}}, --游戏积分
  1201. // --春天标识
  1202. // {k = "bChunTian", t = "byte"}, --春天
  1203. // {k = "bFanChunTian", t = "byte"}, --反春天
  1204. // --炸弹信息
  1205. // {k = "cbBombCount", t = "byte"}, --炸弹个数
  1206. // {k = "cbEachBombCount", t = "byte", l = {cmd.PLAYER_COUNT}},--炸弹个数
  1207. // --游戏信息
  1208. // {k = "cbBankerScore", t = "byte"}, --叫分数目
  1209. // {k = "cbCardCount", t = "byte", l = {cmd.PLAYER_COUNT}}, --扑克数目
  1210. // {k = "cbHandCardData", t = "byte", l = {cmd.FULL_COUNT}}, --扑克列表
  1211. // }
  1212. cc.sys.localStorage.setItem(Define.ServerInfo,'');
  1213. var readPos = 0
  1214. var gameConclude = {}
  1215. var dataview = new DataView(data)
  1216. gameConclude.lCellScore = dataview.getInt32(readPos,Common.littleEndian)
  1217. readPos+=4
  1218. gameConclude.lGameScore = []
  1219. for (var i=0;i<3;i++)
  1220. {
  1221. var score = Common.readint64(data,readPos)
  1222. readPos+=8
  1223. gameConclude.lGameScore.push(score)
  1224. }
  1225. gameConclude.bChunTian = dataview.getUint8(readPos,Common.littleEndian)
  1226. readPos+=1
  1227. gameConclude.bFanChunTian = dataview.getUint8(readPos,Common.littleEndian)
  1228. readPos+=1
  1229. gameConclude.cbBombCount = dataview.getUint8(readPos,Common.littleEndian)
  1230. readPos+=1
  1231. gameConclude.cbEachBombCount = []
  1232. for (var i=0;i<Define.PLAYER_COUNT;i++)
  1233. {
  1234. var bommb = dataview.getUint8(readPos,Common.littleEndian)
  1235. gameConclude.cbEachBombCount.push(bommb)
  1236. readPos+=1
  1237. }
  1238. gameConclude.cbBankerScore = dataview.getUint8(readPos,Common.littleEndian)
  1239. readPos+=1
  1240. gameConclude.cbCardCount = []
  1241. for (var i=0;i<Define.PLAYER_COUNT;i++)
  1242. {
  1243. var card = dataview.getUint8(readPos,Common.littleEndian)
  1244. gameConclude.cbCardCount.push(card)
  1245. readPos+=1
  1246. }
  1247. gameConclude.cbHandCardData = []
  1248. for (var i=0;i<Define.FULL_COUNT;i++)
  1249. {
  1250. var card = dataview.getUint8(readPos,Common.littleEndian)
  1251. gameConclude.cbHandCardData.push(card)
  1252. readPos+=1
  1253. }
  1254. console.log("onSubGameConclude:"+JSON.stringify( gameConclude))
  1255. this.emit(Event.CPT_MSG.GAME_CONCLUDE,gameConclude);
  1256. //this.emit(Event.COM_MSG.UPDATE_BTN_READY,true)
  1257. }
  1258. onEnterRoom()
  1259. {
  1260. //todo enter room ui
  1261. }
  1262. onGetTableInfo()
  1263. {
  1264. this.emit(Event.COM_MSG.ENTER_ROOM)
  1265. }
  1266. upDataTableStatus(wTableID)
  1267. {
  1268. //update table info
  1269. }
  1270. //--更新桌椅用户
  1271. onUpDataTableUser(wTableID, wChairID, userItem) {
  1272. var id = wTableID;
  1273. var idex = wChairID;
  1274. if (!this._tableUserList[id]) {
  1275. this._tableUserList[id] = new Array(this.wChairCount);
  1276. }
  1277. if (userItem) {
  1278. this._tableUserList[id][idex] = userItem.dwUserID;
  1279. } else {
  1280. this._tableUserList[id][idex] = null;
  1281. }
  1282. }
  1283. onRemoveUser(dwUserID)
  1284. {
  1285. this.playerInfoModel.removeTablePlayerInfoByUserID(dwUserID)
  1286. }
  1287. //--获取桌子用户
  1288. getTableUserItem(tableid,chairid)
  1289. {
  1290. var id = tableid
  1291. var idex = chairid
  1292. if (this._tableUserList[id] )
  1293. {
  1294. var userid = this._tableUserList[id][idex]
  1295. if (userid)
  1296. {
  1297. return this.playerInfoModel.getTablePlayerInfoByUserID(userid)
  1298. }
  1299. }
  1300. return null
  1301. }
  1302. getTableInfo(index)
  1303. {
  1304. if (index >= 0 && index < this._tableStatus.length)
  1305. {
  1306. return this._tableStatus[index]
  1307. }
  1308. return null
  1309. }
  1310. //--用户状态
  1311. onEventUserStatus(useritem,newstatus,oldstatus)
  1312. {
  1313. var MyTable = this.GetMeTableID()
  1314. var MyChair = this.GetMeChairID()
  1315. if (( MyTable == null) || (MyTable == Define.INVALID_TABLE)) {
  1316. return
  1317. }
  1318. //--旧的清除
  1319. if (oldstatus.wTableID == MyTable) {
  1320. var viewid = this.SwitchViewChairID(oldstatus.wChairID)
  1321. if (viewid && viewid != Define.INVALID_CHAIR) {
  1322. this.OnUpdateUser(oldstatus.wChairID, null, useritem.cbUserStatus == Define.US_FREE)
  1323. }
  1324. }
  1325. //--更新新状态
  1326. if (newstatus.wTableID == MyTable) {
  1327. var viewid = this.SwitchViewChairID(newstatus.wChairID)
  1328. if (viewid && viewid != Define.INVALID_CHAIR) {
  1329. this.OnUpdateUser(newstatus.wChairID, useritem, false)
  1330. }
  1331. }
  1332. }
  1333. //--用户积分
  1334. onEventUserScore(useritem)
  1335. {
  1336. var MyTable = this.GetMeTableID()
  1337. if (MyTable == null || MyTable == Define.INVALID_TABLE) {
  1338. return
  1339. }
  1340. if (MyTable == useritem.wTableID) {
  1341. var viewid = this.SwitchViewChairID(useritem.wChairID)
  1342. if ((viewid != null) && (viewid != Define.INVALID_CHAIR)) {
  1343. this.OnUpdateUser(useritem.wChairID, useritem, false)
  1344. }
  1345. }
  1346. }
  1347. //--查询用户
  1348. QueryUserInfo(table ,chair)
  1349. {
  1350. console.log("QueryUserInfo")
  1351. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GR_USER,ConstMsgId.SUB_GR_USER_CHAIR_INFO_REQ,4 + 4 + 4,table,chair)
  1352. this._GameProcessManager.sendMsg(msg);
  1353. }
  1354. //--换位请求
  1355. QueryChangeDesk()
  1356. {
  1357. this.bChangeDesk = true
  1358. var msg = MsgTransfer.encodemsg(ConstMsgId.MDM_GR_USER,ConstMsgId.SUB_GR_USER_CHAIR_REQ,4 + 4 )
  1359. this._GameProcessManager.sendMsg(msg);
  1360. }
  1361. //-- 场景信息
  1362. onEventGameScene(cbGameStatus,data)
  1363. {
  1364. console.log("场景数据:" + cbGameStatus)
  1365. this.cbGameStatus = cbGameStatus
  1366. //--初始化已有玩家
  1367. for (var i = 0; i < Define.PLAYER_COUNT; i++) {
  1368. var userItem = this.getTableUserItem(this.GetMeTableID(), i)
  1369. if (null != userItem) {
  1370. var wViewChairId = this.SwitchViewChairID(i)
  1371. this.OnUpdateUser(i, userItem,false)
  1372. }
  1373. }
  1374. if (cbGameStatus == Define.GAME_SCENE_FREE) {
  1375. this.m_bCallStateEnter = false
  1376. // --空闲状态
  1377. this.onEventGameSceneFree(data)
  1378. }
  1379. else if (cbGameStatus == Define.GAME_SCENE_CALL ) // --叫分状态
  1380. {
  1381. this.m_bCallStateEnter = true
  1382. this.saveServerInfo()
  1383. this.onEventGameSceneCall(data)
  1384. }
  1385. else if (cbGameStatus == Define.GAME_SCENE_PLAY ) // --游戏状态
  1386. {
  1387. this.m_bCallStateEnter = false
  1388. this.saveServerInfo()
  1389. this.onEventGameScenePlay(data)
  1390. }
  1391. }
  1392. onEventGameSceneFree( data )
  1393. {
  1394. // --空闲状态
  1395. // cmd.CMD_S_StatusFree =
  1396. // {
  1397. // --游戏属性
  1398. // {k = "lCellScore", t = "int"}, --基础积分
  1399. // --时间信息
  1400. // {k = "cbTimeOutCard", t = "byte"}, --出牌时间
  1401. // {k = "cbTimeCallScore", t = "byte"}, --叫分时间
  1402. // {k = "cbTimeStartGame", t = "byte"}, --开始时间
  1403. // {k = "cbTimeHeadOutCard", t = "byte"}, --首出时间
  1404. // --历史积分
  1405. // {k = "lTurnScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1406. // {k = "lCollectScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1407. // }
  1408. var readPos = 0
  1409. var cmd_table = {}
  1410. var dataview = new DataView(data)
  1411. cmd_table.lCellScore = dataview.getInt32(readPos,Common.littleEndian)
  1412. readPos+=4
  1413. cmd_table.cbTimeOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1414. readPos+=1
  1415. cmd_table.cbTimeCallScore = dataview.getUint8(readPos,Common.littleEndian)
  1416. readPos+=1
  1417. cmd_table.cbTimeStartGame = dataview.getUint8(readPos,Common.littleEndian)
  1418. readPos+=1
  1419. cmd_table.cbTimeHeadOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1420. readPos+=1
  1421. cmd_table.lTurnScore = []
  1422. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1423. {
  1424. var score = Common.readint64(data,readPos)
  1425. readPos+=8
  1426. cmd_table.lTurnScore.push(score)
  1427. }
  1428. cmd_table.lCollectScore = []
  1429. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1430. {
  1431. var score = Common.readint64(data,readPos)
  1432. readPos+=8
  1433. cmd_table.lCollectScore.push(score)
  1434. }
  1435. this.COUNTDOWN_READY = cmd_table.cbTimeStartGame
  1436. this.COUNTDOWN_CALLSCORE = cmd_table.cbTimeCallScore
  1437. this.COUNTDOWN_OUTCARD = cmd_table.cbTimeOutCard
  1438. this.COUNTDOWN_HANDOUTTIME = cmd_table.cbTimeHeadOutCard
  1439. //-- 更新底分
  1440. this.emit(Event.COM_MSG.UPDATE_CELL_SCORE,cmd_table.lCellScore)
  1441. console.log("emit Event.COM_MSG.UPDATE_CELL_SCORE" + cmd_table.lCellScore)
  1442. //self._gameView:onGetCellScore(cmd_table.lCellScore)
  1443. //-- 空闲消息
  1444. // self._gameView:onGetGameFree()
  1445. this.emit(Event.COM_MSG.UPDATE_BTN_READY,true)
  1446. //this.KillGameClock()
  1447. //-- 私人房无倒计时
  1448. // if not GlobalUserItem.bPrivateRoom then
  1449. //-- 设置倒计时
  1450. //this.SetGameClock(this.GetMeChairID(), Define.TAG_COUNTDOWN_READY, this.COUNTDOWN_READY)
  1451. //end
  1452. }
  1453. onEventGameSceneCall( data )
  1454. {
  1455. // --时间信息
  1456. // {k = "cbTimeOutCard", t = "byte"}, --出牌时间
  1457. // {k = "cbTimeCallScore", t = "byte"}, --叫分时间
  1458. // {k = "cbTimeStartGame", t = "byte"}, --开始时间
  1459. // {k = "cbTimeHeadOutCard", t = "byte"}, --首出时间
  1460. // --游戏信息
  1461. // {k = "lCellScore", t = "int"}, --单元积分
  1462. // {k = "wCurrentUser", t = "word"}, --当前玩家
  1463. // {k = "cbBankerScore", t = "byte"}, --庄家叫分
  1464. // {k = "cbScoreInfo", t = "byte", l = {cmd.PLAYER_COUNT}}, --叫分信息
  1465. // {k = "cbHandCardData", t = "byte", l = {cmd.NORMAL_COUNT}}, --手上扑克
  1466. // --历史积分
  1467. // {k = "lTurnScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1468. // {k = "lCollectScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1469. var readPos = 0
  1470. var cmd_table = {}
  1471. var dataview = new DataView(data)
  1472. cmd_table.cbTimeOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1473. readPos+=1
  1474. cmd_table.cbTimeCallScore = dataview.getUint8(readPos,Common.littleEndian)
  1475. readPos+=1
  1476. cmd_table.cbTimeStartGame = dataview.getUint8(readPos,Common.littleEndian)
  1477. readPos+=1
  1478. cmd_table.cbTimeHeadOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1479. readPos+=1
  1480. cmd_table.lCellScore = dataview.getInt32(readPos,Common.littleEndian)
  1481. readPos+=4
  1482. cmd_table.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1483. readPos+=2
  1484. cmd_table.cbBankerScore = dataview.getUint8(readPos,Common.littleEndian)
  1485. readPos+=1
  1486. cmd_table.cbScoreInfo = []
  1487. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1488. {
  1489. var score = dataview.getUint8(readPos,Common.littleEndian)
  1490. readPos+=1
  1491. cmd_table.cbScoreInfo.push(score)
  1492. }
  1493. cmd_table.cbHandCardData = []
  1494. for(var i=0;i<Define.NORMAL_COUNT;i++)
  1495. {
  1496. var card = dataview.getUint8(readPos,Common.littleEndian)
  1497. readPos+=1
  1498. cmd_table.cbHandCardData.push(card)
  1499. }
  1500. cmd_table.lTurnScore = []
  1501. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1502. {
  1503. var score = Common.readint64(data,readPos)
  1504. readPos+=8
  1505. cmd_table.lTurnScore.push(score)
  1506. }
  1507. cmd_table.lCollectScore = []
  1508. for(var i = 0;i < Define.PLAYER_COUNT; i++)
  1509. {
  1510. var score = Common.readint64(data,readPos)
  1511. readPos+=8
  1512. cmd_table.lCollectScore.push(score)
  1513. }
  1514. console.log('onEventGameSceneCall' + JSON.stringify( cmd_table) )
  1515. this.COUNTDOWN_READY = cmd_table.cbTimeStartGame
  1516. this.COUNTDOWN_CALLSCORE = cmd_table.cbTimeCallScore
  1517. this.COUNTDOWN_OUTCARD = cmd_table.cbTimeOutCard
  1518. this.COUNTDOWN_HANDOUTTIME = cmd_table.cbTimeHeadOutCard
  1519. this.m_bRoundOver = false
  1520. var cards = {}
  1521. cards.cbCardData = []
  1522. for (var i = 0 ;i < cmd_table.cbHandCardData.length; i++)
  1523. {
  1524. cards.cbCardData.push(cmd_table.cbHandCardData[i])
  1525. }
  1526. this.reSetData()
  1527. console.log("onEventGameSceneCall:cards"+ JSON.stringify(cards))
  1528. this.handCards = cards;
  1529. this.emit(Event.CPT_MSG.GAME_START,cards,true);
  1530. this.emit(Event.CPT_MSG.GAME_SCENE_CALL,cmd_table)//里面叫分
  1531. }
  1532. onEventGameScenePlay( data )
  1533. {
  1534. // --时间信息
  1535. // {k = "cbTimeOutCard", t = "byte"}, --出牌时间
  1536. // {k = "cbTimeCallScore", t = "byte"}, --叫分时间
  1537. // {k = "cbTimeStartGame", t = "byte"}, --开始时间
  1538. // {k = "cbTimeHeadOutCard", t = "byte"}, --首出时间
  1539. // --游戏变量
  1540. // {k = "lCellScore", t = "int"}, --单元积分
  1541. // {k = "cbBombCount", t = "byte"}, --炸弹次数
  1542. // {k = "wBankerUser", t = "word"}, --庄家用户
  1543. // {k = "wCurrentUser", t = "word"}, --当前庄家
  1544. // {k = "cbBankerScore", t = "byte"}, --庄家叫分
  1545. // --出牌信息
  1546. // {k = "wTurnWiner", t = "word"}, --胜利玩家
  1547. // {k = "cbTurnCardCount", t = "byte"}, --出牌数目
  1548. // {k = "cbTurnCardData", t = "byte", l = {cmd.MAX_COUNT}}, --出牌数据
  1549. // --扑克信息
  1550. // {k = "cbBankerCard", t = "byte", l = {3}}, --游戏底牌
  1551. // {k = "cbHandCardData", t = "byte", l = {cmd.MAX_COUNT}}, --手上扑克
  1552. // {k = "cbHandCardCount", t = "byte", l = {cmd.PLAYER_COUNT}},--扑克数目
  1553. // --历史积分
  1554. // {k = "lTurnScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1555. // {k = "lCollectScore", t = "score", l = {cmd.PLAYER_COUNT}}, --积分信息
  1556. this.reSetData()
  1557. var readPos = 0
  1558. var cmd_table = {}
  1559. var dataview = new DataView(data)
  1560. // --时间信息
  1561. cmd_table.cbTimeOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1562. readPos+=1
  1563. cmd_table.cbTimeCallScore = dataview.getUint8(readPos,Common.littleEndian)
  1564. readPos+=1
  1565. cmd_table.cbTimeStartGame = dataview.getUint8(readPos,Common.littleEndian)
  1566. readPos+=1
  1567. cmd_table.cbTimeHeadOutCard = dataview.getUint8(readPos,Common.littleEndian)
  1568. readPos+=1
  1569. // --游戏变量
  1570. cmd_table.lCellScore = dataview.getInt32(readPos,Common.littleEndian)
  1571. readPos+=4
  1572. cmd_table.cbBombCount = dataview.getUint8(readPos,Common.littleEndian)
  1573. readPos+=1
  1574. cmd_table.wBankerUser = dataview.getUint16(readPos,Common.littleEndian)
  1575. readPos+=2
  1576. cmd_table.wCurrentUser = dataview.getUint16(readPos,Common.littleEndian)
  1577. readPos+=2
  1578. cmd_table.cbBankerScore = dataview.getUint8(readPos,Common.littleEndian)
  1579. readPos+=1
  1580. //--出牌信息
  1581. cmd_table.wTurnWiner = dataview.getUint16(readPos,Common.littleEndian)
  1582. readPos+=2
  1583. cmd_table.cbTurnCardCount = dataview.getUint8(readPos,Common.littleEndian)
  1584. readPos+=1
  1585. cmd_table.cbTurnCardData = []
  1586. for(var i=0; i < Define.MAX_COUNT ;i++)
  1587. {
  1588. var card = dataview.getUint8(readPos,Common.littleEndian)
  1589. readPos+=1
  1590. cmd_table.cbTurnCardData.push(card)
  1591. }
  1592. // --扑克信息
  1593. cmd_table.cbBankerCard = []
  1594. for(var i=0;i< 3;i++)
  1595. {
  1596. var card = dataview.getUint8(readPos,Common.littleEndian)
  1597. readPos+=1
  1598. cmd_table.cbBankerCard.push(card)
  1599. }
  1600. cmd_table.cbHandCardData = []
  1601. for(var i=0;i<Define.MAX_COUNT;i++)
  1602. {
  1603. var card = dataview.getUint8(readPos,Common.littleEndian)
  1604. readPos+=1
  1605. if(card > 0) //0 补位的,不是牌
  1606. {
  1607. cmd_table.cbHandCardData.push(card)
  1608. }
  1609. }
  1610. cmd_table.cbHandCardCount = []
  1611. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1612. {
  1613. var count = dataview.getUint8(readPos,Common.littleEndian)
  1614. readPos+=1
  1615. cmd_table.cbHandCardCount.push(count)
  1616. }
  1617. cmd_table.lTurnScore = []
  1618. for(var i=0;i<Define.PLAYER_COUNT;i++)
  1619. {
  1620. var score = Common.readint64(data,readPos)
  1621. readPos+=8
  1622. cmd_table.lTurnScore.push(score)
  1623. }
  1624. cmd_table.lCollectScore = []
  1625. for(var i = 0;i < Define.PLAYER_COUNT; i++)
  1626. {
  1627. var score = Common.readint64(data,readPos)
  1628. readPos+=8
  1629. cmd_table.lCollectScore.push(score)
  1630. }
  1631. console.log('onEventGameScenePlay' + JSON.stringify( cmd_table) )
  1632. this.COUNTDOWN_READY = cmd_table.cbTimeStartGame
  1633. this.COUNTDOWN_CALLSCORE = cmd_table.cbTimeCallScore
  1634. this.COUNTDOWN_OUTCARD = cmd_table.cbTimeOutCard
  1635. this.COUNTDOWN_HANDOUTTIME = cmd_table.cbTimeHeadOutCard
  1636. this.m_bRoundOver = false
  1637. var cards = {}
  1638. cards.cbCardData = []
  1639. for (var i = 0 ;i < cmd_table.cbHandCardData.length; i++)
  1640. {
  1641. cards.cbCardData.push(cmd_table.cbHandCardData[i])
  1642. }
  1643. console.log("onEventGameScenePlay:cards"+ JSON.stringify(cards))
  1644. this.handCards = cards;
  1645. this.emit(Event.CPT_MSG.GAME_START,cards,true);
  1646. var bankerInfo = {}
  1647. var readPos = 0
  1648. bankerInfo.wBankerUser = cmd_table.wBankerUser
  1649. bankerInfo.wCurrentUser = cmd_table.wCurrentUser
  1650. bankerInfo.cbBankerScore = cmd_table.cbBankerScore
  1651. bankerInfo.cbBankerCard = []
  1652. for(var i=0;i< cmd_table.cbBankerCard.length;i++)
  1653. {
  1654. bankerInfo.cbBankerCard.push(cmd_table.cbBankerCard[i])
  1655. }
  1656. //-- 自己是否庄家
  1657. var bankerView = this.SwitchViewChairID(bankerInfo.wBankerUser)
  1658. this.m_bIsMyBanker = (bankerView === Define.MY_VIEWID)
  1659. console.log("onEventGameScenePlay bankerInfo:"+JSON.stringify( bankerInfo))
  1660. this.emit(Event.CPT_MSG.BANKER_INFO,bankerInfo,true);
  1661. var outCards = {}
  1662. outCards.cbCardCount = cmd_table.cbTurnCardCount
  1663. outCards.wCurrentUser = cmd_table.wCurrentUser
  1664. outCards.wOutCardUser = cmd_table.wTurnWiner
  1665. outCards.cbCardData = []
  1666. for (var i = 0 ;i < cmd_table.cbTurnCardData.length; i++)
  1667. {
  1668. if(i >= outCards.cbCardCount)
  1669. {
  1670. break
  1671. }
  1672. outCards.cbCardData.push(cmd_table.cbTurnCardData[i])
  1673. }
  1674. console.log("onEventGameScenePlay OutCard:"+JSON.stringify( outCards))
  1675. this.emit(Event.CPT_MSG.OUT_CARD,outCards);
  1676. this.emit(Event.CPT_MSG.GAME_SCENE_PLAY,cmd_table)
  1677. }
  1678. //-- 关闭计时器
  1679. KillGameClock(id)
  1680. {
  1681. for (var i=0;i<this.counterInfos.length;i++)
  1682. {
  1683. var info = this.counterInfos[i]
  1684. if(info.id == id)
  1685. {
  1686. this.counterInfos[i].viewId = 0
  1687. this.counterInfos[i].time = 0
  1688. this.counterInfos[i].call = null
  1689. return
  1690. }
  1691. }
  1692. }
  1693. //-- 设置计时器
  1694. SetGameClock(id,chair,time,intvalCall)
  1695. {
  1696. var counterInfo = {}
  1697. counterInfo.id = id
  1698. counterInfo.viewId = this.SwitchViewChairID(chair) - 1
  1699. counterInfo.time = time
  1700. counterInfo.call = intvalCall
  1701. for (var i = 0; i < this.counterInfos.length; i++) {
  1702. var info = this.counterInfos[i]
  1703. if (info.id == id) {
  1704. this.counterInfos[i].viewId = this.SwitchViewChairID(chair) - 1
  1705. this.counterInfos[i].time = time
  1706. this.counterInfos[i].call = intvalCall
  1707. return
  1708. }
  1709. }
  1710. this.counterInfos.push(counterInfo)
  1711. }
  1712. //--用户进入
  1713. onEventUserEnter(tableid,chairid,useritem)
  1714. {
  1715. console.log('onEventUserEnter tableid: ' + tableid + 'chairid:' + 'useritem:' + JSON.stringify(useritem) )
  1716. this.emit(Event.COM_MSG.USER_ENTER,tableid,chairid,useritem)
  1717. }
  1718. setEnterAntiCheatRoom( bEnter )
  1719. {
  1720. this.bEnterAntiCheatRoom = bEnter
  1721. }
  1722. GetTableCount()
  1723. {
  1724. return this.wTableCount
  1725. }
  1726. GetChairCount()
  1727. {
  1728. return this.wChairCount
  1729. }
  1730. GetServerType()
  1731. {
  1732. return this.wServerType
  1733. }
  1734. GetServerRule()
  1735. {
  1736. return this.dwServerRule
  1737. }
  1738. //-- 退出桌子
  1739. onExitTable()
  1740. {
  1741. console.log('BattleBehavior onExitTable')
  1742. this.emit(Event.COM_MSG.EXIT_TABLE)
  1743. this.emit(Event.COM_MSG.SEND_MSG,false,'')
  1744. }
  1745. onExitRoom()
  1746. {
  1747. // self._gameFrame:onCloseSocket()
  1748. // self:stopAllActions()
  1749. // self:KillGameClock()
  1750. // self:dismissPopWait()
  1751. // self._scene:onChangeShowMode(yl.SCENE_ROOMLIST)
  1752. }
  1753. onEnterTable()
  1754. {
  1755. console.log("ClientScene onEnterTable")
  1756. // if PriRoom and GlobalUserItem.bPrivateRoom then
  1757. // -- 动作记录
  1758. // PriRoom:getInstance().m_nLoginAction = PriRoom.L_ACTION.ACT_ENTERTABLE
  1759. // end
  1760. // local tag = self._sceneRecord[#self._sceneRecord]
  1761. // if tag == yl.SCENE_GAME then
  1762. // self._gameFrame:setViewFrame(self._sceneLayer:getChildByTag(yl.SCENE_GAME))
  1763. // else
  1764. // self:onChangeShowMode(yl.SCENE_GAME)
  1765. // end
  1766. ViewManager.replaceView('game')
  1767. }
  1768. //--重置框架
  1769. OnResetGameEngine()
  1770. {
  1771. // self:KillGameClock()
  1772. }
  1773. //-- 返回键处理
  1774. // onKeyBack()
  1775. // self:onQueryExitGame()
  1776. // return true
  1777. // end
  1778. //-- 获取自己椅子
  1779. GetMeChairID()
  1780. {
  1781. return this.wChairID
  1782. }
  1783. //-- 获取自己桌子
  1784. GetMeTableID()
  1785. {
  1786. return this.wTableID
  1787. }
  1788. //-- 获取自己
  1789. GetMeUserItem()
  1790. {
  1791. return this.playerInfoModel.getSelfTablePlayer()
  1792. }
  1793. //-- 椅子号转视图位置,注意椅子号从0~nChairCount-1,返回的视图位置从1~nChairCount
  1794. SwitchViewChairID(chair)
  1795. {
  1796. var viewid = Define.INVALID_CHAIR
  1797. var nChairCount = this.GetChairCount()
  1798. var nChairID = this.GetMeChairID()
  1799. if ((chair != Define.INVALID_CHAIR) && (chair < nChairCount))
  1800. {
  1801. viewid = ((chair + Math.floor(nChairCount * 3/2) - nChairID) % nChairCount) + 1
  1802. }
  1803. return viewid
  1804. }
  1805. IsValidChairID(chair)
  1806. {
  1807. var nChairCount = this.GetChairCount();
  1808. return (chair != Define.INVALID_CHAIR) && (chair >= 0 && chair < nChairCount);
  1809. }
  1810. //-- 是否合法视图id
  1811. IsValidViewID( viewId )
  1812. {
  1813. var nChairCount = this.GetChairCount()
  1814. return (viewId > 0) && (viewId <= nChairCount)
  1815. }
  1816. OnUpdateUser(viewId, userItem, bLeave)
  1817. {
  1818. this.emit(Event.COM_MSG.UPDATE_USER,viewId,userItem,bLeave)
  1819. }
  1820. //--房间取款准许
  1821. OnRoomAllowBankTake()
  1822. {
  1823. return ((this.dwServerRule & 0x00010000) != 0)
  1824. }
  1825. //--房间存款准许
  1826. OnRoomAllowBankSave()
  1827. {
  1828. return ((this.dwServerRule & 0x00040000) != 0)
  1829. }
  1830. //--游戏取款准许
  1831. OnGameAllowBankTake()
  1832. {
  1833. return ((this.dwServerRule & 0x00020000) != 0)
  1834. }
  1835. //--游戏存款准许
  1836. OnGameAllowBankSave()
  1837. {
  1838. return ((this.dwServerRule & 0x00080000) != 0)
  1839. }
  1840. IsAllowAvertCheatMode( )
  1841. {
  1842. return false
  1843. // return ((this.dwServerRule & Define.SR_ALLOW_AVERT_CHEAT_MODE) != 0)
  1844. }
  1845. //--是否更新大厅金币
  1846. IsAllowPlazzScoreChange()
  1847. {
  1848. return (this.wServerType != Define.GAME_GENRE_SCORE) && (this.wServerType != Define.GAME_GENRE_EDUCATE)
  1849. }
  1850. //--游戏赠送准许
  1851. OnGameAllowBankTransfer()
  1852. {
  1853. return false
  1854. }
  1855. loadImage(url,texture)
  1856. {
  1857. cc.loader.load(url, function (err, tex) {
  1858. cc.log('Should load a texture from external url: ' + (tex instanceof cc.Texture2D));
  1859. texture = tex;
  1860. });
  1861. }
  1862. loadData(completeCallback)
  1863. {
  1864. var questions = this.questionInfoModel.getQuestionInfo();
  1865. var resouces = [];
  1866. for (var i = 0; i < questions.length; ++i)
  1867. {
  1868. var question = questions[i];
  1869. var res_url = question.res_name;
  1870. var res_type = question.type;
  1871. if( (res_type==1||res_type==2) && res_url != null && res_url != "")
  1872. {
  1873. resouces.push(res_url);
  1874. }
  1875. }
  1876. cc.loader.load(resouces, function (errors, results)
  1877. {
  1878. if (errors)
  1879. {
  1880. for (var i = 0; i < errors.length; i++)
  1881. {
  1882. cc.log('Error url [' + errors[i] + ']: ' + results.getError(errors[i]));
  1883. }
  1884. }
  1885. for (var i = 0; i < questions.length; ++i)
  1886. {
  1887. var question = questions[i];
  1888. var res_type = question.type;
  1889. var res_url = question.res_name;
  1890. var texture = null;//纹理数据
  1891. this.audioClip = null;//二进制数据
  1892. if(res_type == 1)//图片 下载
  1893. {
  1894. console.log("res_url:"+res_url)
  1895. var texture = results.getContent(res_url);
  1896. question.texture = texture;
  1897. }
  1898. else if(res_type == 2)
  1899. {
  1900. console.log("res_url:"+res_url)
  1901. var audioClip = results.getContent(res_url);
  1902. question.audioClip = audioClip;
  1903. }
  1904. }
  1905. if(completeCallback)
  1906. {
  1907. completeCallback.call();
  1908. }
  1909. });
  1910. }
  1911. onDataLoaded()
  1912. {
  1913. console.log("onDataLoaded complete");
  1914. }
  1915. getGenderByChair(chair) {
  1916. var item = this.playerInfoModel.getTablePlayerInfoByUserID(chair);
  1917. if (item != null ) {
  1918. return item.cbGender;
  1919. } else {
  1920. return 0;
  1921. }
  1922. }
  1923. }