MsgTransfer.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. import ConstMsgId from './ConstMsgId';
  2. import Packet from '../net/Packet';
  3. import Common from '../common/Common'
  4. import Define from '../common/Define';
  5. import DataModelManager from '../framework/DataModelManager';
  6. let MsgTransfer = (
  7. function () {
  8. let encodeLoginMsg = function () {
  9. var playerInfoModel = DataModelManager.getModel('PlayerInfoModel');
  10. var selfUserInfo = playerInfoModel.getSelfWXPlayerInfo();
  11. if (arguments.length <= 2) {
  12. return;
  13. }
  14. var main = arguments[0];
  15. var sub = arguments[1];
  16. var len = arguments[2];
  17. var index = 2;
  18. if (!(main === ConstMsgId.MDM_KN_COMMAND && sub === ConstMsgId.SUB_KN_DETECT_SOCKET)) {
  19. console.log("encodemsg main:" + main + " sub:" + sub + " len:" + len);
  20. }
  21. var cmd_data = new ArrayBuffer(len);
  22. var cmd_view = new DataView(cmd_data);
  23. cmd_view.setUint16(index, len, Common.littleEndian);
  24. index += 2;
  25. cmd_view.setUint16(index, main, Common.littleEndian);
  26. index += 2;
  27. cmd_view.setUint16(index, sub, Common.littleEndian);
  28. index += 2;
  29. if (ConstMsgId.MDM_MB_LOGON === main) {
  30. if (ConstMsgId.SUB_MB_LOGON_WX === sub) {//微信code换openid
  31. var code = arguments[3];
  32. index = Common.putString(index, cmd_view, code);
  33. } else if (ConstMsgId.SUB_MB_LOGON_OTHERPLATFORM === sub) {
  34. if(selfUserInfo == null)
  35. {
  36. console.log("selfUserInfo is null:" );
  37. return;
  38. }
  39. console.log("selfUserInfo Len:" + JSON.stringify(selfUserInfo).length + " " + JSON.stringify(selfUserInfo));
  40. cmd_view.setUint16(index, Define.INVALID_WORD, Common.littleEndian);
  41. index += 2;
  42. cmd_view.setUint32(index, Common.version(7, 2, 0, 1), Common.littleEndian);
  43. index += 4;
  44. cmd_view.setUint8(index, Define.DEVICE_TYPE, Common.littleEndian);
  45. index += 1;
  46. if (CC_WECHATGAME) {
  47. cmd_view.setUint8(index, selfUserInfo.gender, Common.littleEndian);
  48. }
  49. else if(CC_JSB && cc.sys.OS_ANDROID === cc.sys.os)
  50. {
  51. cmd_view.setUint8(index, selfUserInfo.gender, Common.littleEndian);
  52. }
  53. else {
  54. cmd_view.setUint8(index, Define.MYGENDER, Common.littleEndian);
  55. }
  56. index += 1;
  57. cmd_view.setUint8(index, Define.LogonMode.WeChatGame, Common.littleEndian);
  58. index += 1;
  59. index = Common.putString(index, cmd_view, playerInfoModel.getSelfOpenId(), Define.LEN_USER_UIN);
  60. if (CC_WECHATGAME) {
  61. index = Common.putString(index, cmd_view, selfUserInfo.nickName, Define.LEN_NICKNAME);
  62. index = Common.putString(index, cmd_view, selfUserInfo.nickName, Define.LEN_COMPELLATION);
  63. } else if(CC_JSB && cc.sys.OS_ANDROID === cc.sys.os)
  64. {
  65. index = Common.putString(index, cmd_view, selfUserInfo.nickName, Define.LEN_NICKNAME);
  66. index = Common.putString(index, cmd_view, selfUserInfo.nickName, Define.LEN_COMPELLATION);
  67. } else {
  68. index = Common.putString(index, cmd_view, Define.NICKNAME, Define.LEN_NICKNAME);
  69. index = Common.putString(index, cmd_view, Define.NICKNAME, Define.LEN_COMPELLATION);
  70. }
  71. index = Common.putString(index, cmd_view, JSON.stringify(selfUserInfo), Define.LEN_WX_USERINFO);
  72. index = Common.putString(index, cmd_view, Define.MachineId, Define.LEN_MACHINE_ID);
  73. index = Common.putString(index, cmd_view, Define.PhoneNumber, Define.LEN_MOBILE_PHONE);
  74. } else if (ConstMsgId.SUB_MB_LOGON_ACCOUNTS === sub) {
  75. cmd_view.setUint16(index, Define.INVALID_WORD, Common.littleEndian);
  76. index += 2;
  77. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  78. index += 4;
  79. cmd_view.setUint8(index, Define.DEVICE_TYPE, Common.littleEndian);
  80. index += 1;
  81. index = Common.putString(index, cmd_view, Define.MYPASSWORD, Define.LEN_MD5);
  82. index = Common.putString(index, cmd_view, Define.MYACCOUNT, Define.LEN_ACCOUNTS);
  83. index = Common.putString(index, cmd_view, Define.MachineId, Define.LEN_MACHINE_ID);
  84. index = Common.putString(index, cmd_view, Define.PhoneNumber, Define.LEN_MOBILE_PHONE);
  85. }
  86. }else if (ConstMsgId.MDM_GP_LOGON === main) { //封装新的登录结构体
  87. if (ConstMsgId.SUB_GR_LOGON_USERID === sub) {
  88. cc.log("封装新的登录消息结构体")
  89. var id=arguments[3];
  90. id = parseInt(id)
  91. var password=arguments[4];
  92. cc.log("id,password",id,password);
  93. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  94. index += 4;
  95. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  96. index += 4;
  97. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  98. index += 4;
  99. cmd_view.setUint32(index, id, Common.littleEndian);
  100. index += 4;
  101. index = Common.putString(index, cmd_view,password,Define.LEN_MD5);
  102. index = Common.putString(index, cmd_view, Define.MYACCOUNT, Define.LEN_MACHINE_ID);
  103. index = Common.putString(index, cmd_view, Define.MachineId, Define.LEN_MACHINE_ID);
  104. cmd_view.setUint16(index,Define.GAMEID, Common.littleEndian);
  105. index += 2;
  106. }
  107. }
  108. else if (ConstMsgId.MDM_GP_USER_SERVICE === main) {
  109. if (ConstMsgId.SUB_GP_GROWLEVEL_QUERY === sub) {
  110. var playerInfo = playerInfoModel.getSelfPlayerInfo();
  111. cmd_view.setUint32(index, playerInfo.dwUserID, Common.littleEndian);
  112. index += 4;
  113. index = Common.putString(index, cmd_view, Define.MYPASSWORD, Define.LEN_MD5);
  114. index = Common.putString(index, cmd_view, Define.MachineId, Define.LEN_MACHINE_ID);
  115. }
  116. }
  117. return cmd_data;
  118. };
  119. let encodemsg = function () {
  120. var playerInfoModel = DataModelManager.getModel('PlayerInfoModel');
  121. var configData = DataModelManager.getModel('ConfigData');
  122. var gameList = configData.getGameList();
  123. var player = playerInfoModel.getSelfPlayerInfo()
  124. if (arguments.length <= 2) {
  125. return
  126. }
  127. var main = arguments[0]
  128. var sub = arguments[1]
  129. var len = arguments[2]
  130. var index = 2
  131. if (!(main === ConstMsgId.MDM_KN_COMMAND && sub === ConstMsgId.SUB_KN_DETECT_SOCKET)) {
  132. console.log("encodemsg main:" + main + " sub:" + sub + " len:" + len)
  133. }
  134. var cmd_data = new ArrayBuffer(len)
  135. var cmd_view = new DataView(cmd_data)
  136. cmd_view.setUint16(index, len, Common.littleEndian)
  137. index += 2
  138. cmd_view.setUint16(index, main, Common.littleEndian)
  139. index += 2
  140. cmd_view.setUint16(index, sub, Common.littleEndian)
  141. index += 2
  142. if (ConstMsgId.MDM_GR_LOGON === main) {
  143. if (ConstMsgId.SUB_GR_LOGON_MOBILE === sub) {
  144. cmd_view.setUint16(index, Define.GAMEID, Common.littleEndian)
  145. index += 2
  146. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian)
  147. index += 4
  148. cmd_view.setUint8(index, Define.DEVICE_TYPE, Common.littleEndian)
  149. index += 1
  150. cmd_view.setUint16(index, 0x0011, Common.littleEndian)
  151. index += 2
  152. cmd_view.setUint16(index, 255, Common.littleEndian)
  153. index += 2
  154. cmd_view.setUint32(index, player.dwUserID, Common.littleEndian)
  155. index += 4
  156. index = Common.putString(index, cmd_view, player.szDynamicPass, 33)
  157. index = Common.putString(index, cmd_view, player.szRoomPasswd, 33)
  158. //index = Common.putString(index,cmd_view,"A501164B366ECFC9E249163873094D50",33)
  159. index = Common.putString(index, cmd_view, "", 33)
  160. }
  161. else if (ConstMsgId.SUB_GR_LOGON_USERID === sub) {
  162. cc.log("封装新的登录消息结构体")
  163. var id = arguments[3];
  164. id = parseInt(id)
  165. var password=arguments[4];
  166. cc.log("id,password",id,password);
  167. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  168. index += 4;
  169. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  170. index += 4;
  171. cmd_view.setUint32(index, Common.version(6, 7, 0, 1), Common.littleEndian);
  172. index += 4;
  173. cmd_view.setUint32(index, id, Common.littleEndian);
  174. index += 4;
  175. index = Common.putString(index, cmd_view,password,Define.LEN_MD5);
  176. index = Common.putString(index, cmd_view, Define.MYACCOUNT, Define.LEN_MACHINE_ID);
  177. index = Common.putString(index, cmd_view, Define.MachineId, Define.LEN_MACHINE_ID);
  178. cmd_view.setUint16(index,Define.GAMEID, Common.littleEndian);
  179. index += 2;
  180. }
  181. } else if (ConstMsgId.MDM_GR_USER === main) {
  182. if (ConstMsgId.SUB_GR_USER_SITDOWN === sub) {
  183. var table = arguments[3]
  184. var chair = arguments[4]
  185. var password = arguments[5]
  186. cmd_view.setUint16(index, table, Common.littleEndian)
  187. index += 2
  188. cmd_view.setUint16(index, chair, Common.littleEndian)
  189. index += 2
  190. if (password) {
  191. index = Common.putString(index, cmd_view, password, Define.LEN_PASSWORD)
  192. }
  193. } else if (ConstMsgId.SUB_GR_USER_STANDUP === sub) {
  194. var table = arguments[3]
  195. var chair = arguments[4]
  196. var bForce = arguments[5]
  197. cmd_view.setUint16(index, table, Common.littleEndian)
  198. index += 2
  199. cmd_view.setUint16(index, chair, Common.littleEndian)
  200. index += 2
  201. if (bForce === true) {
  202. cmd_view.setUint8(index, 1, Common.littleEndian)
  203. index += 1
  204. } else {
  205. cmd_view.setUint8(index, 0, Common.littleEndian)
  206. index += 1
  207. }
  208. } else if (ConstMsgId.SUB_GR_USER_CHAIR_INFO_REQ === sub) {
  209. var table = arguments[3]
  210. var chair = arguments[4]
  211. cmd_view.setUint16(index, table, Common.littleEndian)
  212. index += 2
  213. cmd_view.setUint16(index, chair, Common.littleEndian)
  214. index += 2
  215. }
  216. } else if (ConstMsgId.MDM_GF_FRAME === main) {
  217. //--场景规则
  218. if (ConstMsgId.SUB_GF_GAME_OPTION === sub) {
  219. cmd_view.setUint8(index, 0, Common.littleEndian)
  220. index += 1
  221. // dataBuffer:pushbyte(0)
  222. // dataBuffer:pushdword(appdf.VersionValue(6,7,0,1))
  223. // dataBuffer:pushdword(self._kindVersion)
  224. cmd_view.setUint32(index, Common.version(7, 2, 0, 1), Common.littleEndian)
  225. index += 4
  226. cmd_view.setUint32(index, Common.version(7, 2, 0, 1), Common.littleEndian)
  227. index += 4
  228. }
  229. } else if (ConstMsgId.MDM_GF_GAME === main) {// game
  230. if (ConstMsgId.SUB_C_CALL_SCORE === sub) {// call score
  231. var score = arguments[3]
  232. cmd_view.setUint8(index, score, Common.littleEndian)
  233. index += 1
  234. } else if (ConstMsgId.SUB_C_OUT_CARD === sub) {
  235. var cards = arguments[3]
  236. var cardcount = cards.length
  237. cmd_view.setUint8(index, cardcount, Common.littleEndian)
  238. index += 1
  239. for (var i = 0; i < cardcount; i++) {
  240. var card = cards[i]
  241. cmd_view.setUint8(index, card, Common.littleEndian)
  242. index += 1
  243. }
  244. }
  245. }
  246. return cmd_data;
  247. };
  248. let decodemsg = function (wMainCmdID, wSubCmdID, buf) {
  249. if (ConstMsgId.MDM_MB_LOGON === wMainCmdID) {
  250. if (ConstMsgId.SUB_MB_LOGON_WX === wSubCmdID) {
  251. }
  252. else if (ConstMsgId.SUB_MB_LOGON_SUCCESS === wSubCmdID) {
  253. }
  254. }
  255. else if (ConstMsgId.MDM_MB_LOGON === wMainCmdID) {
  256. }
  257. };
  258. return {
  259. encodeLoginMsg: encodeLoginMsg,
  260. encodemsg: encodemsg,
  261. decodemsg: decodemsg,
  262. };
  263. }
  264. )();
  265. export default MsgTransfer;