Advertisement
Guest User

Bluegemx

a guest
Jun 15th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 104.72 KB | None | 0 0
  1. http://bluegemx.cf:3000/index.js
  2. HTTP/1.1 200 OK
  3. X-Powered-By: Express
  4. Accept-Ranges: bytes
  5. Cache-Control: public, max-age=0
  6. Last-Modified: Wed, 15 Jun 2016 16:15:45 GMT
  7. ETag: W/"5572-15554d8d78e"
  8. Content-Type: application/javascript
  9. Content-Length: 21874
  10. Date: Wed, 15 Jun 2016 16:18:29 GMT
  11. 00000000: 34 01 00 00 03 00 04 00 33 c2 df c1 e9 93 2e 00 4.......3.......
  12. 00000010: 49 9a e0 c1 e9 93 2e 00 04 01 00 00 48 54 54 50 I...........HTTP
  13. 00000020: 2f 31 2e 31 20 32 30 30 20 4f 4b 00 58 2d 50 6f /1.1 200 OK.X-Po
  14. 00000030: 77 65 72 65 64 2d 42 79 3a 20 45 78 70 72 65 73 wered-By: Expres
  15. 00000040: 73 00 41 63 63 65 70 74 2d 52 61 6e 67 65 73 3a s.Accept-Ranges:
  16. 00000050: 20 62 79 74 65 73 00 43 61 63 68 65 2d 43 6f 6e bytes.Cache-Con
  17. 00000060: 74 72 6f 6c 3a 20 70 75 62 6c 69 63 2c 20 6d 61 trol: public, ma
  18. 00000070: 78 2d 61 67 65 3d 30 00 4c 61 73 74 2d 4d 6f 64 x-age=0.Last-Mod
  19. 00000080: 69 66 69 65 64 3a 20 57 65 64 2c 20 31 35 20 4a ified: Wed, 15 J
  20. 00000090: 75 6e 20 32 30 31 36 20 31 36 3a 31 35 3a 34 35 un 2016 16:15:45
  21. 000000a0: 20 47 4d 54 00 45 54 61 67 3a 20 57 2f 22 35 35 GMT.ETag: W/"55
  22. 000000b0: 37 32 2d 31 35 35 35 34 64 38 64 37 38 65 22 00 72-15554d8d78e".
  23. 000000c0: 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 Content-Type: ap
  24. 000000d0: 70 6c 69 63 61 74 69 6f 6e 2f 6a 61 76 61 73 63 plication/javasc
  25. 000000e0: 72 69 70 74 00 43 6f 6e 74 65 6e 74 2d 4c 65 6e ript.Content-Len
  26. 000000f0: 67 74 68 3a 20 32 31 38 37 34 00 44 61 74 65 3a gth: 21874.Date:
  27. 00000100: 20 57 65 64 2c 20 31 35 20 4a 75 6e 20 32 30 31 Wed, 15 Jun 201
  28. 00000110: 36 20 31 36 3a 31 38 3a 32 39 20 47 4d 54 00 00 6 16:18:29 GMT..
  29. 00000120: 0c 00 00 00 38 34 2e 32 36 2e 31 31 30 2e 32 32 ....84.26.110.22
  30. 00000130: b8 0b 00 00 01 00 00 00 ........
  31. 00000000: 2f 2f 20 47 65 6e 65 72 61 74 65 64 20 62 79 20 // Generated by
  32. 00000010: 43 6f 66 66 65 65 53 63 72 69 70 74 20 31 2e 31 CoffeeScript 1.1
  33. 00000020: 30 2e 30 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 0.0../*.********
  34. 00000030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  35. 00000040: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  36. 00000050: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 47 41 4d *********.** GAM
  37. 00000060: 45 20 49 4e 49 54 49 41 4c 49 53 41 54 49 4f 4e E INITIALISATION
  38. 00000070: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
  39. 00000080: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  40. 00000090: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  41. 000000a0: 2a 2a 0a 20 2a 2f 0a 76 61 72 20 24 2c 20 4b 65 **. */.var $, Ke
  42. 000000b0: 79 73 2c 20 50 6c 61 79 65 72 2c 20 63 68 61 6e ys, Player, chan
  43. 000000c0: 6e 65 6c 73 2c 20 63 68 65 63 6b 50 61 73 73 2c nels, checkPass,
  44. 000000d0: 20 64 65 6c 74 61 54 69 6d 65 2c 20 64 72 61 77 deltaTime, draw
  45. 000000e0: 2c 20 64 72 61 77 5f 64 65 62 75 67 2c 20 65 6d , draw_debug, em
  46. 000000f0: 6f 6a 69 73 2c 20 65 73 63 61 70 65 52 65 67 65 ojis, escapeRege
  47. 00000100: 78 2c 20 67 65 74 55 73 65 72 6e 61 6d 65 43 6f x, getUsernameCo
  48. 00000110: 6f 6b 69 65 2c 20 69 6e 69 74 2c 20 69 6e 69 74 okie, init, init
  49. 00000120: 63 68 61 74 2c 20 69 6e 69 74 67 61 6d 65 2c 20 chat, initgame,
  50. 00000130: 6a 2c 20 6c 61 73 74 55 70 64 61 74 65 2c 20 6c j, lastUpdate, l
  51. 00000140: 65 6e 2c 20 6c 6f 67 69 6e 2c 20 6c 6f 67 6f 75 en, login, logou
  52. 00000150: 74 2c 20 6e 61 6d 65 2c 20 6f 6e 4b 65 79 64 6f t, name, onKeydo
  53. 00000160: 77 6e 2c 20 6f 6e 4b 65 79 75 70 2c 20 6f 6e 4d wn, onKeyup, onM
  54. 00000170: 6f 76 65 50 6c 61 79 65 72 2c 20 6f 6e 4e 65 77 ovePlayer, onNew
  55. 00000180: 50 6c 61 79 65 72 2c 20 6f 6e 52 65 6d 6f 76 65 Player, onRemove
  56. 00000190: 50 6c 61 79 65 72 2c 20 6f 6e 52 65 73 69 7a 65 Player, onResize
  57. 000001a0: 2c 20 6f 6e 53 6f 63 6b 65 74 43 6f 6e 6e 65 63 , onSocketConnec
  58. 000001b0: 74 65 64 2c 20 6f 6e 53 6f 63 6b 65 74 44 69 73 ted, onSocketDis
  59. 000001c0: 63 6f 6e 6e 65 63 74 2c 20 70 61 72 73 65 4d 65 connect, parseMe
  60. 000001d0: 73 73 61 67 65 2c 20 70 6c 61 79 65 72 42 79 49 ssage, playerByI
  61. 000001e0: 64 2c 20 72 65 66 2c 20 72 65 67 69 73 74 65 72 d, ref, register
  62. 000001f0: 2c 20 72 65 6d 6f 76 65 55 73 65 72 6e 61 6d 65 , removeUsername
  63. 00000200: 43 6f 6f 6b 69 65 2c 20 73 61 66 65 2c 20 73 65 Cookie, safe, se
  64. 00000210: 73 73 69 6f 6e 69 64 2c 20 73 65 74 45 76 65 6e ssionid, setEven
  65. 00000220: 74 48 61 6e 64 6c 65 72 73 2c 20 73 65 74 55 73 tHandlers, setUs
  66. 00000230: 65 72 6e 61 6d 65 43 6f 6f 6b 69 65 2c 20 73 65 ernameCookie, se
  67. 00000240: 74 73 74 61 74 75 73 2c 20 73 6f 63 6b 65 74 2c tstatus, socket,
  68. 00000250: 20 74 69 63 6b 2c 20 75 70 64 61 74 65 3b 0a 0a tick, update;..
  69. 00000260: 24 20 3d 20 66 75 6e 63 74 69 6f 6e 28 69 64 29 $ = function(id)
  70. 00000270: 20 7b 0a 20 20 72 65 74 75 72 6e 20 64 6f 63 75 {. return docu
  71. 00000280: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 ment.getElementB
  72. 00000290: 79 49 64 28 69 64 29 3b 0a 7d 3b 0a 0a 69 6e 69 yId(id);.};..ini
  73. 000002a0: 74 67 61 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e tgame = function
  74. 000002b0: 28 29 20 7b 0a 20 20 76 61 72 20 63 61 6d 65 72 () {. var camer
  75. 000002c0: 61 2c 20 63 61 6e 76 61 73 2c 20 63 74 78 2c 20 a, canvas, ctx,
  76. 000002d0: 64 69 76 43 61 6e 76 61 73 2c 20 6b 65 79 73 2c divCanvas, keys,
  77. 000002e0: 20 6c 6f 63 61 6c 50 6c 61 79 65 72 2c 20 6c 6f localPlayer, lo
  78. 000002f0: 63 61 6c 50 6c 61 79 65 72 4e 61 6d 65 2c 20 72 calPlayerName, r
  79. 00000300: 65 6d 6f 74 65 50 6c 61 79 65 72 73 2c 20 72 6f emotePlayers, ro
  80. 00000310: 6f 6d 2c 20 73 6f 63 6b 65 74 2c 20 73 74 61 72 om, socket, star
  81. 00000320: 74 58 2c 20 73 74 61 72 74 59 3b 0a 20 20 63 61 tX, startY;. ca
  82. 00000330: 6e 76 61 73 20 3d 20 24 28 27 67 61 6d 65 43 61 nvas = $('gameCa
  83. 00000340: 6e 76 61 73 27 29 3b 0a 20 20 63 74 78 20 3d 20 nvas');. ctx =
  84. 00000350: 63 61 6e 76 61 73 2e 67 65 74 43 6f 6e 74 65 78 canvas.getContex
  85. 00000360: 74 28 27 32 64 27 29 3b 0a 20 20 64 69 76 43 61 t('2d');. divCa
  86. 00000370: 6e 76 61 73 20 3d 20 64 6f 63 75 6d 65 6e 74 2e nvas = document.
  87. 00000380: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 getElementById('
  88. 00000390: 67 61 6d 65 27 29 3b 0a 20 20 63 61 6e 76 61 73 game');. canvas
  89. 000003a0: 2e 77 69 64 74 68 20 3d 20 64 69 76 43 61 6e 76 .width = divCanv
  90. 000003b0: 61 73 2e 6f 66 66 73 65 74 57 69 64 74 68 20 2d as.offsetWidth -
  91. 000003c0: 20 36 3b 0a 20 20 63 61 6e 76 61 73 2e 68 65 69 6;. canvas.hei
  92. 000003d0: 67 68 74 20 3d 20 64 69 76 43 61 6e 76 61 73 2e ght = divCanvas.
  93. 000003e0: 6f 66 66 73 65 74 48 65 69 67 68 74 20 2d 20 36 offsetHeight - 6
  94. 000003f0: 3b 0a 20 20 6b 65 79 73 20 3d 20 6e 65 77 20 4b ;. keys = new K
  95. 00000400: 65 79 73 3b 0a 20 20 72 6f 6f 6d 20 3d 20 7b 0a eys;. room = {.
  96. 00000410: 20 20 20 20 77 69 64 74 68 3a 20 32 32 30 30 2c width: 2200,
  97. 00000420: 0a 20 20 20 20 68 65 69 67 68 74 3a 20 32 32 30 . height: 220
  98. 00000430: 30 2c 0a 20 20 20 20 6d 61 70 3a 20 6e 65 77 20 0,. map: new
  99. 00000440: 47 61 6d 65 2e 4d 61 70 28 32 32 30 30 2c 20 32 Game.Map(2200, 2
  100. 00000450: 32 30 30 29 0a 20 20 7d 3b 0a 20 20 72 6f 6f 6d 200). };. room
  101. 00000460: 2e 6d 61 70 2e 67 65 6e 65 72 61 74 65 28 29 3b .map.generate();
  102. 00000470: 0a 20 20 73 74 61 72 74 58 20 3d 20 4d 61 74 68 . startX = Math
  103. 00000480: 2e 72 6f 75 6e 64 28 4d 61 74 68 2e 72 61 6e 64 .round(Math.rand
  104. 00000490: 6f 6d 28 29 20 2a 20 28 72 6f 6f 6d 2e 77 69 64 om() * (room.wid
  105. 000004a0: 74 68 20 2d 20 33 32 29 29 3b 0a 20 20 73 74 61 th - 32));. sta
  106. 000004b0: 72 74 59 20 3d 20 4d 61 74 68 2e 72 6f 75 6e 64 rtY = Math.round
  107. 000004c0: 28 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 29 20 2a (Math.random() *
  108. 000004d0: 20 28 72 6f 6f 6d 2e 68 65 69 67 68 74 20 2d 20 (room.height -
  109. 000004e0: 33 32 29 29 3b 0a 20 20 6c 6f 63 61 6c 50 6c 61 32));. localPla
  110. 000004f0: 79 65 72 4e 61 6d 65 20 3d 20 70 72 6f 6d 70 74 yerName = prompt
  111. 00000500: 28 27 50 6c 65 61 73 65 20 65 6e 74 65 72 20 61 ('Please enter a
  112. 00000510: 20 6e 61 6d 65 27 2c 20 27 27 29 3b 0a 20 20 6c name', '');. l
  113. 00000520: 6f 63 61 6c 50 6c 61 79 65 72 20 3d 20 6e 65 77 ocalPlayer = new
  114. 00000530: 20 50 6c 61 79 65 72 28 73 74 61 72 74 58 2c 20 Player(startX,
  115. 00000540: 73 74 61 72 74 59 2c 20 6c 6f 63 61 6c 50 6c 61 startY, localPla
  116. 00000550: 79 65 72 4e 61 6d 65 2c 20 27 62 6c 61 63 6b 27 yerName, 'black'
  117. 00000560: 29 3b 0a 20 20 63 61 6d 65 72 61 20 3d 20 6e 65 );. camera = ne
  118. 00000570: 77 20 47 61 6d 65 2e 43 61 6d 65 72 61 28 30 2c w Game.Camera(0,
  119. 00000580: 20 30 2c 20 63 61 6e 76 61 73 2e 77 69 64 74 68 0, canvas.width
  120. 00000590: 2c 20 63 61 6e 76 61 73 2e 68 65 69 67 68 74 2c , canvas.height,
  121. 000005a0: 20 72 6f 6f 6d 2e 77 69 64 74 68 2c 20 72 6f 6f room.width, roo
  122. 000005b0: 6d 2e 68 65 69 67 68 74 29 3b 0a 20 20 63 61 6d m.height);. cam
  123. 000005c0: 65 72 61 2e 66 6f 6c 6c 6f 77 28 6c 6f 63 61 6c era.follow(local
  124. 000005d0: 50 6c 61 79 65 72 2c 20 63 61 6e 76 61 73 2e 77 Player, canvas.w
  125. 000005e0: 69 64 74 68 20 2f 20 32 2c 20 63 61 6e 76 61 73 idth / 2, canvas
  126. 000005f0: 2e 68 65 69 67 68 74 20 2f 20 32 29 3b 0a 20 20 .height / 2);.
  127. 00000600: 73 6f 63 6b 65 74 20 3d 20 69 6f 2e 63 6f 6e 6e socket = io.conn
  128. 00000610: 65 63 74 28 29 3b 0a 20 20 72 65 6d 6f 74 65 50 ect();. remoteP
  129. 00000620: 6c 61 79 65 72 73 20 3d 20 5b 5d 3b 0a 20 20 73 layers = [];. s
  130. 00000630: 65 74 45 76 65 6e 74 48 61 6e 64 6c 65 72 73 28 etEventHandlers(
  131. 00000640: 29 3b 0a 20 20 72 65 74 75 72 6e 20 77 69 6e 64 );. return wind
  132. 00000650: 6f 77 2e 72 65 71 75 65 73 74 41 6e 69 6d 46 72 ow.requestAnimFr
  133. 00000660: 61 6d 65 28 74 69 63 6b 29 3b 0a 7d 3b 0a 0a 6f ame(tick);.};..o
  134. 00000670: 6e 4b 65 79 64 6f 77 6e 20 3d 20 66 75 6e 63 74 nKeydown = funct
  135. 00000680: 69 6f 6e 28 65 29 20 7b 0a 20 20 69 66 20 28 6c ion(e) {. if (l
  136. 00000690: 6f 63 61 6c 50 6c 61 79 65 72 29 20 7b 0a 20 20 ocalPlayer) {.
  137. 000006a0: 20 20 6b 65 79 73 2e 6f 6e 4b 65 79 44 6f 77 6e keys.onKeyDown
  138. 000006b0: 28 65 29 3b 0a 20 20 7d 0a 7d 3b 0a 0a 6f 6e 4b (e);. }.};..onK
  139. 000006c0: 65 79 75 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28 eyup = function(
  140. 000006d0: 65 29 20 7b 0a 20 20 69 66 20 28 6c 6f 63 61 6c e) {. if (local
  141. 000006e0: 50 6c 61 79 65 72 29 20 7b 0a 20 20 20 20 6b 65 Player) {. ke
  142. 000006f0: 79 73 2e 6f 6e 4b 65 79 55 70 28 65 29 3b 0a 20 ys.onKeyUp(e);.
  143. 00000700: 20 7d 0a 7d 3b 0a 0a 6f 6e 52 65 73 69 7a 65 20 }.};..onResize
  144. 00000710: 3d 20 66 75 6e 63 74 69 6f 6e 28 65 29 20 7b 0a = function(e) {.
  145. 00000720: 20 20 76 61 72 20 63 61 6d 65 72 61 3b 0a 20 20 var camera;.
  146. 00000730: 63 61 6e 76 61 73 2e 77 69 64 74 68 20 3d 20 64 canvas.width = d
  147. 00000740: 69 76 43 61 6e 76 61 73 2e 6f 66 66 73 65 74 57 ivCanvas.offsetW
  148. 00000750: 69 64 74 68 20 2d 20 36 3b 0a 20 20 63 61 6e 76 idth - 6;. canv
  149. 00000760: 61 73 2e 68 65 69 67 68 74 20 3d 20 64 69 76 43 as.height = divC
  150. 00000770: 61 6e 76 61 73 2e 6f 66 66 73 65 74 48 65 69 67 anvas.offsetHeig
  151. 00000780: 68 74 20 2d 20 36 3b 0a 20 20 63 61 6d 65 72 61 ht - 6;. camera
  152. 00000790: 20 3d 20 6e 65 77 20 47 61 6d 65 2e 43 61 6d 65 = new Game.Came
  153. 000007a0: 72 61 28 30 2c 20 30 2c 20 63 61 6e 76 61 73 2e ra(0, 0, canvas.
  154. 000007b0: 77 69 64 74 68 2c 20 63 61 6e 76 61 73 2e 68 65 width, canvas.he
  155. 000007c0: 69 67 68 74 2c 20 72 6f 6f 6d 2e 77 69 64 74 68 ight, room.width
  156. 000007d0: 2c 20 72 6f 6f 6d 2e 68 65 69 67 68 74 29 3b 0a , room.height);.
  157. 000007e0: 20 20 63 61 6d 65 72 61 2e 66 6f 6c 6c 6f 77 28 camera.follow(
  158. 000007f0: 6c 6f 63 61 6c 50 6c 61 79 65 72 2c 20 63 61 6e localPlayer, can
  159. 00000800: 76 61 73 2e 77 69 64 74 68 20 2f 20 32 2c 20 63 vas.width / 2, c
  160. 00000810: 61 6e 76 61 73 2e 68 65 69 67 68 74 20 2f 20 32 anvas.height / 2
  161. 00000820: 29 3b 0a 7d 3b 0a 0a 6f 6e 53 6f 63 6b 65 74 43 );.};..onSocketC
  162. 00000830: 6f 6e 6e 65 63 74 65 64 20 3d 20 66 75 6e 63 74 onnected = funct
  163. 00000840: 69 6f 6e 28 29 20 7b 0a 20 20 63 6f 6e 73 6f 6c ion() {. consol
  164. 00000850: 65 2e 6c 6f 67 28 27 43 6f 6e 6e 65 63 74 65 64 e.log('Connected
  165. 00000860: 20 74 6f 20 73 65 72 76 65 72 27 29 3b 0a 20 20 to server');.
  166. 00000870: 72 65 74 75 72 6e 20 73 6f 63 6b 65 74 2e 65 6d return socket.em
  167. 00000880: 69 74 28 27 6e 65 77 20 70 6c 61 79 65 72 27 2c it('new player',
  168. 00000890: 20 7b 0a 20 20 20 20 78 3a 20 6c 6f 63 61 6c 50 {. x: localP
  169. 000008a0: 6c 61 79 65 72 2e 58 28 29 2c 0a 20 20 20 20 79 layer.X(),. y
  170. 000008b0: 3a 20 6c 6f 63 61 6c 50 6c 61 79 65 72 2e 59 28 : localPlayer.Y(
  171. 000008c0: 29 2c 0a 20 20 20 20 6e 61 6d 65 3a 20 6c 6f 63 ),. name: loc
  172. 000008d0: 61 6c 50 6c 61 79 65 72 4e 61 6d 65 0a 20 20 7d alPlayerName. }
  173. 000008e0: 29 3b 0a 7d 3b 0a 0a 6f 6e 53 6f 63 6b 65 74 44 );.};..onSocketD
  174. 000008f0: 69 73 63 6f 6e 6e 65 63 74 20 3d 20 66 75 6e 63 isconnect = func
  175. 00000900: 74 69 6f 6e 28 29 20 7b 0a 20 20 72 65 74 75 72 tion() {. retur
  176. 00000910: 6e 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 44 n console.log('D
  177. 00000920: 69 73 63 6f 6e 6e 65 63 74 65 64 20 66 72 6f 6d isconnected from
  178. 00000930: 20 73 65 72 76 65 72 27 29 3b 0a 7d 3b 0a 0a 6f server');.};..o
  179. 00000940: 6e 4e 65 77 50 6c 61 79 65 72 20 3d 20 66 75 6e nNewPlayer = fun
  180. 00000950: 63 74 69 6f 6e 28 64 61 74 61 29 20 7b 0a 20 20 ction(data) {.
  181. 00000960: 76 61 72 20 6e 65 77 50 6c 61 79 65 72 3b 0a 20 var newPlayer;.
  182. 00000970: 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 4e 65 console.log('Ne
  183. 00000980: 77 20 70 6c 61 79 65 72 20 63 6f 6e 6e 65 63 74 w player connect
  184. 00000990: 65 64 3a 20 27 20 2b 20 64 61 74 61 2e 69 64 29 ed: ' + data.id)
  185. 000009a0: 3b 0a 20 20 6e 65 77 50 6c 61 79 65 72 20 3d 20 ;. newPlayer =
  186. 000009b0: 6e 65 77 20 50 6c 61 79 65 72 28 64 61 74 61 2e new Player(data.
  187. 000009c0: 78 2c 20 64 61 74 61 2e 79 2c 20 64 61 74 61 2e x, data.y, data.
  188. 000009d0: 6e 61 6d 65 29 3b 0a 20 20 6e 65 77 50 6c 61 79 name);. newPlay
  189. 000009e0: 65 72 2e 69 64 20 3d 20 64 61 74 61 2e 69 64 3b er.id = data.id;
  190. 000009f0: 0a 20 20 6e 65 77 50 6c 61 79 65 72 2e 6e 61 6d . newPlayer.nam
  191. 00000a00: 65 20 3d 20 64 61 74 61 2e 6e 61 6d 65 3b 0a 20 e = data.name;.
  192. 00000a10: 20 6e 65 77 50 6c 61 79 65 72 2e 78 20 3d 20 6e newPlayer.x = n
  193. 00000a20: 65 77 50 6c 61 79 65 72 2e 58 28 29 3b 0a 20 20 ewPlayer.X();.
  194. 00000a30: 6e 65 77 50 6c 61 79 65 72 2e 79 20 3d 20 6e 65 newPlayer.y = ne
  195. 00000a40: 77 50 6c 61 79 65 72 2e 59 28 29 3b 0a 20 20 72 wPlayer.Y();. r
  196. 00000a50: 65 74 75 72 6e 20 72 65 6d 6f 74 65 50 6c 61 79 eturn remotePlay
  197. 00000a60: 65 72 73 2e 70 75 73 68 28 6e 65 77 50 6c 61 79 ers.push(newPlay
  198. 00000a70: 65 72 29 3b 0a 7d 3b 0a 0a 6f 6e 4d 6f 76 65 50 er);.};..onMoveP
  199. 00000a80: 6c 61 79 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e layer = function
  200. 00000a90: 28 64 61 74 61 29 20 7b 0a 20 20 76 61 72 20 6d (data) {. var m
  201. 00000aa0: 6f 76 65 50 6c 61 79 65 72 3b 0a 20 20 6d 6f 76 ovePlayer;. mov
  202. 00000ab0: 65 50 6c 61 79 65 72 20 3d 20 70 6c 61 79 65 72 ePlayer = player
  203. 00000ac0: 42 79 49 64 28 64 61 74 61 2e 69 64 29 3b 0a 20 ById(data.id);.
  204. 00000ad0: 20 69 66 20 28 21 6d 6f 76 65 50 6c 61 79 65 72 if (!movePlayer
  205. 00000ae0: 29 20 7b 0a 20 20 20 20 63 6f 6e 73 6f 6c 65 2e ) {. console.
  206. 00000af0: 6c 6f 67 28 27 50 6c 61 79 65 72 20 6e 6f 74 20 log('Player not
  207. 00000b00: 66 6f 75 6e 64 3a 20 27 20 2b 20 64 61 74 61 2e found: ' + data.
  208. 00000b10: 69 64 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 3b id);. return;
  209. 00000b20: 0a 20 20 7d 0a 20 20 6d 6f 76 65 50 6c 61 79 65 . }. movePlaye
  210. 00000b30: 72 2e 78 20 3d 20 64 61 74 61 2e 78 3b 0a 20 20 r.x = data.x;.
  211. 00000b40: 72 65 74 75 72 6e 20 6d 6f 76 65 50 6c 61 79 65 return movePlaye
  212. 00000b50: 72 2e 79 20 3d 20 64 61 74 61 2e 79 3b 0a 7d 3b r.y = data.y;.};
  213. 00000b60: 0a 0a 6f 6e 52 65 6d 6f 76 65 50 6c 61 79 65 72 ..onRemovePlayer
  214. 00000b70: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 64 61 74 61 = function(data
  215. 00000b80: 29 20 7b 0a 20 20 76 61 72 20 72 65 6d 6f 76 65 ) {. var remove
  216. 00000b90: 50 6c 61 79 65 72 3b 0a 20 20 72 65 6d 6f 76 65 Player;. remove
  217. 00000ba0: 50 6c 61 79 65 72 20 3d 20 70 6c 61 79 65 72 42 Player = playerB
  218. 00000bb0: 79 49 64 28 64 61 74 61 2e 69 64 29 3b 0a 20 20 yId(data.id);.
  219. 00000bc0: 69 66 20 28 21 72 65 6d 6f 76 65 50 6c 61 79 65 if (!removePlaye
  220. 00000bd0: 72 29 20 7b 0a 20 20 20 20 63 6f 6e 73 6f 6c 65 r) {. console
  221. 00000be0: 2e 6c 6f 67 28 27 50 6c 61 79 65 72 20 6e 6f 74 .log('Player not
  222. 00000bf0: 20 66 6f 75 6e 64 3a 20 27 20 2b 20 64 61 74 61 found: ' + data
  223. 00000c00: 2e 69 64 29 3b 0a 20 20 20 20 72 65 74 75 72 6e .id);. return
  224. 00000c10: 3b 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 72 ;. }. return r
  225. 00000c20: 65 6d 6f 74 65 50 6c 61 79 65 72 73 2e 73 70 6c emotePlayers.spl
  226. 00000c30: 69 63 65 28 72 65 6d 6f 74 65 50 6c 61 79 65 72 ice(remotePlayer
  227. 00000c40: 73 2e 69 6e 64 65 78 4f 66 28 72 65 6d 6f 76 65 s.indexOf(remove
  228. 00000c50: 50 6c 61 79 65 72 29 2c 20 31 29 3b 0a 7d 3b 0a Player), 1);.};.
  229. 00000c60: 0a 74 69 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e .tick = function
  230. 00000c70: 28 29 20 7b 0a 20 20 76 61 72 20 64 65 6c 74 61 () {. var delta
  231. 00000c80: 54 69 6d 65 2c 20 6c 61 73 74 55 70 64 61 74 65 Time, lastUpdate
  232. 00000c90: 2c 20 6e 6f 77 3b 0a 20 20 6e 6f 77 20 3d 20 44 , now;. now = D
  233. 00000ca0: 61 74 65 2e 6e 6f 77 28 29 3b 0a 20 20 64 65 6c ate.now();. del
  234. 00000cb0: 74 61 54 69 6d 65 20 3d 20 6e 6f 77 20 2d 20 6c taTime = now - l
  235. 00000cc0: 61 73 74 55 70 64 61 74 65 3b 0a 20 20 6c 61 73 astUpdate;. las
  236. 00000cd0: 74 55 70 64 61 74 65 20 3d 20 6e 6f 77 3b 0a 20 tUpdate = now;.
  237. 00000ce0: 20 75 70 64 61 74 65 28 29 3b 0a 20 20 64 72 61 update();. dra
  238. 00000cf0: 77 28 29 3b 0a 20 20 72 65 74 75 72 6e 20 77 69 w();. return wi
  239. 00000d00: 6e 64 6f 77 2e 72 65 71 75 65 73 74 41 6e 69 6d ndow.requestAnim
  240. 00000d10: 46 72 61 6d 65 28 74 69 63 6b 29 3b 0a 7d 3b 0a Frame(tick);.};.
  241. 00000d20: 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ../*.***********
  242. 00000d30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  243. 00000d40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  244. 00000d50: 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 47 41 4d 45 20 55 ******.** GAME U
  245. 00000d60: 50 44 41 54 45 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a PDATE.**********
  246. 00000d70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  247. 00000d80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  248. 00000d90: 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a 75 70 64 *******. */..upd
  249. 00000da0: 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 ate = function()
  250. 00000db0: 20 7b 0a 20 20 69 66 20 28 6c 6f 63 61 6c 50 6c {. if (localPl
  251. 00000dc0: 61 79 65 72 2e 75 70 64 61 74 65 28 6b 65 79 73 ayer.update(keys
  252. 00000dd0: 29 29 20 7b 0a 20 20 20 20 73 6f 63 6b 65 74 2e )) {. socket.
  253. 00000de0: 65 6d 69 74 28 27 6d 6f 76 65 20 70 6c 61 79 65 emit('move playe
  254. 00000df0: 72 27 2c 20 7b 0a 20 20 20 20 20 20 78 3a 20 6c r', {. x: l
  255. 00000e00: 6f 63 61 6c 50 6c 61 79 65 72 2e 58 28 29 2c 0a ocalPlayer.X(),.
  256. 00000e10: 20 20 20 20 20 20 79 3a 20 6c 6f 63 61 6c 50 6c y: localPl
  257. 00000e20: 61 79 65 72 2e 59 28 29 0a 20 20 20 20 7d 29 3b ayer.Y(). });
  258. 00000e30: 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 63 61 . }. return ca
  259. 00000e40: 6d 65 72 61 2e 75 70 64 61 74 65 28 29 3b 0a 7d mera.update();.}
  260. 00000e50: 3b 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;.../*.*********
  261. 00000e60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  262. 00000e70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  263. 00000e80: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 47 41 4d 45 ********.** GAME
  264. 00000e90: 20 44 52 41 57 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a DRAW.**********
  265. 00000ea0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  266. 00000eb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  267. 00000ec0: 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a 64 72 61 *******. */..dra
  268. 00000ed0: 77 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b w = function() {
  269. 00000ee0: 0a 20 20 76 61 72 20 6a 2c 20 6c 65 6e 2c 20 70 . var j, len, p
  270. 00000ef0: 3b 0a 20 20 63 74 78 2e 63 6c 65 61 72 52 65 63 ;. ctx.clearRec
  271. 00000f00: 74 28 30 2c 20 30 2c 20 63 61 6e 76 61 73 2e 77 t(0, 0, canvas.w
  272. 00000f10: 69 64 74 68 2c 20 63 61 6e 76 61 73 2e 68 65 69 idth, canvas.hei
  273. 00000f20: 67 68 74 29 3b 0a 20 20 72 6f 6f 6d 2e 6d 61 70 ght);. room.map
  274. 00000f30: 2e 64 72 61 77 28 63 74 78 2c 20 63 61 6d 65 72 .draw(ctx, camer
  275. 00000f40: 61 2e 78 56 69 65 77 2c 20 63 61 6d 65 72 61 2e a.xView, camera.
  276. 00000f50: 79 56 69 65 77 29 3b 0a 20 20 66 6f 72 20 28 6a yView);. for (j
  277. 00000f60: 20 3d 20 30 2c 20 6c 65 6e 20 3d 20 72 65 6d 6f = 0, len = remo
  278. 00000f70: 74 65 50 6c 61 79 65 72 73 2e 6c 65 6e 67 74 68 tePlayers.length
  279. 00000f80: 3b 20 6a 20 3c 20 6c 65 6e 3b 20 6a 2b 2b 29 20 ; j < len; j++)
  280. 00000f90: 7b 0a 20 20 20 20 70 20 3d 20 72 65 6d 6f 74 65 {. p = remote
  281. 00000fa0: 50 6c 61 79 65 72 73 5b 6a 5d 3b 0a 20 20 20 20 Players[j];.
  282. 00000fb0: 70 2e 64 72 61 77 28 63 74 78 2c 20 63 61 6d 65 p.draw(ctx, came
  283. 00000fc0: 72 61 2e 78 56 69 65 77 2c 20 63 61 6d 65 72 61 ra.xView, camera
  284. 00000fd0: 2e 79 56 69 65 77 29 3b 0a 20 20 7d 0a 20 20 6c .yView);. }. l
  285. 00000fe0: 6f 63 61 6c 50 6c 61 79 65 72 2e 64 72 61 77 28 ocalPlayer.draw(
  286. 00000ff0: 63 74 78 2c 20 63 61 6d 65 72 61 2e 78 56 69 65 ctx, camera.xVie
  287. 00001000: 77 2c 20 63 61 6d 65 72 61 2e 79 56 69 65 77 29 w, camera.yView)
  288. 00001010: 3b 0a 20 20 72 65 74 75 72 6e 20 64 72 61 77 5f ;. return draw_
  289. 00001020: 64 65 62 75 67 28 63 74 78 2c 20 63 61 6d 65 72 debug(ctx, camer
  290. 00001030: 61 2e 77 56 69 65 77 2c 20 63 61 6d 65 72 61 2e a.wView, camera.
  291. 00001040: 68 56 69 65 77 29 3b 0a 7d 3b 0a 0a 0a 2f 2a 0a hView);.};.../*.
  292. 00001050: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  293. 00001060: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  294. 00001070: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  295. 00001080: 2a 0a 2a 2a 20 47 41 4d 45 20 50 4c 41 59 45 52 *.** GAME PLAYER
  296. 00001090: 20 53 45 4c 45 43 54 4f 52 0a 2a 2a 2a 2a 2a 2a SELECTOR.******
  297. 000010a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  298. 000010b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  299. 000010c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a ***********. */.
  300. 000010d0: 0a 70 6c 61 79 65 72 42 79 49 64 20 3d 20 66 75 .playerById = fu
  301. 000010e0: 6e 63 74 69 6f 6e 28 69 64 29 20 7b 0a 20 20 76 nction(id) {. v
  302. 000010f0: 61 72 20 6a 2c 20 6c 65 6e 2c 20 70 3b 0a 20 20 ar j, len, p;.
  303. 00001100: 66 6f 72 20 28 6a 20 3d 20 30 2c 20 6c 65 6e 20 for (j = 0, len
  304. 00001110: 3d 20 72 65 6d 6f 74 65 50 6c 61 79 65 72 73 2e = remotePlayers.
  305. 00001120: 6c 65 6e 67 74 68 3b 20 6a 20 3c 20 6c 65 6e 3b length; j < len;
  306. 00001130: 20 6a 2b 2b 29 20 7b 0a 20 20 20 20 70 20 3d 20 j++) {. p =
  307. 00001140: 72 65 6d 6f 74 65 50 6c 61 79 65 72 73 5b 6a 5d remotePlayers[j]
  308. 00001150: 3b 0a 20 20 20 20 69 66 20 28 70 2e 69 64 20 3d ;. if (p.id =
  309. 00001160: 3d 3d 20 69 64 29 20 7b 0a 20 20 20 20 20 20 72 == id) {. r
  310. 00001170: 65 74 75 72 6e 20 70 3b 0a 20 20 20 20 7d 0a 20 eturn p;. }.
  311. 00001180: 20 7d 0a 20 20 72 65 74 75 72 6e 20 66 61 6c 73 }. return fals
  312. 00001190: 65 3b 0a 7d 3b 0a 0a 77 69 6e 64 6f 77 2e 72 65 e;.};..window.re
  313. 000011a0: 71 75 65 73 74 41 6e 69 6d 46 72 61 6d 65 20 3d questAnimFrame =
  314. 000011b0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 function() {.
  315. 000011c0: 72 65 74 75 72 6e 20 77 69 6e 64 6f 77 2e 72 65 return window.re
  316. 000011d0: 71 75 65 73 74 41 6e 69 6d 61 74 69 6f 6e 46 72 questAnimationFr
  317. 000011e0: 61 6d 65 20 7c 7c 20 77 69 6e 64 6f 77 2e 77 65 ame || window.we
  318. 000011f0: 62 6b 69 74 52 65 71 75 65 73 74 41 6e 69 6d 61 bkitRequestAnima
  319. 00001200: 74 69 6f 6e 46 72 61 6d 65 20 7c 7c 20 77 69 6e tionFrame || win
  320. 00001210: 64 6f 77 2e 6d 6f 7a 52 65 71 75 65 73 74 41 6e dow.mozRequestAn
  321. 00001220: 69 6d 61 74 69 6f 6e 46 72 61 6d 65 20 7c 7c 20 imationFrame ||
  322. 00001230: 77 69 6e 64 6f 77 2e 6f 52 65 71 75 65 73 74 41 window.oRequestA
  323. 00001240: 6e 69 6d 61 74 69 6f 6e 46 72 61 6d 65 20 7c 7c nimationFrame ||
  324. 00001250: 20 77 69 6e 64 6f 77 2e 6d 73 52 65 71 75 65 73 window.msReques
  325. 00001260: 74 41 6e 69 6d 61 74 69 6f 6e 46 72 61 6d 65 20 tAnimationFrame
  326. 00001270: 7c 7c 20 66 75 6e 63 74 69 6f 6e 28 63 61 6c 6c || function(call
  327. 00001280: 62 61 63 6b 2c 20 65 6c 65 6d 65 6e 74 29 20 7b back, element) {
  328. 00001290: 0a 20 20 20 20 72 65 74 75 72 6e 20 77 69 6e 64 . return wind
  329. 000012a0: 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74 28 63 61 ow.setTimeout(ca
  330. 000012b0: 6c 6c 62 61 63 6b 2c 20 31 30 30 30 20 2f 20 36 llback, 1000 / 6
  331. 000012c0: 30 29 3b 0a 20 20 7d 3b 0a 7d 3b 0a 0a 77 69 6e 0);. };.};..win
  332. 000012d0: 64 6f 77 2e 47 61 6d 65 20 3d 20 7b 7d 3b 0a 0a dow.Game = {};..
  333. 000012e0: 77 69 6e 64 6f 77 2e 72 65 6d 6f 76 65 44 65 63 window.removeDec
  334. 000012f0: 69 6d 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 28 imal = function(
  335. 00001300: 78 29 20 7b 0a 20 20 72 65 74 75 72 6e 20 7e 7e x) {. return ~~
  336. 00001310: 78 3b 0a 7d 3b 0a 0a 28 66 75 6e 63 74 69 6f 6e x;.};..(function
  337. 00001320: 28 29 20 7b 0a 20 20 76 61 72 20 52 65 63 74 61 () {. var Recta
  338. 00001330: 6e 67 6c 65 3b 0a 20 20 52 65 63 74 61 6e 67 6c ngle;. Rectangl
  339. 00001340: 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 6c 65 66 e = function(lef
  340. 00001350: 74 2c 20 74 6f 70 2c 20 77 69 64 74 68 2c 20 68 t, top, width, h
  341. 00001360: 65 69 67 68 74 29 20 7b 0a 20 20 20 20 69 66 20 eight) {. if
  342. 00001370: 28 6c 65 66 74 20 3d 3d 20 6e 75 6c 6c 29 20 7b (left == null) {
  343. 00001380: 0a 20 20 20 20 20 20 6c 65 66 74 20 3d 20 30 3b . left = 0;
  344. 00001390: 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 74 . }. if (t
  345. 000013a0: 6f 70 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 op == null) {.
  346. 000013b0: 20 20 20 20 74 6f 70 20 3d 20 30 3b 0a 20 20 20 top = 0;.
  347. 000013c0: 20 7d 0a 20 20 20 20 69 66 20 28 77 69 64 74 68 }. if (width
  348. 000013d0: 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 == null) {.
  349. 000013e0: 20 20 77 69 64 74 68 20 3d 20 30 3b 0a 20 20 20 width = 0;.
  350. 000013f0: 20 7d 0a 20 20 20 20 69 66 20 28 68 65 69 67 68 }. if (heigh
  351. 00001400: 74 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 t == null) {.
  352. 00001410: 20 20 20 68 65 69 67 68 74 20 3d 20 30 3b 0a 20 height = 0;.
  353. 00001420: 20 20 20 7d 0a 20 20 20 20 74 68 69 73 2e 6c 65 }. this.le
  354. 00001430: 66 74 20 3d 20 6c 65 66 74 3b 0a 20 20 20 20 74 ft = left;. t
  355. 00001440: 68 69 73 2e 74 6f 70 20 3d 20 74 6f 70 3b 0a 20 his.top = top;.
  356. 00001450: 20 20 20 74 68 69 73 2e 77 69 64 74 68 20 3d 20 this.width =
  357. 00001460: 77 69 64 74 68 3b 0a 20 20 20 20 74 68 69 73 2e width;. this.
  358. 00001470: 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 3b height = height;
  359. 00001480: 0a 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 20 . this.right
  360. 00001490: 3d 20 74 68 69 73 2e 6c 65 66 74 20 2b 20 74 68 = this.left + th
  361. 000014a0: 69 73 2e 77 69 64 74 68 3b 0a 20 20 20 20 74 68 is.width;. th
  362. 000014b0: 69 73 2e 62 6f 74 74 6f 6d 20 3d 20 74 68 69 73 is.bottom = this
  363. 000014c0: 2e 74 6f 70 20 2b 20 74 68 69 73 2e 68 65 69 67 .top + this.heig
  364. 000014d0: 68 74 3b 0a 20 20 7d 3b 0a 20 20 52 65 63 74 61 ht;. };. Recta
  365. 000014e0: 6e 67 6c 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 ngle.prototype.s
  366. 000014f0: 65 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 6c 65 et = function(le
  367. 00001500: 66 74 2c 20 74 6f 70 2c 20 77 69 64 74 68 2c 20 ft, top, width,
  368. 00001510: 68 65 69 67 68 74 29 20 7b 0a 20 20 20 20 69 66 height) {. if
  369. 00001520: 20 28 77 69 64 74 68 20 3d 3d 20 6e 75 6c 6c 29 (width == null)
  370. 00001530: 20 7b 0a 20 20 20 20 20 20 77 69 64 74 68 20 3d {. width =
  371. 00001540: 20 74 68 69 73 2e 77 69 64 74 68 3b 0a 20 20 20 this.width;.
  372. 00001550: 20 7d 0a 20 20 20 20 69 66 20 28 68 65 69 67 68 }. if (heigh
  373. 00001560: 74 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 t == null) {.
  374. 00001570: 20 20 20 68 65 69 67 68 74 20 3d 20 74 68 69 73 height = this
  375. 00001580: 2e 68 65 69 67 68 74 3b 0a 20 20 20 20 7d 0a 20 .height;. }.
  376. 00001590: 20 20 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6c this.left = l
  377. 000015a0: 65 66 74 3b 0a 20 20 20 20 74 68 69 73 2e 74 6f eft;. this.to
  378. 000015b0: 70 20 3d 20 74 6f 70 3b 0a 20 20 20 20 74 68 69 p = top;. thi
  379. 000015c0: 73 2e 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b s.width = width;
  380. 000015d0: 0a 20 20 20 20 74 68 69 73 2e 68 65 69 67 68 74 . this.height
  381. 000015e0: 20 3d 20 68 65 69 67 68 74 3b 0a 20 20 20 20 74 = height;. t
  382. 000015f0: 68 69 73 2e 72 69 67 68 74 20 3d 20 74 68 69 73 his.right = this
  383. 00001600: 2e 6c 65 66 74 20 2b 20 74 68 69 73 2e 77 69 64 .left + this.wid
  384. 00001610: 74 68 3b 0a 20 20 20 20 74 68 69 73 2e 62 6f 74 th;. this.bot
  385. 00001620: 74 6f 6d 20 3d 20 74 68 69 73 2e 74 6f 70 20 2b tom = this.top +
  386. 00001630: 20 74 68 69 73 2e 68 65 69 67 68 74 3b 0a 20 20 this.height;.
  387. 00001640: 7d 3b 0a 20 20 52 65 63 74 61 6e 67 6c 65 2e 70 };. Rectangle.p
  388. 00001650: 72 6f 74 6f 74 79 70 65 2e 77 69 74 68 69 6e 20 rototype.within
  389. 00001660: 3d 20 66 75 6e 63 74 69 6f 6e 28 72 29 20 7b 0a = function(r) {.
  390. 00001670: 20 20 20 20 72 65 74 75 72 6e 20 28 72 2e 6c 65 return (r.le
  391. 00001680: 66 74 20 3c 3d 20 74 68 69 73 2e 6c 65 66 74 29 ft <= this.left)
  392. 00001690: 20 26 26 20 28 72 2e 72 69 67 68 74 20 3e 3d 20 && (r.right >=
  393. 000016a0: 74 68 69 73 2e 72 69 67 68 74 29 20 26 26 20 28 this.right) && (
  394. 000016b0: 72 2e 74 6f 70 20 3c 3d 20 74 68 69 73 2e 74 6f r.top <= this.to
  395. 000016c0: 70 29 20 26 26 20 28 72 2e 62 6f 74 74 6f 6d 20 p) && (r.bottom
  396. 000016d0: 3e 3d 20 74 68 69 73 2e 62 6f 74 74 6f 6d 29 3b >= this.bottom);
  397. 000016e0: 0a 20 20 7d 3b 0a 20 20 52 65 63 74 61 6e 67 6c . };. Rectangl
  398. 000016f0: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 6f 76 65 72 e.prototype.over
  399. 00001700: 6c 61 70 73 20 3d 20 66 75 6e 63 74 69 6f 6e 28 laps = function(
  400. 00001710: 72 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 r) {. return
  401. 00001720: 28 74 68 69 73 2e 6c 65 66 74 20 3c 20 72 2e 72 (this.left < r.r
  402. 00001730: 69 67 68 74 29 20 26 26 20 28 72 2e 6c 65 66 74 ight) && (r.left
  403. 00001740: 20 3c 20 74 68 69 73 2e 72 69 67 68 74 29 20 26 < this.right) &
  404. 00001750: 26 20 28 74 68 69 73 2e 74 6f 70 20 3c 20 72 2e & (this.top < r.
  405. 00001760: 62 6f 74 74 6f 6d 29 20 26 26 20 28 72 2e 74 6f bottom) && (r.to
  406. 00001770: 70 20 3c 20 74 68 69 73 2e 62 6f 74 74 6f 6d 29 p < this.bottom)
  407. 00001780: 3b 0a 20 20 7d 3b 0a 20 20 47 61 6d 65 2e 52 65 ;. };. Game.Re
  408. 00001790: 63 74 61 6e 67 6c 65 20 3d 20 52 65 63 74 61 6e ctangle = Rectan
  409. 000017a0: 67 6c 65 3b 0a 7d 29 28 29 3b 0a 0a 28 66 75 6e gle;.})();..(fun
  410. 000017b0: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 76 61 72 20 ction() {. var
  411. 000017c0: 41 58 49 53 2c 20 43 61 6d 65 72 61 3b 0a 20 20 AXIS, Camera;.
  412. 000017d0: 41 58 49 53 20 3d 20 7b 0a 20 20 20 20 4e 4f 4e AXIS = {. NON
  413. 000017e0: 45 3a 20 27 6e 6f 6e 65 27 2c 0a 20 20 20 20 48 E: 'none',. H
  414. 000017f0: 4f 52 49 5a 4f 4e 54 41 4c 3a 20 27 68 6f 72 69 ORIZONTAL: 'hori
  415. 00001800: 7a 6f 6e 74 61 6c 27 2c 0a 20 20 20 20 56 45 52 zontal',. VER
  416. 00001810: 54 49 43 41 4c 3a 20 27 76 65 72 74 69 63 61 6c TICAL: 'vertical
  417. 00001820: 27 2c 0a 20 20 20 20 42 4f 54 48 3a 20 27 62 6f ',. BOTH: 'bo
  418. 00001830: 74 68 27 0a 20 20 7d 3b 0a 20 20 43 61 6d 65 72 th'. };. Camer
  419. 00001840: 61 20 3d 20 66 75 6e 63 74 69 6f 6e 28 78 56 69 a = function(xVi
  420. 00001850: 65 77 2c 20 79 56 69 65 77 2c 20 63 61 6e 76 61 ew, yView, canva
  421. 00001860: 73 57 69 64 74 68 2c 20 63 61 6e 76 61 73 48 65 sWidth, canvasHe
  422. 00001870: 69 67 68 74 2c 20 77 6f 72 6c 64 57 69 64 74 68 ight, worldWidth
  423. 00001880: 2c 20 77 6f 72 6c 64 48 65 69 67 68 74 29 20 7b , worldHeight) {
  424. 00001890: 0a 20 20 20 20 74 68 69 73 2e 78 56 69 65 77 20 . this.xView
  425. 000018a0: 3d 20 78 56 69 65 77 3b 0a 20 20 20 20 74 68 69 = xView;. thi
  426. 000018b0: 73 2e 79 56 69 65 77 20 3d 20 79 56 69 65 77 3b s.yView = yView;
  427. 000018c0: 0a 20 20 20 20 74 68 69 73 2e 78 44 65 61 64 5a . this.xDeadZ
  428. 000018d0: 6f 6e 65 20 3d 20 30 3b 0a 20 20 20 20 74 68 69 one = 0;. thi
  429. 000018e0: 73 2e 79 44 65 61 64 5a 6f 6e 65 20 3d 20 30 3b s.yDeadZone = 0;
  430. 000018f0: 0a 20 20 20 20 74 68 69 73 2e 77 56 69 65 77 20 . this.wView
  431. 00001900: 3d 20 63 61 6e 76 61 73 57 69 64 74 68 3b 0a 20 = canvasWidth;.
  432. 00001910: 20 20 20 74 68 69 73 2e 68 56 69 65 77 20 3d 20 this.hView =
  433. 00001920: 63 61 6e 76 61 73 48 65 69 67 68 74 3b 0a 20 20 canvasHeight;.
  434. 00001930: 20 20 74 68 69 73 2e 61 78 69 73 20 3d 20 41 58 this.axis = AX
  435. 00001940: 49 53 2e 42 4f 54 48 3b 0a 20 20 20 20 74 68 69 IS.BOTH;. thi
  436. 00001950: 73 2e 66 6f 6c 6c 6f 77 65 64 20 3d 20 6e 75 6c s.followed = nul
  437. 00001960: 6c 3b 0a 20 20 20 20 74 68 69 73 2e 76 69 65 77 l;. this.view
  438. 00001970: 70 6f 72 74 52 65 63 74 20 3d 20 6e 65 77 20 47 portRect = new G
  439. 00001980: 61 6d 65 2e 52 65 63 74 61 6e 67 6c 65 28 74 68 ame.Rectangle(th
  440. 00001990: 69 73 2e 78 56 69 65 77 2c 20 74 68 69 73 2e 79 is.xView, this.y
  441. 000019a0: 56 69 65 77 2c 20 74 68 69 73 2e 77 56 69 65 77 View, this.wView
  442. 000019b0: 2c 20 74 68 69 73 2e 68 56 69 65 77 29 3b 0a 20 , this.hView);.
  443. 000019c0: 20 20 20 74 68 69 73 2e 77 6f 72 6c 64 52 65 63 this.worldRec
  444. 000019d0: 74 20 3d 20 6e 65 77 20 47 61 6d 65 2e 52 65 63 t = new Game.Rec
  445. 000019e0: 74 61 6e 67 6c 65 28 30 2c 20 30 2c 20 77 6f 72 tangle(0, 0, wor
  446. 000019f0: 6c 64 57 69 64 74 68 2c 20 77 6f 72 6c 64 48 65 ldWidth, worldHe
  447. 00001a00: 69 67 68 74 29 3b 0a 20 20 7d 3b 0a 20 20 43 61 ight);. };. Ca
  448. 00001a10: 6d 65 72 61 2e 70 72 6f 74 6f 74 79 70 65 2e 66 mera.prototype.f
  449. 00001a20: 6f 6c 6c 6f 77 20 3d 20 66 75 6e 63 74 69 6f 6e ollow = function
  450. 00001a30: 28 67 61 6d 65 4f 62 6a 65 63 74 2c 20 78 44 65 (gameObject, xDe
  451. 00001a40: 61 64 5a 6f 6e 65 2c 20 79 44 65 61 64 5a 6f 6e adZone, yDeadZon
  452. 00001a50: 65 29 20 7b 0a 20 20 20 20 74 68 69 73 2e 66 6f e) {. this.fo
  453. 00001a60: 6c 6c 6f 77 65 64 20 3d 20 67 61 6d 65 4f 62 6a llowed = gameObj
  454. 00001a70: 65 63 74 3b 0a 20 20 20 20 74 68 69 73 2e 78 44 ect;. this.xD
  455. 00001a80: 65 61 64 5a 6f 6e 65 20 3d 20 78 44 65 61 64 5a eadZone = xDeadZ
  456. 00001a90: 6f 6e 65 3b 0a 20 20 20 20 74 68 69 73 2e 79 44 one;. this.yD
  457. 00001aa0: 65 61 64 5a 6f 6e 65 20 3d 20 79 44 65 61 64 5a eadZone = yDeadZ
  458. 00001ab0: 6f 6e 65 3b 0a 20 20 7d 3b 0a 20 20 43 61 6d 65 one;. };. Came
  459. 00001ac0: 72 61 2e 70 72 6f 74 6f 74 79 70 65 2e 75 70 64 ra.prototype.upd
  460. 00001ad0: 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 ate = function()
  461. 00001ae0: 20 7b 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e {. if (this.
  462. 00001af0: 66 6f 6c 6c 6f 77 65 64 20 21 3d 20 6e 75 6c 6c followed != null
  463. 00001b00: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 74 68 ) {. if (th
  464. 00001b10: 69 73 2e 61 78 69 73 20 3d 3d 3d 20 41 58 49 53 is.axis === AXIS
  465. 00001b20: 2e 48 4f 52 49 5a 4f 4e 54 41 4c 20 7c 7c 20 74 .HORIZONTAL || t
  466. 00001b30: 68 69 73 2e 61 78 69 73 20 3d 3d 3d 20 41 58 49 his.axis === AXI
  467. 00001b40: 53 2e 42 4f 54 48 29 20 7b 0a 20 20 20 20 20 20 S.BOTH) {.
  468. 00001b50: 20 20 69 66 20 28 28 74 68 69 73 2e 66 6f 6c 6c if ((this.foll
  469. 00001b60: 6f 77 65 64 2e 78 20 2d 20 74 68 69 73 2e 78 56 owed.x - this.xV
  470. 00001b70: 69 65 77 20 2b 20 74 68 69 73 2e 78 44 65 61 64 iew + this.xDead
  471. 00001b80: 5a 6f 6e 65 29 20 3e 20 74 68 69 73 2e 77 56 69 Zone) > this.wVi
  472. 00001b90: 65 77 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ew) {.
  473. 00001ba0: 74 68 69 73 2e 78 56 69 65 77 20 3d 20 74 68 69 this.xView = thi
  474. 00001bb0: 73 2e 66 6f 6c 6c 6f 77 65 64 2e 78 20 2d 20 28 s.followed.x - (
  475. 00001bc0: 74 68 69 73 2e 77 56 69 65 77 20 2d 20 74 68 69 this.wView - thi
  476. 00001bd0: 73 2e 78 44 65 61 64 5a 6f 6e 65 29 3b 0a 20 20 s.xDeadZone);.
  477. 00001be0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
  478. 00001bf0: 28 28 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 64 2e ((this.followed.
  479. 00001c00: 78 20 2d 20 74 68 69 73 2e 78 44 65 61 64 5a 6f x - this.xDeadZo
  480. 00001c10: 6e 65 29 20 3c 20 74 68 69 73 2e 78 56 69 65 77 ne) < this.xView
  481. 00001c20: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 74 68 ) {. th
  482. 00001c30: 69 73 2e 78 56 69 65 77 20 3d 20 74 68 69 73 2e is.xView = this.
  483. 00001c40: 66 6f 6c 6c 6f 77 65 64 2e 78 20 2d 20 74 68 69 followed.x - thi
  484. 00001c50: 73 2e 78 44 65 61 64 5a 6f 6e 65 3b 0a 20 20 20 s.xDeadZone;.
  485. 00001c60: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 }. }.
  486. 00001c70: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 61 78 if (this.ax
  487. 00001c80: 69 73 20 3d 3d 3d 20 41 58 49 53 2e 56 45 52 54 is === AXIS.VERT
  488. 00001c90: 49 43 41 4c 20 7c 7c 20 74 68 69 73 2e 61 78 69 ICAL || this.axi
  489. 00001ca0: 73 20 3d 3d 3d 20 41 58 49 53 2e 42 4f 54 48 29 s === AXIS.BOTH)
  490. 00001cb0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 {. if ((
  491. 00001cc0: 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 64 2e 79 20 this.followed.y
  492. 00001cd0: 2d 20 74 68 69 73 2e 79 56 69 65 77 20 2b 20 74 - this.yView + t
  493. 00001ce0: 68 69 73 2e 79 44 65 61 64 5a 6f 6e 65 29 20 3e his.yDeadZone) >
  494. 00001cf0: 20 74 68 69 73 2e 68 56 69 65 77 29 20 7b 0a 20 this.hView) {.
  495. 00001d00: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 79 56 this.yV
  496. 00001d10: 69 65 77 20 3d 20 74 68 69 73 2e 66 6f 6c 6c 6f iew = this.follo
  497. 00001d20: 77 65 64 2e 79 20 2d 20 28 74 68 69 73 2e 68 56 wed.y - (this.hV
  498. 00001d30: 69 65 77 20 2d 20 74 68 69 73 2e 79 44 65 61 64 iew - this.yDead
  499. 00001d40: 5a 6f 6e 65 29 3b 0a 20 20 20 20 20 20 20 20 7d Zone);. }
  500. 00001d50: 20 65 6c 73 65 20 69 66 20 28 28 74 68 69 73 2e else if ((this.
  501. 00001d60: 66 6f 6c 6c 6f 77 65 64 2e 79 20 2d 20 74 68 69 followed.y - thi
  502. 00001d70: 73 2e 79 44 65 61 64 5a 6f 6e 65 29 20 3c 20 74 s.yDeadZone) < t
  503. 00001d80: 68 69 73 2e 79 56 69 65 77 29 20 7b 0a 20 20 20 his.yView) {.
  504. 00001d90: 20 20 20 20 20 20 20 74 68 69 73 2e 79 56 69 65 this.yVie
  505. 00001da0: 77 20 3d 20 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 w = this.followe
  506. 00001db0: 64 2e 79 20 2d 20 74 68 69 73 2e 79 44 65 61 64 d.y - this.yDead
  507. 00001dc0: 5a 6f 6e 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a Zone;. }.
  508. 00001dd0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }.
  509. 00001de0: 20 20 74 68 69 73 2e 76 69 65 77 70 6f 72 74 52 this.viewportR
  510. 00001df0: 65 63 74 2e 73 65 74 28 74 68 69 73 2e 78 56 69 ect.set(this.xVi
  511. 00001e00: 65 77 2c 20 74 68 69 73 2e 79 56 69 65 77 29 3b ew, this.yView);
  512. 00001e10: 0a 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 76 . if (!this.v
  513. 00001e20: 69 65 77 70 6f 72 74 52 65 63 74 2e 77 69 74 68 iewportRect.with
  514. 00001e30: 69 6e 28 74 68 69 73 2e 77 6f 72 6c 64 52 65 63 in(this.worldRec
  515. 00001e40: 74 29 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 t)) {. if (
  516. 00001e50: 74 68 69 73 2e 76 69 65 77 70 6f 72 74 52 65 63 this.viewportRec
  517. 00001e60: 74 2e 6c 65 66 74 20 3c 20 74 68 69 73 2e 77 6f t.left < this.wo
  518. 00001e70: 72 6c 64 52 65 63 74 2e 6c 65 66 74 29 20 7b 0a rldRect.left) {.
  519. 00001e80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 78 56 69 this.xVi
  520. 00001e90: 65 77 20 3d 20 74 68 69 73 2e 77 6f 72 6c 64 52 ew = this.worldR
  521. 00001ea0: 65 63 74 2e 6c 65 66 74 3b 0a 20 20 20 20 20 20 ect.left;.
  522. 00001eb0: 7d 0a 20 20 20 20 20 20 69 66 20 28 74 68 69 73 }. if (this
  523. 00001ec0: 2e 76 69 65 77 70 6f 72 74 52 65 63 74 2e 72 69 .viewportRect.ri
  524. 00001ed0: 67 68 74 20 3e 20 74 68 69 73 2e 77 6f 72 6c 64 ght > this.world
  525. 00001ee0: 52 65 63 74 2e 72 69 67 68 74 29 20 7b 0a 20 20 Rect.right) {.
  526. 00001ef0: 20 20 20 20 20 20 74 68 69 73 2e 78 56 69 65 77 this.xView
  527. 00001f00: 20 3d 20 74 68 69 73 2e 77 6f 72 6c 64 52 65 63 = this.worldRec
  528. 00001f10: 74 2e 72 69 67 68 74 20 2d 20 74 68 69 73 2e 77 t.right - this.w
  529. 00001f20: 56 69 65 77 3b 0a 20 20 20 20 20 20 7d 0a 20 20 View;. }.
  530. 00001f30: 20 20 20 20 69 66 20 28 74 68 69 73 2e 76 69 65 if (this.vie
  531. 00001f40: 77 70 6f 72 74 52 65 63 74 2e 74 6f 70 20 3c 20 wportRect.top <
  532. 00001f50: 74 68 69 73 2e 77 6f 72 6c 64 52 65 63 74 2e 74 this.worldRect.t
  533. 00001f60: 6f 70 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 op) {. th
  534. 00001f70: 69 73 2e 79 56 69 65 77 20 3d 20 74 68 69 73 2e is.yView = this.
  535. 00001f80: 77 6f 72 6c 64 52 65 63 74 2e 74 6f 70 3b 0a 20 worldRect.top;.
  536. 00001f90: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69 66 20 }. if
  537. 00001fa0: 28 74 68 69 73 2e 76 69 65 77 70 6f 72 74 52 65 (this.viewportRe
  538. 00001fb0: 63 74 2e 62 6f 74 74 6f 6d 20 3e 20 74 68 69 73 ct.bottom > this
  539. 00001fc0: 2e 77 6f 72 6c 64 52 65 63 74 2e 62 6f 74 74 6f .worldRect.botto
  540. 00001fd0: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 m) {. thi
  541. 00001fe0: 73 2e 79 56 69 65 77 20 3d 20 74 68 69 73 2e 77 s.yView = this.w
  542. 00001ff0: 6f 72 6c 64 52 65 63 74 2e 62 6f 74 74 6f 6d 20 orldRect.bottom
  543. 00002000: 2d 20 74 68 69 73 2e 68 56 69 65 77 3b 0a 20 20 - this.hView;.
  544. 00002010: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 3b }. }. };
  545. 00002020: 0a 20 20 47 61 6d 65 2e 43 61 6d 65 72 61 20 3d . Game.Camera =
  546. 00002030: 20 43 61 6d 65 72 61 3b 0a 7d 29 28 29 3b 0a 0a Camera;.})();..
  547. 00002040: 28 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 (function() {.
  548. 00002050: 76 61 72 20 4d 61 70 3b 0a 20 20 4d 61 70 20 3d var Map;. Map =
  549. 00002060: 20 66 75 6e 63 74 69 6f 6e 28 77 69 64 74 68 2c function(width,
  550. 00002070: 20 68 65 69 67 68 74 29 20 7b 0a 20 20 20 20 74 height) {. t
  551. 00002080: 68 69 73 2e 77 69 64 74 68 20 3d 20 77 69 64 74 his.width = widt
  552. 00002090: 68 3b 0a 20 20 20 20 74 68 69 73 2e 68 65 69 67 h;. this.heig
  553. 000020a0: 68 74 20 3d 20 68 65 69 67 68 74 3b 0a 20 20 20 ht = height;.
  554. 000020b0: 20 74 68 69 73 2e 69 6d 61 67 65 20 3d 20 6e 75 this.image = nu
  555. 000020c0: 6c 6c 3b 0a 20 20 7d 3b 0a 20 20 4d 61 70 2e 70 ll;. };. Map.p
  556. 000020d0: 72 6f 74 6f 74 79 70 65 2e 67 65 6e 65 72 61 74 rototype.generat
  557. 000020e0: 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b e = function() {
  558. 000020f0: 0a 20 20 20 20 76 61 72 20 63 6f 6c 6f 72 2c 20 . var color,
  559. 00002100: 63 6f 6c 6f 72 73 2c 20 63 6f 6c 75 6d 6e 73 2c colors, columns,
  560. 00002110: 20 63 74 78 2c 20 69 2c 20 6a 2c 20 6b 2c 20 72 ctx, i, j, k, r
  561. 00002120: 65 66 2c 20 72 65 66 31 2c 20 72 6f 77 73 2c 20 ef, ref1, rows,
  562. 00002130: 78 2c 20 79 3b 0a 20 20 20 20 63 74 78 20 3d 20 x, y;. ctx =
  563. 00002140: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 document.createE
  564. 00002150: 6c 65 6d 65 6e 74 28 27 63 61 6e 76 61 73 27 29 lement('canvas')
  565. 00002160: 2e 67 65 74 43 6f 6e 74 65 78 74 28 27 32 64 27 .getContext('2d'
  566. 00002170: 29 3b 0a 20 20 20 20 63 74 78 2e 63 61 6e 76 61 );. ctx.canva
  567. 00002180: 73 2e 77 69 64 74 68 20 3d 20 74 68 69 73 2e 77 s.width = this.w
  568. 00002190: 69 64 74 68 3b 0a 20 20 20 20 63 74 78 2e 63 61 idth;. ctx.ca
  569. 000021a0: 6e 76 61 73 2e 68 65 69 67 68 74 20 3d 20 74 68 nvas.height = th
  570. 000021b0: 69 73 2e 68 65 69 67 68 74 3b 0a 20 20 20 20 72 is.height;. r
  571. 000021c0: 6f 77 73 20 3d 20 77 69 6e 64 6f 77 2e 72 65 6d ows = window.rem
  572. 000021d0: 6f 76 65 44 65 63 69 6d 61 6c 28 74 68 69 73 2e oveDecimal(this.
  573. 000021e0: 77 69 64 74 68 20 2f 20 34 34 29 20 2b 20 31 3b width / 44) + 1;
  574. 000021f0: 0a 20 20 20 20 63 6f 6c 75 6d 6e 73 20 3d 20 77 . columns = w
  575. 00002200: 69 6e 64 6f 77 2e 72 65 6d 6f 76 65 44 65 63 69 indow.removeDeci
  576. 00002210: 6d 61 6c 28 74 68 69 73 2e 68 65 69 67 68 74 20 mal(this.height
  577. 00002220: 2f 20 34 34 29 20 2b 20 31 3b 0a 20 20 20 20 63 / 44) + 1;. c
  578. 00002230: 74 78 2e 73 61 76 65 28 29 3b 0a 20 20 20 20 63 tx.save();. c
  579. 00002240: 6f 6c 6f 72 20 3d 20 27 73 6b 79 62 6c 75 65 27 olor = 'skyblue'
  580. 00002250: 3b 0a 20 20 20 20 63 74 78 2e 66 69 6c 6c 53 74 ;. ctx.fillSt
  581. 00002260: 79 6c 65 20 3d 20 63 6f 6c 6f 72 3b 0a 20 20 20 yle = color;.
  582. 00002270: 20 69 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6c 6f i = 0;. colo
  583. 00002280: 72 73 20 3d 20 5b 27 73 6b 79 62 6c 75 65 27 2c rs = ['skyblue',
  584. 00002290: 20 27 64 6f 64 67 65 72 62 6c 75 65 27 5d 3b 0a 'dodgerblue'];.
  585. 000022a0: 20 20 20 20 78 20 3d 20 32 3b 0a 20 20 20 20 66 x = 2;. f
  586. 000022b0: 6f 72 20 28 6a 20 3d 20 31 2c 20 72 65 66 20 3d or (j = 1, ref =
  587. 000022c0: 20 72 6f 77 73 3b 20 31 20 3c 3d 20 72 65 66 20 rows; 1 <= ref
  588. 000022d0: 3f 20 6a 20 3c 3d 20 72 65 66 20 3a 20 6a 20 3e ? j <= ref : j >
  589. 000022e0: 3d 20 72 65 66 3b 20 31 20 3c 3d 20 72 65 66 20 = ref; 1 <= ref
  590. 000022f0: 3f 20 6a 2b 2b 20 3a 20 6a 2d 2d 29 20 7b 0a 20 ? j++ : j--) {.
  591. 00002300: 20 20 20 20 20 79 20 3d 20 32 3b 0a 20 20 20 20 y = 2;.
  592. 00002310: 20 20 66 6f 72 20 28 6b 20 3d 20 31 2c 20 72 65 for (k = 1, re
  593. 00002320: 66 31 20 3d 20 63 6f 6c 75 6d 6e 73 3b 20 31 20 f1 = columns; 1
  594. 00002330: 3c 3d 20 72 65 66 31 20 3f 20 6b 20 3c 3d 20 72 <= ref1 ? k <= r
  595. 00002340: 65 66 31 20 3a 20 6b 20 3e 3d 20 72 65 66 31 3b ef1 : k >= ref1;
  596. 00002350: 20 31 20 3c 3d 20 72 65 66 31 20 3f 20 6b 2b 2b 1 <= ref1 ? k++
  597. 00002360: 20 3a 20 6b 2d 2d 29 20 7b 0a 20 20 20 20 20 20 : k--) {.
  598. 00002370: 20 20 63 74 78 2e 62 65 67 69 6e 50 61 74 68 28 ctx.beginPath(
  599. 00002380: 29 3b 0a 20 20 20 20 20 20 20 20 63 74 78 2e 72 );. ctx.r
  600. 00002390: 65 63 74 28 78 2c 20 79 2c 20 34 30 2c 20 34 30 ect(x, y, 40, 40
  601. 000023a0: 29 3b 0a 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 );. color
  602. 000023b0: 20 3d 20 63 6f 6c 6f 72 73 5b 69 2b 2b 20 25 20 = colors[i++ %
  603. 000023c0: 32 5d 3b 0a 20 20 20 20 20 20 20 20 63 74 78 2e 2];. ctx.
  604. 000023d0: 66 69 6c 6c 53 74 79 6c 65 20 3d 20 63 6f 6c 6f fillStyle = colo
  605. 000023e0: 72 3b 0a 20 20 20 20 20 20 20 20 63 74 78 2e 66 r;. ctx.f
  606. 000023f0: 69 6c 6c 28 29 3b 0a 20 20 20 20 20 20 20 20 63 ill();. c
  607. 00002400: 74 78 2e 63 6c 6f 73 65 50 61 74 68 28 29 3b 0a tx.closePath();.
  608. 00002410: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 79 20 }. y
  609. 00002420: 2b 3d 20 34 34 3b 0a 20 20 20 20 7d 0a 20 20 20 += 44;. }.
  610. 00002430: 20 78 20 2b 3d 20 34 34 3b 0a 20 20 20 20 63 74 x += 44;. ct
  611. 00002440: 78 2e 72 65 73 74 6f 72 65 28 29 3b 0a 20 20 20 x.restore();.
  612. 00002450: 20 74 68 69 73 2e 69 6d 61 67 65 20 3d 20 6e 65 this.image = ne
  613. 00002460: 77 20 49 6d 61 67 65 28 29 3b 0a 20 20 20 20 74 w Image();. t
  614. 00002470: 68 69 73 2e 69 6d 61 67 65 2e 73 72 63 20 3d 20 his.image.src =
  615. 00002480: 63 74 78 2e 63 61 6e 76 61 73 2e 74 6f 44 61 74 ctx.canvas.toDat
  616. 00002490: 61 55 52 4c 28 27 69 6d 61 67 65 2f 70 6e 67 27 aURL('image/png'
  617. 000024a0: 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 74 );. return ct
  618. 000024b0: 78 20 3d 20 6e 75 6c 6c 3b 0a 20 20 7d 3b 0a 20 x = null;. };.
  619. 000024c0: 20 4d 61 70 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Map.prototype.d
  620. 000024d0: 72 61 77 20 3d 20 66 75 6e 63 74 69 6f 6e 28 63 raw = function(c
  621. 000024e0: 6f 6e 74 65 78 74 2c 20 78 56 69 65 77 2c 20 79 ontext, xView, y
  622. 000024f0: 56 69 65 77 29 20 7b 0a 20 20 20 20 76 61 72 20 View) {. var
  623. 00002500: 64 48 65 69 67 68 74 2c 20 64 57 69 64 74 68 2c dHeight, dWidth,
  624. 00002510: 20 64 78 2c 20 64 79 2c 20 73 48 65 69 67 68 74 dx, dy, sHeight
  625. 00002520: 2c 20 73 57 69 64 74 68 2c 20 73 78 2c 20 73 79 , sWidth, sx, sy
  626. 00002530: 3b 0a 20 20 20 20 73 78 20 3d 20 78 56 69 65 77 ;. sx = xView
  627. 00002540: 3b 0a 20 20 20 20 73 79 20 3d 20 79 56 69 65 77 ;. sy = yView
  628. 00002550: 3b 0a 20 20 20 20 73 57 69 64 74 68 20 3d 20 63 ;. sWidth = c
  629. 00002560: 6f 6e 74 65 78 74 2e 63 61 6e 76 61 73 2e 77 69 ontext.canvas.wi
  630. 00002570: 64 74 68 3b 0a 20 20 20 20 73 48 65 69 67 68 74 dth;. sHeight
  631. 00002580: 20 3d 20 63 6f 6e 74 65 78 74 2e 63 61 6e 76 61 = context.canva
  632. 00002590: 73 2e 68 65 69 67 68 74 3b 0a 20 20 20 20 69 66 s.height;. if
  633. 000025a0: 20 28 28 74 68 69 73 2e 69 6d 61 67 65 2e 77 69 ((this.image.wi
  634. 000025b0: 64 74 68 20 2d 20 73 78 29 20 3c 20 73 57 69 64 dth - sx) < sWid
  635. 000025c0: 74 68 29 20 7b 0a 20 20 20 20 20 20 73 57 69 64 th) {. sWid
  636. 000025d0: 74 68 20 3d 20 74 68 69 73 2e 69 6d 61 67 65 2e th = this.image.
  637. 000025e0: 77 69 64 74 68 20 2d 20 73 78 3b 0a 20 20 20 20 width - sx;.
  638. 000025f0: 7d 0a 20 20 20 20 69 66 20 28 28 74 68 69 73 2e }. if ((this.
  639. 00002600: 69 6d 61 67 65 2e 68 65 69 67 68 74 20 2d 20 73 image.height - s
  640. 00002610: 79 29 20 3c 20 73 48 65 69 67 68 74 29 20 7b 0a y) < sHeight) {.
  641. 00002620: 20 20 20 20 20 20 73 48 65 69 67 68 74 20 3d 20 sHeight =
  642. 00002630: 74 68 69 73 2e 69 6d 61 67 65 2e 68 65 69 67 68 this.image.heigh
  643. 00002640: 74 20 2d 20 73 79 3b 0a 20 20 20 20 7d 0a 20 20 t - sy;. }.
  644. 00002650: 20 20 64 78 20 3d 20 30 3b 0a 20 20 20 20 64 79 dx = 0;. dy
  645. 00002660: 20 3d 20 30 3b 0a 20 20 20 20 64 57 69 64 74 68 = 0;. dWidth
  646. 00002670: 20 3d 20 73 57 69 64 74 68 3b 0a 20 20 20 20 64 = sWidth;. d
  647. 00002680: 48 65 69 67 68 74 20 3d 20 73 48 65 69 67 68 74 Height = sHeight
  648. 00002690: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e ;. return con
  649. 000026a0: 74 65 78 74 2e 64 72 61 77 49 6d 61 67 65 28 74 text.drawImage(t
  650. 000026b0: 68 69 73 2e 69 6d 61 67 65 2c 20 73 78 2c 20 73 his.image, sx, s
  651. 000026c0: 79 2c 20 73 57 69 64 74 68 2c 20 73 48 65 69 67 y, sWidth, sHeig
  652. 000026d0: 68 74 2c 20 64 78 2c 20 64 79 2c 20 64 57 69 64 ht, dx, dy, dWid
  653. 000026e0: 74 68 2c 20 64 48 65 69 67 68 74 29 3b 0a 20 20 th, dHeight);.
  654. 000026f0: 7d 3b 0a 20 20 47 61 6d 65 2e 4d 61 70 20 3d 20 };. Game.Map =
  655. 00002700: 4d 61 70 3b 0a 7d 29 28 29 3b 0a 0a 0a 2f 2a 0a Map;.})();.../*.
  656. 00002710: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  657. 00002720: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  658. 00002730: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  659. 00002740: 2a 0a 2a 2a 20 47 41 4d 45 20 4b 45 59 42 4f 41 *.** GAME KEYBOA
  660. 00002750: 52 44 20 43 4c 41 53 53 0a 2a 2a 2a 2a 2a 2a 2a RD CLASS.*******
  661. 00002760: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  662. 00002770: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  663. 00002780: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a **********. */..
  664. 00002790: 4b 65 79 73 20 3d 20 66 75 6e 63 74 69 6f 6e 28 Keys = function(
  665. 000027a0: 75 70 2c 20 6c 65 66 74 2c 20 72 69 67 68 74 2c up, left, right,
  666. 000027b0: 20 64 6f 77 6e 29 20 7b 0a 20 20 76 61 72 20 6f down) {. var o
  667. 000027c0: 6e 4b 65 79 44 6f 77 6e 2c 20 6f 6e 4b 65 79 55 nKeyDown, onKeyU
  668. 000027d0: 70 3b 0a 20 20 69 66 20 28 75 70 20 3d 3d 20 6e p;. if (up == n
  669. 000027e0: 75 6c 6c 29 20 7b 0a 20 20 20 20 75 70 20 3d 20 ull) {. up =
  670. 000027f0: 66 61 6c 73 65 3b 0a 20 20 7d 0a 20 20 69 66 20 false;. }. if
  671. 00002800: 28 6c 65 66 74 20 3d 3d 20 6e 75 6c 6c 29 20 7b (left == null) {
  672. 00002810: 0a 20 20 20 20 6c 65 66 74 20 3d 20 66 61 6c 73 . left = fals
  673. 00002820: 65 3b 0a 20 20 7d 0a 20 20 69 66 20 28 72 69 67 e;. }. if (rig
  674. 00002830: 68 74 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 ht == null) {.
  675. 00002840: 20 20 72 69 67 68 74 20 3d 20 66 61 6c 73 65 3b right = false;
  676. 00002850: 0a 20 20 7d 0a 20 20 69 66 20 28 64 6f 77 6e 20 . }. if (down
  677. 00002860: 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 64 == null) {. d
  678. 00002870: 6f 77 6e 20 3d 20 66 61 6c 73 65 3b 0a 20 20 7d own = false;. }
  679. 00002880: 0a 20 20 6f 6e 4b 65 79 44 6f 77 6e 20 3d 20 66 . onKeyDown = f
  680. 00002890: 75 6e 63 74 69 6f 6e 28 65 29 20 7b 0a 20 20 20 unction(e) {.
  681. 000028a0: 20 76 61 72 20 74 68 61 74 3b 0a 20 20 20 20 74 var that;. t
  682. 000028b0: 68 61 74 20 3d 20 74 68 69 73 3b 0a 20 20 20 20 hat = this;.
  683. 000028c0: 73 77 69 74 63 68 20 28 65 2e 6b 65 79 43 6f 64 switch (e.keyCod
  684. 000028d0: 65 29 20 7b 0a 20 20 20 20 20 20 63 61 73 65 20 e) {. case
  685. 000028e0: 33 37 3a 0a 20 20 20 20 20 20 20 20 74 68 61 74 37:. that
  686. 000028f0: 2e 6c 65 66 74 20 3d 20 74 72 75 65 3b 0a 20 20 .left = true;.
  687. 00002900: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 break;.
  688. 00002910: 20 20 20 63 61 73 65 20 33 38 3a 0a 20 20 20 20 case 38:.
  689. 00002920: 20 20 20 20 74 68 61 74 2e 75 70 20 3d 20 74 72 that.up = tr
  690. 00002930: 75 65 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 ue;. brea
  691. 00002940: 6b 3b 0a 20 20 20 20 20 20 63 61 73 65 20 33 39 k;. case 39
  692. 00002950: 3a 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 72 :. that.r
  693. 00002960: 69 67 68 74 20 3d 20 74 72 75 65 3b 0a 20 20 20 ight = true;.
  694. 00002970: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;.
  695. 00002980: 20 20 63 61 73 65 20 34 30 3a 0a 20 20 20 20 20 case 40:.
  696. 00002990: 20 20 20 74 68 61 74 2e 64 6f 77 6e 20 3d 20 74 that.down = t
  697. 000029a0: 72 75 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b 0a rue;. }. };.
  698. 000029b0: 20 20 6f 6e 4b 65 79 55 70 20 3d 20 66 75 6e 63 onKeyUp = func
  699. 000029c0: 74 69 6f 6e 28 65 29 20 7b 0a 20 20 20 20 76 61 tion(e) {. va
  700. 000029d0: 72 20 74 68 61 74 3b 0a 20 20 20 20 74 68 61 74 r that;. that
  701. 000029e0: 20 3d 20 74 68 69 73 3b 0a 20 20 20 20 73 77 69 = this;. swi
  702. 000029f0: 74 63 68 20 28 65 2e 6b 65 79 43 6f 64 65 29 20 tch (e.keyCode)
  703. 00002a00: 7b 0a 20 20 20 20 20 20 63 61 73 65 20 33 37 3a {. case 37:
  704. 00002a10: 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 6c 65 . that.le
  705. 00002a20: 66 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 ft = false;.
  706. 00002a30: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 break;.
  707. 00002a40: 20 63 61 73 65 20 33 38 3a 0a 20 20 20 20 20 20 case 38:.
  708. 00002a50: 20 20 74 68 61 74 2e 75 70 20 3d 20 66 61 6c 73 that.up = fals
  709. 00002a60: 65 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b e;. break
  710. 00002a70: 3b 0a 20 20 20 20 20 20 63 61 73 65 20 33 39 3a ;. case 39:
  711. 00002a80: 0a 20 20 20 20 20 20 20 20 74 68 61 74 2e 72 69 . that.ri
  712. 00002a90: 67 68 74 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 ght = false;.
  713. 00002aa0: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;.
  714. 00002ab0: 20 20 63 61 73 65 20 34 30 3a 0a 20 20 20 20 20 case 40:.
  715. 00002ac0: 20 20 20 74 68 61 74 2e 64 6f 77 6e 20 3d 20 66 that.down = f
  716. 00002ad0: 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 3b alse;. }. };
  717. 00002ae0: 0a 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 . return {.
  718. 00002af0: 75 70 3a 20 75 70 2c 0a 20 20 20 20 6c 65 66 74 up: up,. left
  719. 00002b00: 3a 20 6c 65 66 74 2c 0a 20 20 20 20 72 69 67 68 : left,. righ
  720. 00002b10: 74 3a 20 72 69 67 68 74 2c 0a 20 20 20 20 64 6f t: right,. do
  721. 00002b20: 77 6e 3a 20 64 6f 77 6e 2c 0a 20 20 20 20 6f 6e wn: down,. on
  722. 00002b30: 4b 65 79 44 6f 77 6e 3a 20 6f 6e 4b 65 79 44 6f KeyDown: onKeyDo
  723. 00002b40: 77 6e 2c 0a 20 20 20 20 6f 6e 4b 65 79 55 70 3a wn,. onKeyUp:
  724. 00002b50: 20 6f 6e 4b 65 79 55 70 0a 20 20 7d 3b 0a 7d 3b onKeyUp. };.};
  725. 00002b60: 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .../*.**********
  726. 00002b70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  727. 00002b80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  728. 00002b90: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 47 41 4d 45 20 *******.** GAME
  729. 00002ba0: 50 4c 41 59 45 52 20 43 4c 41 53 53 0a 2a 2a 2a PLAYER CLASS.***
  730. 00002bb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  731. 00002bc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  732. 00002bd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 **************.
  733. 00002be0: 2a 2f 0a 0a 50 6c 61 79 65 72 20 3d 20 66 75 6e */..Player = fun
  734. 00002bf0: 63 74 69 6f 6e 28 73 74 61 72 74 58 2c 20 73 74 ction(startX, st
  735. 00002c00: 61 72 74 59 2c 20 75 73 65 72 4e 61 6d 65 2c 20 artY, userName,
  736. 00002c10: 62 6c 6f 63 6b 43 6f 6c 6f 72 29 20 7b 0a 20 20 blockColor) {.
  737. 00002c20: 76 61 72 20 68 65 69 67 68 74 2c 20 6d 6f 76 65 var height, move
  738. 00002c30: 41 6d 6f 75 6e 74 2c 20 6e 61 6d 65 2c 20 77 69 Amount, name, wi
  739. 00002c40: 64 74 68 2c 20 78 2c 20 79 3b 0a 20 20 69 66 20 dth, x, y;. if
  740. 00002c50: 28 62 6c 6f 63 6b 43 6f 6c 6f 72 20 3d 3d 20 6e (blockColor == n
  741. 00002c60: 75 6c 6c 29 20 7b 0a 20 20 20 20 62 6c 6f 63 6b ull) {. block
  742. 00002c70: 43 6f 6c 6f 72 20 3d 20 27 64 61 72 6b 67 72 65 Color = 'darkgre
  743. 00002c80: 79 27 3b 0a 20 20 7d 0a 20 20 78 20 3d 20 73 74 y';. }. x = st
  744. 00002c90: 61 72 74 58 3b 0a 20 20 79 20 3d 20 73 74 61 72 artX;. y = star
  745. 00002ca0: 74 59 3b 0a 20 20 6e 61 6d 65 20 3d 20 75 73 65 tY;. name = use
  746. 00002cb0: 72 4e 61 6d 65 3b 0a 20 20 77 69 64 74 68 20 3d rName;. width =
  747. 00002cc0: 20 33 32 3b 0a 20 20 68 65 69 67 68 74 20 3d 20 32;. height =
  748. 00002cd0: 33 32 3b 0a 20 20 6d 6f 76 65 41 6d 6f 75 6e 74 32;. moveAmount
  749. 00002ce0: 20 3d 20 30 2e 32 3b 0a 20 20 75 70 64 61 74 65 = 0.2;. update
  750. 00002cf0: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 6b 65 79 73 = function(keys
  751. 00002d00: 29 20 7b 0a 20 20 20 20 76 61 72 20 6d 6f 76 69 ) {. var movi
  752. 00002d10: 6e 67 2c 20 70 72 65 76 58 2c 20 70 72 65 76 59 ng, prevX, prevY
  753. 00002d20: 3b 0a 20 20 20 20 70 72 65 76 58 20 3d 20 78 3b ;. prevX = x;
  754. 00002d30: 0a 20 20 20 20 70 72 65 76 59 20 3d 20 79 3b 0a . prevY = y;.
  755. 00002d40: 20 20 20 20 6d 6f 76 69 6e 67 20 3d 20 4d 61 74 moving = Mat
  756. 00002d50: 68 2e 72 6f 75 6e 64 28 6d 6f 76 65 41 6d 6f 75 h.round(moveAmou
  757. 00002d60: 6e 74 20 2a 20 64 65 6c 74 61 54 69 6d 65 29 3b nt * deltaTime);
  758. 00002d70: 0a 20 20 20 20 69 66 20 28 6b 65 79 73 2e 6c 65 . if (keys.le
  759. 00002d80: 66 74 29 20 7b 0a 20 20 20 20 20 20 78 20 2d 3d ft) {. x -=
  760. 00002d90: 20 6d 6f 76 69 6e 67 3b 0a 20 20 20 20 7d 0a 20 moving;. }.
  761. 00002da0: 20 20 20 69 66 20 28 6b 65 79 73 2e 75 70 29 20 if (keys.up)
  762. 00002db0: 7b 0a 20 20 20 20 20 20 79 20 2d 3d 20 6d 6f 76 {. y -= mov
  763. 00002dc0: 69 6e 67 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 ing;. }. i
  764. 00002dd0: 66 20 28 6b 65 79 73 2e 64 6f 77 6e 29 20 7b 0a f (keys.down) {.
  765. 00002de0: 20 20 20 20 20 20 79 20 2b 3d 20 6d 6f 76 69 6e y += movin
  766. 00002df0: 67 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 g;. }. if
  767. 00002e00: 28 6b 65 79 73 2e 72 69 67 68 74 29 20 7b 0a 20 (keys.right) {.
  768. 00002e10: 20 20 20 20 20 78 20 2b 3d 20 6d 6f 76 69 6e 67 x += moving
  769. 00002e20: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 ;. }. if (
  770. 00002e30: 78 20 3c 20 74 68 69 73 2e 77 69 64 74 68 29 20 x < this.width)
  771. 00002e40: 7b 0a 20 20 20 20 20 20 78 20 3d 20 74 68 69 73 {. x = this
  772. 00002e50: 2e 77 69 64 74 68 3b 0a 20 20 20 20 7d 0a 20 20 .width;. }.
  773. 00002e60: 20 20 69 66 20 28 79 20 3c 20 74 68 69 73 2e 68 if (y < this.h
  774. 00002e70: 65 69 67 68 74 29 20 7b 0a 20 20 20 20 20 20 79 eight) {. y
  775. 00002e80: 20 3d 20 74 68 69 73 2e 68 65 69 67 68 74 3b 0a = this.height;.
  776. 00002e90: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 78 20 }. if (x
  777. 00002ea0: 3e 20 28 72 6f 6f 6d 2e 77 69 64 74 68 20 2d 20 > (room.width -
  778. 00002eb0: 74 68 69 73 2e 77 69 64 74 68 29 29 20 7b 0a 20 this.width)) {.
  779. 00002ec0: 20 20 20 20 20 78 20 3d 20 72 6f 6f 6d 2e 77 69 x = room.wi
  780. 00002ed0: 64 74 68 20 2d 20 74 68 69 73 2e 77 69 64 74 68 dth - this.width
  781. 00002ee0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 ;. }. if (
  782. 00002ef0: 79 20 3e 20 28 72 6f 6f 6d 2e 68 65 69 67 68 74 y > (room.height
  783. 00002f00: 20 2d 20 74 68 69 73 2e 68 65 69 67 68 74 29 29 - this.height))
  784. 00002f10: 20 7b 0a 20 20 20 20 20 20 79 20 3d 20 72 6f 6f {. y = roo
  785. 00002f20: 6d 2e 68 65 69 67 68 74 20 2d 20 74 68 69 73 2e m.height - this.
  786. 00002f30: 68 65 69 67 68 74 3b 0a 20 20 20 20 7d 0a 20 20 height;. }.
  787. 00002f40: 20 20 72 65 74 75 72 6e 20 70 72 65 76 58 20 21 return prevX !
  788. 00002f50: 3d 3d 20 78 20 7c 7c 20 70 72 65 76 59 20 21 3d == x || prevY !=
  789. 00002f60: 3d 20 79 3b 0a 20 20 7d 3b 0a 20 20 64 72 61 77 = y;. };. draw
  790. 00002f70: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 63 74 78 2c = function(ctx,
  791. 00002f80: 20 78 56 69 65 77 2c 20 79 56 69 65 77 29 20 7b xView, yView) {
  792. 00002f90: 0a 20 20 20 20 63 74 78 2e 73 61 76 65 28 29 3b . ctx.save();
  793. 00002fa0: 0a 20 20 20 20 63 74 78 2e 66 69 6c 6c 53 74 79 . ctx.fillSty
  794. 00002fb0: 6c 65 20 3d 20 74 68 69 73 2e 62 6c 6f 63 6b 43 le = this.blockC
  795. 00002fc0: 6f 6c 6f 72 3b 0a 20 20 20 20 63 74 78 2e 66 69 olor;. ctx.fi
  796. 00002fd0: 6c 6c 52 65 63 74 28 78 20 2d 20 28 74 68 69 73 llRect(x - (this
  797. 00002fe0: 2e 77 69 64 74 68 20 2f 20 32 29 20 2d 20 78 56 .width / 2) - xV
  798. 00002ff0: 69 65 77 2c 20 79 20 2d 20 28 74 68 69 73 2e 68 iew, y - (this.h
  799. 00003000: 65 69 67 68 74 20 2f 20 32 29 20 2d 20 79 56 69 eight / 2) - yVi
  800. 00003010: 65 77 2c 20 74 68 69 73 2e 77 69 64 74 68 2c 20 ew, this.width,
  801. 00003020: 74 68 69 73 2e 68 65 69 67 68 74 29 3b 0a 20 20 this.height);.
  802. 00003030: 20 20 63 74 78 2e 66 6f 6e 74 20 3d 20 27 31 32 ctx.font = '12
  803. 00003040: 70 78 20 73 61 6e 73 2d 73 65 72 69 66 27 3b 0a px sans-serif';.
  804. 00003050: 20 20 20 20 63 74 78 2e 74 65 78 74 41 6c 69 67 ctx.textAlig
  805. 00003060: 6e 20 3d 20 27 63 65 6e 74 65 72 27 3b 0a 20 20 n = 'center';.
  806. 00003070: 20 20 63 74 78 2e 66 69 6c 6c 54 65 78 74 28 6e ctx.fillText(n
  807. 00003080: 61 6d 65 2c 20 78 20 2d 20 78 56 69 65 77 2c 20 ame, x - xView,
  808. 00003090: 79 20 2d 20 79 56 69 65 77 20 2d 20 32 34 29 3b y - yView - 24);
  809. 000030a0: 0a 20 20 20 20 72 65 74 75 72 6e 20 63 74 78 2e . return ctx.
  810. 000030b0: 72 65 73 74 6f 72 65 28 29 3b 0a 20 20 7d 3b 0a restore();. };.
  811. 000030c0: 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 58 return {. X
  812. 000030d0: 3a 20 78 2c 0a 20 20 20 20 59 3a 20 79 2c 0a 20 : x,. Y: y,.
  813. 000030e0: 20 20 20 77 69 64 74 68 3a 20 77 69 64 74 68 2c width: width,
  814. 000030f0: 0a 20 20 20 20 68 65 69 67 68 74 3a 20 68 65 69 . height: hei
  815. 00003100: 67 68 74 2c 0a 20 20 20 20 62 6c 6f 63 6b 43 6f ght,. blockCo
  816. 00003110: 6c 6f 72 3a 20 62 6c 6f 63 6b 43 6f 6c 6f 72 2c lor: blockColor,
  817. 00003120: 0a 20 20 20 20 75 70 64 61 74 65 3a 20 75 70 64 . update: upd
  818. 00003130: 61 74 65 2c 0a 20 20 20 20 64 72 61 77 3a 20 64 ate,. draw: d
  819. 00003140: 72 61 77 0a 20 20 7d 3b 0a 7d 3b 0a 0a 0a 2f 2a raw. };.};.../*
  820. 00003150: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
  821. 00003160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  822. 00003170: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  823. 00003180: 2a 2a 0a 2a 2a 20 47 41 4d 45 20 44 45 42 55 47 **.** GAME DEBUG
  824. 00003190: 20 43 4c 41 53 53 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a CLASS.*********
  825. 000031a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  826. 000031b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  827. 000031c0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a 64 72 ********. */..dr
  828. 000031d0: 61 77 5f 64 65 62 75 67 20 3d 20 66 75 6e 63 74 aw_debug = funct
  829. 000031e0: 69 6f 6e 28 63 74 78 2c 20 78 56 69 65 77 2c 20 ion(ctx, xView,
  830. 000031f0: 79 56 69 65 77 29 20 7b 0a 20 20 76 61 72 20 64 yView) {. var d
  831. 00003200: 65 62 75 67 56 61 72 4e 61 6d 65 73 2c 20 64 65 ebugVarNames, de
  832. 00003210: 62 75 67 56 61 72 73 2c 20 64 76 2c 20 69 2c 20 bugVars, dv, i,
  833. 00003220: 6a 2c 20 6b 2c 20 6c 2c 20 6c 65 6e 2c 20 6c 65 j, k, l, len, le
  834. 00003230: 6e 31 2c 20 6c 65 6e 32 2c 20 70 2c 20 70 6c 61 n1, len2, p, pla
  835. 00003240: 79 65 72 2c 20 70 6c 61 79 65 72 50 72 6f 70 4e yer, playerPropN
  836. 00003250: 61 6d 65 73 2c 20 70 6c 61 79 65 72 50 72 6f 70 ames, playerProp
  837. 00003260: 73 2c 20 70 70 3b 0a 20 20 63 74 78 2e 73 61 76 s, pp;. ctx.sav
  838. 00003270: 65 28 29 3b 0a 20 20 63 74 78 2e 66 6f 6e 74 20 e();. ctx.font
  839. 00003280: 3d 20 27 62 6f 6c 64 20 31 32 70 78 20 6d 6f 6e = 'bold 12px mon
  840. 00003290: 6f 73 70 61 63 65 27 3b 0a 20 20 63 74 78 2e 74 ospace';. ctx.t
  841. 000032a0: 65 78 74 41 6c 69 67 6e 20 3d 20 27 73 74 61 72 extAlign = 'star
  842. 000032b0: 74 27 3b 0a 20 20 63 74 78 2e 66 69 6c 6c 53 74 t';. ctx.fillSt
  843. 000032c0: 79 6c 65 20 3d 20 27 62 6c 61 63 6b 27 3b 0a 20 yle = 'black';.
  844. 000032d0: 20 63 74 78 2e 66 69 6c 6c 54 65 78 74 28 27 5b ctx.fillText('[
  845. 000032e0: 44 45 42 55 47 5d 27 2c 20 38 2c 20 38 20 2b 20 DEBUG]', 8, 8 +
  846. 000032f0: 31 32 29 3b 0a 20 20 64 65 62 75 67 56 61 72 73 12);. debugVars
  847. 00003300: 20 3d 20 5b 4d 61 74 68 2e 72 6f 75 6e 64 28 31 = [Math.round(1
  848. 00003310: 30 30 30 20 2f 20 64 65 6c 74 61 54 69 6d 65 29 000 / deltaTime)
  849. 00003320: 20 2b 20 31 2c 20 27 27 2c 20 27 2f 23 27 20 2b + 1, '', '/#' +
  850. 00003330: 20 73 6f 63 6b 65 74 2e 69 6f 2e 65 6e 67 69 6e socket.io.engin
  851. 00003340: 65 2e 69 64 2c 20 6c 6f 63 61 6c 50 6c 61 79 65 e.id, localPlaye
  852. 00003350: 72 2e 58 28 29 2c 20 6c 6f 63 61 6c 50 6c 61 79 r.X(), localPlay
  853. 00003360: 65 72 2e 59 28 29 5d 3b 0a 20 20 64 65 62 75 67 er.Y()];. debug
  854. 00003370: 56 61 72 4e 61 6d 65 73 20 3d 20 5b 27 46 50 53 VarNames = ['FPS
  855. 00003380: 3a 20 20 20 20 20 20 20 27 2c 20 27 27 2c 20 27 : ', '', '
  856. 00003390: 50 6c 61 79 65 72 20 49 44 3a 20 27 2c 20 27 50 Player ID: ', 'P
  857. 000033a0: 6c 61 79 65 72 20 58 3a 20 20 27 2c 20 27 50 6c layer X: ', 'Pl
  858. 000033b0: 61 79 65 72 20 59 3a 20 20 27 5d 3b 0a 20 20 70 ayer Y: '];. p
  859. 000033c0: 6c 61 79 65 72 50 72 6f 70 73 20 3d 20 5b 27 69 layerProps = ['i
  860. 000033d0: 64 27 2c 20 27 6e 61 6d 65 27 2c 20 27 78 27 2c d', 'name', 'x',
  861. 000033e0: 20 27 79 27 5d 3b 0a 20 20 70 6c 61 79 65 72 50 'y'];. playerP
  862. 000033f0: 72 6f 70 4e 61 6d 65 73 20 3d 20 5b 27 49 44 3a ropNames = ['ID:
  863. 00003400: 20 20 20 20 20 27 2c 20 27 4e 61 6d 65 3a 20 20 ', 'Name:
  864. 00003410: 20 27 2c 20 27 58 3a 20 20 20 20 20 20 27 2c 20 ', 'X: ',
  865. 00003420: 27 59 3a 20 20 20 20 20 20 27 5d 3b 0a 20 20 64 'Y: '];. d
  866. 00003430: 65 62 75 67 56 61 72 73 2e 70 75 73 68 28 27 27 ebugVars.push(''
  867. 00003440: 29 3b 0a 20 20 64 65 62 75 67 56 61 72 4e 61 6d );. debugVarNam
  868. 00003450: 65 73 2e 70 75 73 68 28 27 27 29 3b 0a 20 20 66 es.push('');. f
  869. 00003460: 6f 72 20 28 6a 20 3d 20 30 2c 20 6c 65 6e 20 3d or (j = 0, len =
  870. 00003470: 20 72 65 6d 6f 74 65 50 6c 61 79 65 72 73 2e 6c remotePlayers.l
  871. 00003480: 65 6e 67 74 68 3b 20 6a 20 3c 20 6c 65 6e 3b 20 ength; j < len;
  872. 00003490: 6a 2b 2b 29 20 7b 0a 20 20 20 20 70 20 3d 20 72 j++) {. p = r
  873. 000034a0: 65 6d 6f 74 65 50 6c 61 79 65 72 73 5b 6a 5d 3b emotePlayers[j];
  874. 000034b0: 0a 20 20 20 20 64 65 62 75 67 56 61 72 73 2e 70 . debugVars.p
  875. 000034c0: 75 73 68 28 27 27 29 3b 0a 20 20 20 20 64 65 62 ush('');. deb
  876. 000034d0: 75 67 56 61 72 4e 61 6d 65 73 2e 70 75 73 68 28 ugVarNames.push(
  877. 000034e0: 27 27 29 3b 0a 20 20 20 20 70 6c 61 79 65 72 20 '');. player
  878. 000034f0: 3d 20 70 6c 61 79 65 72 42 79 49 64 28 70 2e 69 = playerById(p.i
  879. 00003500: 64 29 3b 0a 20 20 20 20 66 6f 72 20 28 6b 20 3d d);. for (k =
  880. 00003510: 20 30 2c 20 6c 65 6e 31 20 3d 20 70 6c 61 79 65 0, len1 = playe
  881. 00003520: 72 50 72 6f 70 73 2e 6c 65 6e 67 74 68 3b 20 6b rProps.length; k
  882. 00003530: 20 3c 20 6c 65 6e 31 3b 20 6b 2b 2b 29 20 7b 0a < len1; k++) {.
  883. 00003540: 20 20 20 20 20 20 70 70 20 3d 20 70 6c 61 79 65 pp = playe
  884. 00003550: 72 50 72 6f 70 73 5b 6b 5d 3b 0a 20 20 20 20 20 rProps[k];.
  885. 00003560: 20 64 65 62 75 67 56 61 72 73 2e 70 75 73 68 28 debugVars.push(
  886. 00003570: 70 6c 61 79 65 72 5b 70 70 5d 29 3b 0a 20 20 20 player[pp]);.
  887. 00003580: 20 20 20 64 65 62 75 67 56 61 72 4e 61 6d 65 73 debugVarNames
  888. 00003590: 2e 70 75 73 68 28 70 70 29 3b 0a 20 20 20 20 7d .push(pp);. }
  889. 000035a0: 0a 20 20 7d 0a 20 20 66 6f 72 20 28 64 76 20 3d . }. for (dv =
  890. 000035b0: 20 6c 20 3d 20 30 2c 20 6c 65 6e 32 20 3d 20 64 l = 0, len2 = d
  891. 000035c0: 65 62 75 67 56 61 72 73 2e 6c 65 6e 67 74 68 3b ebugVars.length;
  892. 000035d0: 20 6c 20 3c 20 6c 65 6e 32 3b 20 64 76 20 3d 20 l < len2; dv =
  893. 000035e0: 2b 2b 6c 29 20 7b 0a 20 20 20 20 69 20 3d 20 64 ++l) {. i = d
  894. 000035f0: 65 62 75 67 56 61 72 73 5b 64 76 5d 3b 0a 20 20 ebugVars[dv];.
  895. 00003600: 20 20 63 74 78 2e 66 69 6c 6c 54 65 78 74 28 64 ctx.fillText(d
  896. 00003610: 65 62 75 67 56 61 72 4e 61 6d 65 73 5b 69 5d 20 ebugVarNames[i]
  897. 00003620: 2b 20 64 76 2c 20 38 2c 20 32 38 20 2b 20 28 69 + dv, 8, 28 + (i
  898. 00003630: 20 2b 20 31 29 20 2a 20 31 32 29 3b 0a 20 20 7d + 1) * 12);. }
  899. 00003640: 0a 20 20 72 65 74 75 72 6e 20 63 74 78 2e 72 65 . return ctx.re
  900. 00003650: 73 74 6f 72 65 28 29 3b 0a 7d 3b 0a 0a 0a 2f 2a store();.};.../*
  901. 00003660: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
  902. 00003670: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  903. 00003680: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  904. 00003690: 2a 2a 0a 2a 2a 20 47 41 4d 45 20 56 41 52 49 41 **.** GAME VARIA
  905. 000036a0: 42 4c 45 53 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a BLES.***********
  906. 000036b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  907. 000036c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  908. 000036d0: 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a 0a 2f 2a 0a ******. */.../*.
  909. 000036e0: 63 61 6e 76 61 73 20 3d 20 75 6e 64 65 66 69 6e canvas = undefin
  910. 000036f0: 65 64 0a 63 74 78 20 3d 20 75 6e 64 65 66 69 6e ed.ctx = undefin
  911. 00003700: 65 64 0a 64 69 76 43 61 6e 76 61 73 20 3d 20 75 ed.divCanvas = u
  912. 00003710: 6e 64 65 66 69 6e 65 64 0a 6b 65 79 73 20 3d 20 ndefined.keys =
  913. 00003720: 75 6e 64 65 66 69 6e 65 64 0a 6c 6f 63 61 6c 50 undefined.localP
  914. 00003730: 6c 61 79 65 72 20 3d 20 75 6e 64 65 66 69 6e 65 layer = undefine
  915. 00003740: 64 0a 6c 6f 63 61 6c 50 6c 61 79 65 72 4e 61 6d d.localPlayerNam
  916. 00003750: 65 20 3d 20 75 6e 64 65 66 69 6e 65 64 0a 72 65 e = undefined.re
  917. 00003760: 6d 6f 74 65 50 6c 61 79 65 72 73 20 3d 20 75 6e motePlayers = un
  918. 00003770: 64 65 66 69 6e 65 64 0a 72 6f 6f 6d 20 3d 20 75 defined.room = u
  919. 00003780: 6e 64 65 66 69 6e 65 64 0a 63 61 6d 65 72 61 20 ndefined.camera
  920. 00003790: 3d 20 75 6e 64 65 66 69 6e 65 64 0a 73 6f 63 6b = undefined.sock
  921. 000037a0: 65 74 20 3d 20 75 6e 64 65 66 69 6e 65 64 0a 20 et = undefined.
  922. 000037b0: 2a 2f 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a */.../*.********
  923. 000037c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  924. 000037d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  925. 000037e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 47 41 4d *********.** GAM
  926. 000037f0: 45 20 45 56 45 4e 54 20 48 41 4e 44 4c 45 52 53 E EVENT HANDLERS
  927. 00003800: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
  928. 00003810: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  929. 00003820: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  930. 00003830: 2a 2a 0a 20 2a 2f 0a 0a 73 65 74 45 76 65 6e 74 **. */..setEvent
  931. 00003840: 48 61 6e 64 6c 65 72 73 20 3d 20 66 75 6e 63 74 Handlers = funct
  932. 00003850: 69 6f 6e 28 29 20 7b 0a 20 20 77 69 6e 64 6f 77 ion() {. window
  933. 00003860: 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 .addEventListene
  934. 00003870: 72 28 27 6b 65 79 64 6f 77 6e 27 2c 20 6f 6e 4b r('keydown', onK
  935. 00003880: 65 79 64 6f 77 6e 2c 20 66 61 6c 73 65 29 3b 0a eydown, false);.
  936. 00003890: 20 20 77 69 6e 64 6f 77 2e 61 64 64 45 76 65 6e window.addEven
  937. 000038a0: 74 4c 69 73 74 65 6e 65 72 28 27 6b 65 79 75 70 tListener('keyup
  938. 000038b0: 27 2c 20 6f 6e 4b 65 79 75 70 2c 20 66 61 6c 73 ', onKeyup, fals
  939. 000038c0: 65 29 3b 0a 20 20 77 69 6e 64 6f 77 2e 61 64 64 e);. window.add
  940. 000038d0: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 27 72 EventListener('r
  941. 000038e0: 65 73 69 7a 65 27 2c 20 6f 6e 52 65 73 69 7a 65 esize', onResize
  942. 000038f0: 2c 20 66 61 6c 73 65 29 3b 0a 20 20 73 6f 63 6b , false);. sock
  943. 00003900: 65 74 2e 6f 6e 28 27 63 6f 6e 6e 65 63 74 27 2c et.on('connect',
  944. 00003910: 20 6f 6e 53 6f 63 6b 65 74 43 6f 6e 6e 65 63 74 onSocketConnect
  945. 00003920: 65 64 29 3b 0a 20 20 73 6f 63 6b 65 74 2e 6f 6e ed);. socket.on
  946. 00003930: 28 27 64 69 73 63 6f 6e 6e 65 63 74 27 2c 20 6f ('disconnect', o
  947. 00003940: 6e 53 6f 63 6b 65 74 44 69 73 63 6f 6e 6e 65 63 nSocketDisconnec
  948. 00003950: 74 29 3b 0a 20 20 73 6f 63 6b 65 74 2e 6f 6e 28 t);. socket.on(
  949. 00003960: 27 6e 65 77 20 70 6c 61 79 65 72 27 2c 20 6f 6e 'new player', on
  950. 00003970: 4e 65 77 50 6c 61 79 65 72 29 3b 0a 20 20 73 6f NewPlayer);. so
  951. 00003980: 63 6b 65 74 2e 6f 6e 28 27 6d 6f 76 65 20 70 6c cket.on('move pl
  952. 00003990: 61 79 65 72 27 2c 20 6f 6e 4d 6f 76 65 50 6c 61 ayer', onMovePla
  953. 000039a0: 79 65 72 29 3b 0a 20 20 73 6f 63 6b 65 74 2e 6f yer);. socket.o
  954. 000039b0: 6e 28 27 72 65 6d 6f 76 65 20 70 6c 61 79 65 72 n('remove player
  955. 000039c0: 27 2c 20 6f 6e 52 65 6d 6f 76 65 50 6c 61 79 65 ', onRemovePlaye
  956. 000039d0: 72 29 3b 0a 7d 3b 0a 0a 0a 2f 2a 0a 2a 2a 2a 2a r);.};.../*.****
  957. 000039e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  958. 000039f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  959. 00003a00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
  960. 00003a10: 20 47 41 4d 45 20 41 4e 49 4d 41 54 49 4f 4e 20 GAME ANIMATION
  961. 00003a20: 4c 4f 4f 50 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a LOOP.***********
  962. 00003a30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  963. 00003a40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
  964. 00003a50: 2a 2a 2a 2a 2a 2a 0a 20 2a 2f 0a 0a 6c 61 73 74 ******. */..last
  965. 00003a60: 55 70 64 61 74 65 20 3d 20 44 61 74 65 2e 6e 6f Update = Date.no
  966. 00003a70: 77 28 29 3b 0a 0a 64 65 6c 74 61 54 69 6d 65 20 w();..deltaTime
  967. 00003a80: 3d 20 76 6f 69 64 20 30 3b 0a 0a 0a 2f 2a 0a 63 = void 0;.../*.c
  968. 00003a90: 68 61 6e 6e 65 6c 73 20 3d 20 75 6e 64 65 66 69 hannels = undefi
  969. 00003aa0: 6e 65 64 0a 63 68 65 63 6b 50 61 73 73 20 3d 20 ned.checkPass =
  970. 00003ab0: 75 6e 64 65 66 69 6e 65 64 0a 65 6d 6f 6a 69 73 undefined.emojis
  971. 00003ac0: 20 3d 20 75 6e 64 65 66 69 6e 65 64 0a 65 73 63 = undefined.esc
  972. 00003ad0: 61 70 65 52 65 67 65 78 20 3d 20 75 6e 64 65 66 apeRegex = undef
  973. 00003ae0: 69 6e 65 64 0a 67 65 74 55 73 65 72 6e 61 6d 65 ined.getUsername
  974. 00003af0: 43 6f 6f 6b 69 65 20 3d 20 75 6e 64 65 66 69 6e Cookie = undefin
  975. 00003b00: 65 64 0a 69 20 3d 20 75 6e 64 65 66 69 6e 65 64 ed.i = undefined
  976. 00003b10: 0a 69 6e 69 74 20 3d 20 75 6e 64 65 66 69 6e 65 .init = undefine
  977. 00003b20: 64 0a 69 6e 69 74 63 68 61 74 20 3d 20 75 6e 64 d.initchat = und
  978. 00003b30: 65 66 69 6e 65 64 0a 6c 65 6e 20 3d 20 75 6e 64 efined.len = und
  979. 00003b40: 65 66 69 6e 65 64 0a 6c 6f 67 69 6e 20 3d 20 75 efined.login = u
  980. 00003b50: 6e 64 65 66 69 6e 65 64 0a 6c 6f 67 6f 75 74 20 ndefined.logout
  981. 00003b60: 3d 20 75 6e 64 65 66 69 6e 65 64 0a 6e 61 6d 65 = undefined.name
  982. 00003b70: 20 3d 20 75 6e 64 65 66 69 6e 65 64 0a 70 61 72 = undefined.par
  983. 00003b80: 73 65 4d 65 73 73 61 67 65 20 3d 20 75 6e 64 65 seMessage = unde
  984. 00003b90: 66 69 6e 65 64 0a 72 65 66 20 3d 20 75 6e 64 65 fined.ref = unde
  985. 00003ba0: 66 69 6e 65 64 0a 72 65 67 69 73 74 65 72 20 3d fined.register =
  986. 00003bb0: 20 75 6e 64 65 66 69 6e 65 64 0a 72 65 6d 6f 76 undefined.remov
  987. 00003bc0: 65 55 73 65 72 6e 61 6d 65 43 6f 6f 6b 69 65 20 eUsernameCookie
  988. 00003bd0: 3d 20 75 6e 64 65 66 69 6e 65 64 0a 73 61 66 65 = undefined.safe
  989. 00003be0: 20 3d 20 75 6e 64 65 66 69 6e 65 64 0a 73 65 73 = undefined.ses
  990. 00003bf0: 73 69 6f 6e 69 64 20 3d 20 75 6e 64 65 66 69 6e sionid = undefin
  991. 00003c00: 65 64 0a 73 65 74 55 73 65 72 6e 61 6d 65 43 6f ed.setUsernameCo
  992. 00003c10: 6f 6b 69 65 20 3d 20 75 6e 64 65 66 69 6e 65 64 okie = undefined
  993. 00003c20: 0a 73 65 74 73 74 61 74 75 73 20 3d 20 75 6e 64 .setstatus = und
  994. 00003c30: 65 66 69 6e 65 64 0a 73 6f 63 6b 65 74 20 3d 20 efined.socket =
  995. 00003c40: 75 6e 64 65 66 69 6e 65 64 0a 20 2a 2f 0a 0a 73 undefined. */..s
  996. 00003c50: 6f 63 6b 65 74 20 3d 20 6e 75 6c 6c 3b 0a 0a 73 ocket = null;..s
  997. 00003c60: 65 73 73 69 6f 6e 69 64 20 3d 20 6e 75 6c 6c 3b essionid = null;
  998. 00003c70: 0a 0a 63 68 61 6e 6e 65 6c 73 20 3d 20 5b 5d 3b ..channels = [];
  999. 00003c80: 0a 0a 65 6d 6f 6a 69 73 20 3d 20 7b 0a 20 20 27 ..emojis = {. '
  1000. 00003c90: 3a 29 27 3a 20 27 68 74 74 70 3a 2f 2f 65 6d 6f :)': 'http://emo
  1001. 00003ca0: 6a 69 6f 6e 65 2e 63 6f 6d 2f 77 70 2d 63 6f 6e jione.com/wp-con
  1002. 00003cb0: 74 65 6e 74 2f 75 70 6c 6f 61 64 73 2f 61 73 73 tent/uploads/ass
  1003. 00003cc0: 65 74 73 2f 65 6d 6f 6a 69 73 2f 31 66 36 30 33 ets/emojis/1f603
  1004. 00003cd0: 2e 73 76 67 27 2c 0a 20 20 27 3a 75 6e 69 63 6f .svg',. ':unico
  1005. 00003ce0: 72 6e 3a 27 3a 20 27 68 74 74 70 3a 2f 2f 65 6d rn:': 'http://em
  1006. 00003cf0: 6f 6a 69 6f 6e 65 2e 63 6f 6d 2f 77 70 2d 63 6f ojione.com/wp-co
  1007. 00003d00: 6e 74 65 6e 74 2f 75 70 6c 6f 61 64 73 2f 61 73 ntent/uploads/as
  1008. 00003d10: 73 65 74 73 2f 65 6d 6f 6a 69 73 2f 31 66 39 38 sets/emojis/1f98
  1009. 00003d20: 34 2e 73 76 67 27 0a 7d 3b 0a 0a 72 65 66 20 3d 4.svg'.};..ref =
  1010. 00003d30: 20 5b 27 32 30 25 73 61 64 64 65 72 27 2c 20 27 ['20%sadder', '
  1011. 00003d40: 61 64 72 69 61 6e 79 6f 75 68 61 70 70 79 6e 6f adrianyouhappyno
  1012. 00003d50: 77 27 2c 20 27 41 4a 73 63 61 72 65 64 27 2c 20 w', 'AJscared',
  1013. 00003d60: 27 62 69 67 6d 61 63 27 2c 20 27 63 61 64 61 6e 'bigmac', 'cadan
  1014. 00003d70: 63 65 27 2c 20 27 63 6f 6c 67 61 74 65 68 61 70 ce', 'colgatehap
  1015. 00003d80: 70 79 27 2c 20 27 64 65 72 70 27 2c 20 27 65 79 py', 'derp', 'ey
  1016. 00003d90: 65 72 6f 6c 6c 27 2c 20 27 66 61 62 75 6c 6f 75 eroll', 'fabulou
  1017. 00003da0: 73 27 2c 20 27 66 61 63 65 68 6f 6f 66 27 2c 20 s', 'facehoof',
  1018. 00003db0: 27 67 72 65 65 64 27 2c 20 27 68 65 72 6f 27 2c 'greed', 'hero',
  1019. 00003dc0: 20 27 6c 61 75 67 68 27 2c 20 27 6c 69 65 27 2c 'laugh', 'lie',
  1020. 00003dd0: 20 27 6c 79 72 61 65 78 63 69 74 65 64 27 2c 20 'lyraexcited',
  1021. 00003de0: 27 6c 79 72 61 73 61 64 27 2c 20 27 4e 4d 32 27 'lyrasad', 'NM2'
  1022. 00003df0: 2c 20 27 4e 4d 33 27 2c 20 27 6e 6f 74 61 6d 75 , 'NM3', 'notamu
  1023. 00003e00: 73 65 64 27 2c 20 27 70 68 6f 74 6f 66 69 6e 69 sed', 'photofini
  1024. 00003e10: 73 68 27 2c 20 27 70 70 73 6d 69 6c 65 27 2c 20 sh', 'ppsmile',
  1025. 00003e20: 27 70 77 69 6e 6b 27 2c 20 27 52 44 68 75 68 27 'pwink', 'RDhuh'
  1026. 00003e30: 2c 20 27 72 64 73 6d 69 6c 65 27 2c 20 27 72 64 , 'rdsmile', 'rd
  1027. 00003e40: 77 69 6e 6b 27 2c 20 27 73 63 61 72 65 64 27 2c wink', 'scared',
  1028. 00003e50: 20 27 73 63 69 65 6e 63 65 27 2c 20 27 73 65 72 'science', 'ser
  1029. 00003e60: 69 6f 75 73 54 53 27 2c 20 27 73 68 69 6e 79 27 iousTS', 'shiny'
  1030. 00003e70: 2c 20 27 73 68 72 75 67 27 2c 20 27 73 6f 6d 65 , 'shrug', 'some
  1031. 00003e80: 74 68 69 6e 67 77 65 6e 74 77 72 6f 6e 67 27 2c thingwentwrong',
  1032. 00003e90: 20 27 73 70 69 6b 65 6d 6f 76 27 2c 20 27 73 70 'spikemov', 'sp
  1033. 00003ea0: 69 6b 65 27 2c 20 27 73 71 75 65 65 27 2c 20 27 ike', 'squee', '
  1034. 00003eb0: 73 77 65 65 74 69 65 27 2c 20 27 74 68 69 73 69 sweetie', 'thisi
  1035. 00003ec0: 73 61 62 72 75 73 68 69 65 27 2c 20 27 74 68 6f sabrushie', 'tho
  1036. 00003ed0: 72 67 27 2c 20 27 74 72 69 78 69 65 27 2c 20 27 rg', 'trixie', '
  1037. 00003ee0: 74 73 73 6d 69 6c 65 27 2c 20 27 74 77 69 62 6c tssmile', 'twibl
  1038. 00003ef0: 75 73 68 27 2c 20 27 75 6d 61 64 27 2c 20 27 76 ush', 'umad', 'v
  1039. 00003f00: 69 6e 79 6c 27 2c 20 27 58 54 55 58 53 6d 69 6c inyl', 'XTUXSmil
  1040. 00003f10: 65 79 27 2c 20 27 79 61 79 27 2c 20 27 59 45 41 ey', 'yay', 'YEA
  1041. 00003f20: 48 27 5d 3b 0a 66 6f 72 20 28 6a 20 3d 20 30 2c H'];.for (j = 0,
  1042. 00003f30: 20 6c 65 6e 20 3d 20 72 65 66 2e 6c 65 6e 67 74 len = ref.lengt
  1043. 00003f40: 68 3b 20 6a 20 3c 20 6c 65 6e 3b 20 6a 2b 2b 29 h; j < len; j++)
  1044. 00003f50: 20 7b 0a 20 20 6e 61 6d 65 20 3d 20 72 65 66 5b {. name = ref[
  1045. 00003f60: 6a 5d 3b 0a 20 20 65 6d 6f 6a 69 73 5b 22 3a 22 j];. emojis[":"
  1046. 00003f70: 20 2b 20 6e 61 6d 65 20 2b 20 22 3a 22 5d 20 3d + name + ":"] =
  1047. 00003f80: 20 22 2f 69 6d 61 67 65 73 2f 65 6d 6f 6a 69 2f "/images/emoji/
  1048. 00003f90: 22 20 2b 20 6e 61 6d 65 20 2b 20 22 2e 70 6e 67 " + name + ".png
  1049. 00003fa0: 22 3b 0a 7d 0a 0a 73 65 74 55 73 65 72 6e 61 6d ";.}..setUsernam
  1050. 00003fb0: 65 43 6f 6f 6b 69 65 20 3d 20 66 75 6e 63 74 69 eCookie = functi
  1051. 00003fc0: 6f 6e 28 75 73 65 72 6e 61 6d 65 29 20 7b 0a 20 on(username) {.
  1052. 00003fd0: 20 69 66 20 28 43 6f 6f 6b 69 65 73 20 3d 3d 3d if (Cookies ===
  1053. 00003fe0: 20 76 6f 69 64 20 30 29 20 7b 0a 20 20 20 20 72 void 0) {. r
  1054. 00003ff0: 65 74 75 72 6e 20 76 6f 69 64 20 30 3b 0a 20 20 eturn void 0;.
  1055. 00004000: 7d 0a 20 20 69 66 20 28 24 28 27 23 72 65 6d 65 }. if ($('#reme
  1056. 00004010: 6d 62 65 72 27 29 2e 69 73 28 27 3a 63 68 65 63 mber').is(':chec
  1057. 00004020: 6b 65 64 27 29 29 20 7b 0a 20 20 20 20 72 65 74 ked')) {. ret
  1058. 00004030: 75 72 6e 20 43 6f 6f 6b 69 65 73 2e 73 65 74 28 urn Cookies.set(
  1059. 00004040: 27 75 73 65 72 6e 61 6d 65 27 2c 20 75 73 65 72 'username', user
  1060. 00004050: 6e 61 6d 65 29 3b 0a 20 20 7d 0a 7d 3b 0a 0a 67 name);. }.};..g
  1061. 00004060: 65 74 55 73 65 72 6e 61 6d 65 43 6f 6f 6b 69 65 etUsernameCookie
  1062. 00004070: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a = function() {.
  1063. 00004080: 20 20 69 66 20 28 43 6f 6f 6b 69 65 73 20 3d 3d if (Cookies ==
  1064. 00004090: 3d 20 76 6f 69 64 20 30 29 20 7b 0a 20 20 20 20 = void 0) {.
  1065. 000040a0: 72 65 74 75 72 6e 20 76 6f 69 64 20 30 3b 0a 20 return void 0;.
  1066. 000040b0: 20 7d 0a 20 20 72 65 74 75 72 6e 20 43 6f 6f 6b }. return Cook
  1067. 000040c0: 69 65 73 2e 67 65 74 28 27 75 73 65 72 6e 61 6d ies.get('usernam
  1068. 000040d0: 65 27 29 3b 0a 7d 3b 0a 0a 72 65 6d 6f 76 65 55 e');.};..removeU
  1069. 000040e0: 73 65 72 6e 61 6d 65 43 6f 6f 6b 69 65 20 3d 20 sernameCookie =
  1070. 000040f0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 69 function() {. i
  1071. 00004100: 66 20 28 43 6f 6f 6b 69 65 73 20 3d 3d 3d 20 76 f (Cookies === v
  1072. 00004110: 6f 69 64 20 30 29 20 7b 0a 20 20 20 20 72 65 74 oid 0) {. ret
  1073. 00004120: 75 72 6e 20 76 6f 69 64 20 30 3b 0a 20 20 7d 0a urn void 0;. }.
  1074. 00004130: 20 20 72 65 74 75 72 6e 20 43 6f 6f 6b 69 65 73 return Cookies
  1075. 00004140: 2e 72 65 6d 6f 76 65 28 27 75 73 65 72 6e 61 6d .remove('usernam
  1076. 00004150: 65 27 29 3b 0a 7d 3b 0a 0a 73 65 74 73 74 61 74 e');.};..setstat
  1077. 00004160: 75 73 20 3d 20 66 75 6e 63 74 69 6f 6e 28 73 74 us = function(st
  1078. 00004170: 61 74 2c 20 73 75 62 73 63 72 2c 20 69 73 65 72 at, subscr, iser
  1079. 00004180: 72 6f 72 29 20 7b 0a 20 20 76 61 72 20 65 6c 65 ror) {. var ele
  1080. 00004190: 6d 2c 20 68 74 6d 6c 3b 0a 20 20 65 6c 65 6d 20 m, html;. elem
  1081. 000041a0: 3d 20 76 6f 69 64 20 30 3b 0a 20 20 68 74 6d 6c = void 0;. html
  1082. 000041b0: 20 3d 20 76 6f 69 64 20 30 3b 0a 20 20 69 66 20 = void 0;. if
  1083. 000041c0: 28 74 79 70 65 6f 66 20 73 75 62 73 63 72 20 21 (typeof subscr !
  1084. 000041d0: 3d 3d 20 27 73 74 72 69 6e 67 27 29 20 7b 0a 20 == 'string') {.
  1085. 000041e0: 20 20 20 69 73 65 72 72 6f 72 20 3d 20 73 75 62 iserror = sub
  1086. 000041f0: 73 63 72 3b 0a 20 20 20 20 73 75 62 73 63 72 20 scr;. subscr
  1087. 00004200: 3d 20 27 27 3b 0a 20 20 7d 0a 20 20 65 6c 65 6d = '';. }. elem
  1088. 00004210: 20 3d 20 24 28 27 23 63 6f 6e 6e 73 74 61 74 75 = $('#connstatu
  1089. 00004220: 73 27 29 3b 0a 20 20 68 74 6d 6c 20 3d 20 73 74 s');. html = st
  1090. 00004230: 61 74 20 2b 20 22 3c 62 72 3e 3c 73 6d 61 6c 6c at + "<br><small
  1091. 00004240: 3e 22 20 2b 20 73 75 62 73 63 72 20 2b 20 22 3c >" + subscr + "<
  1092. 00004250: 2f 73 6d 61 6c 6c 3e 22 3b 0a 20 20 65 6c 65 6d /small>";. elem
  1093. 00004260: 2e 68 74 6d 6c 28 68 74 6d 6c 29 3b 0a 20 20 69 .html(html);. i
  1094. 00004270: 66 20 28 69 73 65 72 72 6f 72 29 20 7b 0a 20 20 f (iserror) {.
  1095. 00004280: 20 20 72 65 74 75 72 6e 20 65 6c 65 6d 2e 61 64 return elem.ad
  1096. 00004290: 64 43 6c 61 73 73 28 27 65 72 72 6f 72 27 29 3b dClass('error');
  1097. 000042a0: 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 . } else {.
  1098. 000042b0: 72 65 74 75 72 6e 20 65 6c 65 6d 2e 72 65 6d 6f return elem.remo
  1099. 000042c0: 76 65 43 6c 61 73 73 28 27 65 72 72 6f 72 27 29 veClass('error')
  1100. 000042d0: 3b 0a 20 20 7d 0a 7d 3b 0a 0a 63 68 65 63 6b 50 ;. }.};..checkP
  1101. 000042e0: 61 73 73 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 ass = function()
  1102. 000042f0: 20 7b 0a 20 20 76 61 72 20 70 61 73 73 31 2c 20 {. var pass1,
  1103. 00004300: 70 61 73 73 32 2c 20 72 65 67 69 73 74 65 72 62 pass2, registerb
  1104. 00004310: 75 74 74 6f 6e 3b 0a 20 20 70 61 73 73 31 20 3d utton;. pass1 =
  1105. 00004320: 20 24 28 27 23 70 61 73 73 77 6f 72 64 27 29 2e $('#password').
  1106. 00004330: 76 61 6c 28 29 3b 0a 20 20 70 61 73 73 32 20 3d val();. pass2 =
  1107. 00004340: 20 24 28 27 23 70 61 73 73 77 6f 72 64 32 27 29 $('#password2')
  1108. 00004350: 2e 76 61 6c 28 29 3b 0a 20 20 72 65 67 69 73 74 .val();. regist
  1109. 00004360: 65 72 62 75 74 74 6f 6e 20 3d 20 24 28 27 23 62 erbutton = $('#b
  1110. 00004370: 74 6e 27 29 3b 0a 20 20 69 66 20 28 70 61 73 73 tn');. if (pass
  1111. 00004380: 31 20 3d 3d 3d 20 70 61 73 73 32 29 20 7b 0a 20 1 === pass2) {.
  1112. 00004390: 20 20 20 72 65 67 69 73 74 65 72 62 75 74 74 6f registerbutto
  1113. 000043a0: 6e 2e 70 72 6f 70 28 27 64 69 73 61 62 6c 65 64 n.prop('disabled
  1114. 000043b0: 27 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 24 ', false);. $
  1115. 000043c0: 28 27 23 70 61 73 73 77 6f 72 64 32 27 29 2e 72 ('#password2').r
  1116. 000043d0: 65 6d 6f 76 65 43 6c 61 73 73 28 27 62 61 64 70 emoveClass('badp
  1117. 000043e0: 61 73 73 27 29 3b 0a 20 20 20 20 72 65 74 75 72 ass');. retur
  1118. 000043f0: 6e 20 24 28 27 23 70 61 73 73 77 6f 72 64 32 27 n $('#password2'
  1119. 00004400: 29 2e 61 64 64 43 6c 61 73 73 28 27 67 6f 6f 64 ).addClass('good
  1120. 00004410: 70 61 73 73 27 29 3b 0a 20 20 7d 20 65 6c 73 65 pass');. } else
  1121. 00004420: 20 7b 0a 20 20 20 20 72 65 67 69 73 74 65 72 62 {. registerb
  1122. 00004430: 75 74 74 6f 6e 2e 70 72 6f 70 28 27 64 69 73 61 utton.prop('disa
  1123. 00004440: 62 6c 65 64 27 2c 20 74 72 75 65 29 3b 0a 20 20 bled', true);.
  1124. 00004450: 20 20 24 28 27 23 70 61 73 73 77 6f 72 64 32 27 $('#password2'
  1125. 00004460: 29 2e 72 65 6d 6f 76 65 43 6c 61 73 73 28 27 67 ).removeClass('g
  1126. 00004470: 6f 6f 64 70 61 73 73 27 29 3b 0a 20 20 20 20 72 oodpass');. r
  1127. 00004480: 65 74 75 72 6e 20 24 28 27 23 70 61 73 73 77 6f eturn $('#passwo
  1128. 00004490: 72 64 32 27 29 2e 61 64 64 43 6c 61 73 73 28 27 rd2').addClass('
  1129. 000044a0: 62 61 64 70 61 73 73 27 29 3b 0a 20 20 7d 0a 7d badpass');. }.}
  1130. 000044b0: 3b 0a 0a 73 61 66 65 20 3d 20 66 75 6e 63 74 69 ;..safe = functi
  1131. 000044c0: 6f 6e 28 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 20 on(callback) {.
  1132. 000044d0: 20 76 61 72 20 65 72 72 6f 72 2c 20 65 72 72 6f var error, erro
  1133. 000044e0: 72 31 3b 0a 20 20 74 72 79 20 7b 0a 20 20 20 20 r1;. try {.
  1134. 000044f0: 72 65 74 75 72 6e 20 63 61 6c 6c 62 61 63 6b 28 return callback(
  1135. 00004500: 29 3b 0a 20 20 7d 20 63 61 74 63 68 20 28 65 72 );. } catch (er
  1136. 00004510: 72 6f 72 31 29 20 7b 0a 20 20 20 20 65 72 72 6f ror1) {. erro
  1137. 00004520: 72 20 3d 20 65 72 72 6f 72 31 3b 0a 20 20 20 20 r = error1;.
  1138. 00004530: 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 65 72 72 6f console.log(erro
  1139. 00004540: 72 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 r);. return s
  1140. 00004550: 65 74 73 74 61 74 75 73 28 65 72 72 2e 6d 65 73 etstatus(err.mes
  1141. 00004560: 73 61 67 65 2c 20 74 72 75 65 29 3b 0a 20 20 7d sage, true);. }
  1142. 00004570: 0a 7d 3b 0a 0a 65 73 63 61 70 65 52 65 67 65 78 .};..escapeRegex
  1143. 00004580: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 73 74 72 29 = function(str)
  1144. 00004590: 20 7b 0a 20 20 72 65 74 75 72 6e 20 73 74 72 2e {. return str.
  1145. 000045a0: 72 65 70 6c 61 63 65 28 2f 5b 5c 2d 5c 5b 5c 5d replace(/[\-\[\]
  1146. 000045b0: 5c 2f 5c 7b 5c 7d 5c 28 5c 29 5c 2a 5c 2b 5c 3f \/\{\}\(\)\*\+\?
  1147. 000045c0: 5c 2e 5c 5c 5c 5e 5c 24 5c 7c 5d 2f 67 2c 20 27 \.\\\^\$\|]/g, '
  1148. 000045d0: 5c 5c 24 26 27 29 3b 0a 7d 3b 0a 0a 70 61 72 73 \\$&');.};..pars
  1149. 000045e0: 65 4d 65 73 73 61 67 65 20 3d 20 66 75 6e 63 74 eMessage = funct
  1150. 000045f0: 69 6f 6e 28 68 74 6d 6c 29 20 7b 0a 20 20 76 61 ion(html) {. va
  1151. 00004600: 72 20 65 6d 6f 6a 69 2c 20 6c 69 6e 6b 3b 0a 20 r emoji, link;.
  1152. 00004610: 20 66 6f 72 20 28 65 6d 6f 6a 69 20 69 6e 20 65 for (emoji in e
  1153. 00004620: 6d 6f 6a 69 73 29 20 7b 0a 20 20 20 20 6c 69 6e mojis) {. lin
  1154. 00004630: 6b 20 3d 20 65 6d 6f 6a 69 73 5b 65 6d 6f 6a 69 k = emojis[emoji
  1155. 00004640: 5d 3b 0a 20 20 20 20 68 74 6d 6c 20 3d 20 68 74 ];. html = ht
  1156. 00004650: 6d 6c 2e 72 65 70 6c 61 63 65 28 6e 65 77 20 52 ml.replace(new R
  1157. 00004660: 65 67 45 78 70 28 65 73 63 61 70 65 52 65 67 65 egExp(escapeRege
  1158. 00004670: 78 28 65 6d 6f 6a 69 29 2c 20 27 67 69 27 29 2c x(emoji), 'gi'),
  1159. 00004680: 20 22 3c 69 6d 67 20 61 6c 74 3d 27 22 20 2b 20 "<img alt='" +
  1160. 00004690: 65 6d 6f 6a 69 20 2b 20 22 27 20 73 72 63 3d 27 emoji + "' src='
  1161. 000046a0: 22 20 2b 20 6c 69 6e 6b 20 2b 20 22 27 3e 22 29 " + link + "'>")
  1162. 000046b0: 3b 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 68 ;. }. return h
  1163. 000046c0: 74 6d 6c 3b 0a 7d 3b 0a 0a 69 6e 69 74 20 3d 20 tml;.};..init =
  1164. 000046d0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 72 function() {. r
  1165. 000046e0: 65 74 75 72 6e 20 73 61 66 65 28 66 75 6e 63 74 eturn safe(funct
  1166. 000046f0: 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 61 72 20 ion() {. var
  1167. 00004700: 75 73 65 72 6e 61 6d 65 3b 0a 20 20 20 20 75 73 username;. us
  1168. 00004710: 65 72 6e 61 6d 65 20 3d 20 76 6f 69 64 20 30 3b ername = void 0;
  1169. 00004720: 0a 20 20 20 20 73 6f 63 6b 65 74 20 3d 20 69 6f . socket = io
  1170. 00004730: 2e 63 6f 6e 6e 65 63 74 28 29 3b 0a 20 20 20 20 .connect();.
  1171. 00004740: 73 6f 63 6b 65 74 2e 6f 6e 28 27 63 6f 6e 6e 65 socket.on('conne
  1172. 00004750: 63 74 27 2c 20 66 75 6e 63 74 69 6f 6e 28 29 20 ct', function()
  1173. 00004760: 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 {. return s
  1174. 00004770: 65 74 73 74 61 74 75 73 28 27 43 6f 6e 6e 65 63 etstatus('Connec
  1175. 00004780: 74 65 64 20 74 6f 20 74 68 65 20 73 65 72 76 65 ted to the serve
  1176. 00004790: 72 21 27 29 3b 0a 20 20 20 20 7d 29 3b 0a 20 20 r!');. });.
  1177. 000047a0: 20 20 73 6f 63 6b 65 74 2e 6f 6e 28 27 73 65 74 socket.on('set
  1178. 000047b0: 69 64 27 2c 20 66 75 6e 63 74 69 6f 6e 28 64 61 id', function(da
  1179. 000047c0: 74 61 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 ta) {. retu
  1180. 000047d0: 72 6e 20 73 65 73 73 69 6f 6e 69 64 20 3d 20 64 rn sessionid = d
  1181. 000047e0: 61 74 61 2e 73 65 73 73 69 6f 6e 69 64 3b 0a 20 ata.sessionid;.
  1182. 000047f0: 20 20 20 7d 29 3b 0a 20 20 20 20 73 6f 63 6b 65 });. socke
  1183. 00004800: 74 2e 6f 6e 28 27 64 69 73 63 6f 6e 6e 65 63 74 t.on('disconnect
  1184. 00004810: 27 2c 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ', function() {.
  1185. 00004820: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 74 return set
  1186. 00004830: 73 74 61 74 75 73 28 27 4c 6f 73 74 20 63 6f 6e status('Lost con
  1187. 00004840: 6e 65 63 74 69 6f 6e 21 27 2c 20 74 72 75 65 29 nection!', true)
  1188. 00004850: 3b 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 24 28 ;. });. $(
  1189. 00004860: 27 23 70 61 73 73 77 6f 72 64 27 29 2e 6b 65 79 '#password').key
  1190. 00004870: 64 6f 77 6e 28 66 75 6e 63 74 69 6f 6e 28 65 76 down(function(ev
  1191. 00004880: 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 69 66 20 ent) {. if
  1192. 00004890: 28 65 76 65 6e 74 2e 6b 65 79 43 6f 64 65 20 3d (event.keyCode =
  1193. 000048a0: 3d 3d 20 31 33 29 20 7b 0a 20 20 20 20 20 20 20 == 13) {.
  1194. 000048b0: 20 65 76 65 6e 74 2e 70 72 65 76 65 6e 74 44 65 event.preventDe
  1195. 000048c0: 66 61 75 6c 74 28 29 3b 0a 20 20 20 20 20 20 20 fault();.
  1196. 000048d0: 20 72 65 74 75 72 6e 20 24 28 27 23 62 74 6e 27 return $('#btn'
  1197. 000048e0: 29 2e 63 6c 69 63 6b 28 29 3b 0a 20 20 20 20 20 ).click();.
  1198. 000048f0: 20 7d 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 73 }. });. s
  1199. 00004900: 6f 63 6b 65 74 2e 6f 6e 28 27 6c 6f 67 69 6e 2d ocket.on('login-
  1200. 00004910: 63 6f 6d 70 6c 65 74 65 27 2c 20 66 75 6e 63 74 complete', funct
  1201. 00004920: 69 6f 6e 28 64 61 74 61 29 20 7b 0a 20 20 20 20 ion(data) {.
  1202. 00004930: 20 20 73 65 74 55 73 65 72 6e 61 6d 65 43 6f 6f setUsernameCoo
  1203. 00004940: 6b 69 65 28 64 61 74 61 2e 75 73 65 72 6e 61 6d kie(data.usernam
  1204. 00004950: 65 29 3b 0a 20 20 20 20 20 20 73 65 74 73 74 61 e);. setsta
  1205. 00004960: 74 75 73 28 27 57 65 6c 63 6f 6d 65 20 27 20 2b tus('Welcome ' +
  1206. 00004970: 20 64 61 74 61 2e 75 73 65 72 6e 61 6d 65 20 2b data.username +
  1207. 00004980: 20 27 21 27 2c 20 27 4c 6f 61 64 69 6e 67 20 63 '!', 'Loading c
  1208. 00004990: 68 61 74 2e 2e 2e 27 29 3b 0a 20 20 20 20 20 20 hat...');.
  1209. 000049a0: 72 65 74 75 72 6e 20 69 6e 69 74 63 68 61 74 28 return initchat(
  1210. 000049b0: 29 3b 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 73 );. });. s
  1211. 000049c0: 6f 63 6b 65 74 2e 6f 6e 28 27 6c 6f 67 69 6e 2d ocket.on('login-
  1212. 000049d0: 66 61 69 6c 65 64 27 2c 20 66 75 6e 63 74 69 6f failed', functio
  1213. 000049e0: 6e 28 64 61 74 61 29 20 7b 0a 20 20 20 20 20 20 n(data) {.
  1214. 000049f0: 72 65 74 75 72 6e 20 73 65 74 73 74 61 74 75 73 return setstatus
  1215. 00004a00: 28 27 46 61 69 6c 65 64 20 74 6f 20 6c 6f 67 69 ('Failed to logi
  1216. 00004a10: 6e 3a 27 2c 20 64 61 74 61 2e 65 72 72 6f 72 2c n:', data.error,
  1217. 00004a20: 20 74 72 75 65 29 3b 0a 20 20 20 20 7d 29 3b 0a true);. });.
  1218. 00004a30: 20 20 20 20 73 6f 63 6b 65 74 2e 6f 6e 28 27 72 socket.on('r
  1219. 00004a40: 65 67 69 73 74 65 72 2d 63 6f 6d 70 6c 65 74 65 egister-complete
  1220. 00004a50: 27 2c 20 66 75 6e 63 74 69 6f 6e 28 64 61 74 61 ', function(data
  1221. 00004a60: 29 20 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e ) {. return
  1222. 00004a70: 20 73 65 74 73 74 61 74 75 73 28 27 55 73 65 72 setstatus('User
  1223. 00004a80: 6e 61 6d 65 20 5c 27 27 20 2b 20 64 61 74 61 2e name \'' + data.
  1224. 00004a90: 75 73 65 72 6e 61 6d 65 20 2b 20 27 5c 27 20 68 username + '\' h
  1225. 00004aa0: 61 73 20 62 65 65 6e 20 73 75 63 63 65 73 73 66 as been successf
  1226. 00004ab0: 75 6c 6c 79 20 72 65 67 69 73 74 65 72 65 64 27 ully registered'
  1227. 00004ac0: 29 3b 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 73 );. });. s
  1228. 00004ad0: 6f 63 6b 65 74 2e 6f 6e 28 27 72 65 67 69 73 74 ocket.on('regist
  1229. 00004ae0: 65 72 2d 66 61 69 6c 65 64 27 2c 20 66 75 6e 63 er-failed', func
  1230. 00004af0: 74 69 6f 6e 28 64 61 74 61 29 20 7b 0a 20 20 20 tion(data) {.
  1231. 00004b00: 20 20 20 72 65 74 75 72 6e 20 73 65 74 73 74 61 return setsta
  1232. 00004b10: 74 75 73 28 27 46 61 69 6c 65 64 20 74 6f 20 72 tus('Failed to r
  1233. 00004b20: 65 67 69 73 74 65 72 27 2c 20 64 61 74 61 2e 65 egister', data.e
  1234. 00004b30: 72 72 6f 72 2c 20 74 72 75 65 29 3b 0a 20 20 20 rror, true);.
  1235. 00004b40: 20 7d 29 3b 0a 20 20 20 20 75 73 65 72 6e 61 6d });. usernam
  1236. 00004b50: 65 20 3d 20 67 65 74 55 73 65 72 6e 61 6d 65 43 e = getUsernameC
  1237. 00004b60: 6f 6f 6b 69 65 28 29 3b 0a 20 20 20 20 69 66 20 ookie();. if
  1238. 00004b70: 28 75 73 65 72 6e 61 6d 65 29 20 7b 0a 20 20 20 (username) {.
  1239. 00004b80: 20 20 20 72 65 74 75 72 6e 20 24 28 27 23 75 73 return $('#us
  1240. 00004b90: 65 72 6e 61 6d 65 27 29 2e 76 61 6c 28 75 73 65 ername').val(use
  1241. 00004ba0: 72 6e 61 6d 65 29 3b 0a 20 20 20 20 7d 0a 20 20 rname);. }.
  1242. 00004bb0: 7d 29 3b 0a 7d 3b 0a 0a 69 6e 69 74 63 68 61 74 });.};..initchat
  1243. 00004bc0: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a = function() {.
  1244. 00004bd0: 20 20 72 65 74 75 72 6e 20 73 61 66 65 28 66 75 return safe(fu
  1245. 00004be0: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 73 nction() {. s
  1246. 00004bf0: 6f 63 6b 65 74 2e 6f 6e 28 27 64 69 73 63 6f 6e ocket.on('discon
  1247. 00004c00: 6e 65 63 74 27 2c 20 66 75 6e 63 74 69 6f 6e 28 nect', function(
  1248. 00004c10: 29 20 7b 0a 20 20 20 20 20 20 69 66 20 28 24 28 ) {. if ($(
  1249. 00004c20: 27 23 6d 73 67 62 6f 78 27 29 20 3d 3d 20 6e 75 '#msgbox') == nu
  1250. 00004c30: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ll) {. re
  1251. 00004c40: 74 75 72 6e 20 61 6c 65 72 74 28 27 44 69 73 63 turn alert('Disc
  1252. 00004c50: 6f 6e 6e 65 63 74 65 64 20 66 72 6f 6d 20 73 65 onnected from se
  1253. 00004c60: 72 76 65 72 21 27 29 3b 0a 20 20 20 20 20 20 7d rver!');. }
  1254. 00004c70: 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 73 6f 63 . });. soc
  1255. 00004c80: 6b 65 74 2e 6f 6e 28 27 63 68 61 74 2d 64 61 74 ket.on('chat-dat
  1256. 00004c90: 61 27 2c 20 66 75 6e 63 74 69 6f 6e 28 64 61 74 a', function(dat
  1257. 00004ca0: 61 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 68 a) {. var h
  1258. 00004cb0: 74 6d 6c 3b 0a 20 20 20 20 20 20 68 74 6d 6c 20 tml;. html
  1259. 00004cc0: 3d 20 64 61 74 61 2e 68 74 6d 6c 3b 0a 20 20 20 = data.html;.
  1260. 00004cd0: 20 20 20 24 28 27 62 6f 64 79 27 29 2e 68 74 6d $('body').htm
  1261. 00004ce0: 6c 28 68 74 6d 6c 29 3b 0a 20 20 20 20 20 20 73 l(html);. s
  1262. 00004cf0: 6f 63 6b 65 74 2e 6f 6e 28 27 64 69 73 63 6f 6e ocket.on('discon
  1263. 00004d00: 6e 65 63 74 27 2c 20 66 75 6e 63 74 69 6f 6e 28 nect', function(
  1264. 00004d10: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var
  1265. 00004d20: 6d 73 67 62 6f 78 3b 0a 20 20 20 20 20 20 20 20 msgbox;.
  1266. 00004d30: 6d 73 67 62 6f 78 20 3d 20 24 28 27 23 6d 73 67 msgbox = $('#msg
  1267. 00004d40: 62 6f 78 27 29 3b 0a 20 20 20 20 20 20 20 20 6d box');. m
  1268. 00004d50: 73 67 62 6f 78 2e 68 69 64 65 28 29 3b 0a 20 20 sgbox.hide();.
  1269. 00004d60: 20 20 20 20 20 20 69 66 20 28 21 24 28 27 23 72 if (!$('#r
  1270. 00004d70: 65 66 72 65 73 68 6c 69 6e 6b 27 29 5b 30 5d 29 efreshlink')[0])
  1271. 00004d80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 73 67 {. msg
  1272. 00004d90: 62 6f 78 2e 70 61 72 65 6e 74 28 29 2e 61 70 70 box.parent().app
  1273. 00004da0: 65 6e 64 28 27 3c 73 70 61 6e 20 69 64 3d 22 72 end('<span id="r
  1274. 00004db0: 65 66 72 65 73 68 6c 69 6e 6b 22 20 63 6c 61 73 efreshlink" clas
  1275. 00004dc0: 73 3d 22 65 72 72 6f 72 22 3e 4c 6f 73 74 20 63 s="error">Lost c
  1276. 00004dd0: 6f 6e 6e 65 63 74 69 6f 6e 5c 6e 3c 61 20 68 72 onnection\n<a hr
  1277. 00004de0: 65 66 20 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 ef style="displa
  1278. 00004df0: 79 3a 20 6e 6f 6e 65 3b 22 20 6f 6e 63 6c 69 63 y: none;" onclic
  1279. 00004e00: 6b 3d 22 6c 6f 63 61 74 69 6f 6e 2e 68 72 65 66 k="location.href
  1280. 00004e10: 3d 6c 6f 63 61 74 69 6f 6e 2e 68 72 65 66 22 3e =location.href">
  1281. 00004e20: 20 54 72 79 20 72 65 66 72 65 73 68 69 6e 67 3f Try refreshing?
  1282. 00004e30: 3c 2f 61 3e 3c 2f 73 70 61 6e 3e 27 29 3b 0a 20 </a></span>');.
  1283. 00004e40: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
  1284. 00004e50: 20 73 6f 63 6b 65 74 2e 6f 6e 28 27 63 6f 6e 6e socket.on('conn
  1285. 00004e60: 65 63 74 27 2c 20 66 75 6e 63 74 69 6f 6e 28 29 ect', function()
  1286. 00004e70: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 {. ret
  1287. 00004e80: 75 72 6e 20 24 28 27 23 72 65 66 72 65 73 68 6c urn $('#refreshl
  1288. 00004e90: 69 6e 6b 20 61 27 29 2e 73 68 6f 77 28 29 3b 0a ink a').show();.
  1289. 00004ea0: 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 });.
  1290. 00004eb0: 20 20 20 20 72 65 74 75 72 6e 20 73 6f 63 6b 65 return socke
  1291. 00004ec0: 74 2e 6f 6e 28 27 64 69 73 63 6f 6e 6e 65 63 74 t.on('disconnect
  1292. 00004ed0: 27 2c 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a ', function() {.
  1293. 00004ee0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
  1294. 00004ef0: 20 24 28 27 23 72 65 66 72 65 73 68 6c 69 6e 6b $('#refreshlink
  1295. 00004f00: 20 61 27 29 2e 68 69 64 65 28 29 3b 0a 20 20 20 a').hide();.
  1296. 00004f10: 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 7d });. }
  1297. 00004f20: 29 3b 0a 20 20 20 20 20 20 24 28 27 23 6d 73 67 );. $('#msg
  1298. 00004f30: 62 6f 78 27 29 2e 6b 65 79 64 6f 77 6e 28 66 75 box').keydown(fu
  1299. 00004f40: 6e 63 74 69 6f 6e 28 65 76 65 6e 74 29 20 7b 0a nction(event) {.
  1300. 00004f50: 20 20 20 20 20 20 20 20 76 61 72 20 6d 65 73 73 var mess
  1301. 00004f60: 61 67 65 3b 0a 20 20 20 20 20 20 20 20 69 66 20 age;. if
  1302. 00004f70: 28 65 76 65 6e 74 2e 6b 65 79 43 6f 64 65 20 3d (event.keyCode =
  1303. 00004f80: 3d 3d 20 31 33 29 20 7b 0a 20 20 20 20 20 20 20 == 13) {.
  1304. 00004f90: 20 20 20 65 76 65 6e 74 2e 70 72 65 76 65 6e 74 event.prevent
  1305. 00004fa0: 44 65 66 61 75 6c 74 28 29 3b 0a 20 20 20 20 20 Default();.
  1306. 00004fb0: 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d 20 24 message = $
  1307. 00004fc0: 28 27 23 6d 73 67 62 6f 78 27 29 2e 76 61 6c 28 ('#msgbox').val(
  1308. 00004fd0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 24 28 27 );. $('
  1309. 00004fe0: 23 6d 73 67 62 6f 78 27 29 2e 76 61 6c 28 27 27 #msgbox').val(''
  1310. 00004ff0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 );. ret
  1311. 00005000: 75 72 6e 20 73 6f 63 6b 65 74 2e 65 6d 69 74 28 urn socket.emit(
  1312. 00005010: 27 63 6c 69 65 6e 74 2d 73 65 6e 64 2d 6d 65 73 'client-send-mes
  1313. 00005020: 73 61 67 65 27 2c 20 7b 0a 20 20 20 20 20 20 20 sage', {.
  1314. 00005030: 20 20 20 20 20 73 65 73 73 69 6f 6e 69 64 3a 20 sessionid:
  1315. 00005040: 73 65 73 73 69 6f 6e 69 64 2c 0a 20 20 20 20 20 sessionid,.
  1316. 00005050: 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 3a 20 message:
  1317. 00005060: 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 message.
  1318. 00005070: 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a });. }.
  1319. 00005080: 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 });.
  1320. 00005090: 73 6f 63 6b 65 74 2e 6f 6e 28 27 63 6c 69 65 6e socket.on('clien
  1321. 000050a0: 74 2d 72 65 63 65 69 76 65 2d 6d 65 73 73 61 67 t-receive-messag
  1322. 000050b0: 65 27 2c 20 66 75 6e 63 74 69 6f 6e 28 64 61 74 e', function(dat
  1323. 000050c0: 61 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 a) {. var
  1324. 000050d0: 20 6d 65 73 73 61 67 65 2c 20 75 73 65 72 3b 0a message, user;.
  1325. 000050e0: 20 20 20 20 20 20 20 20 75 73 65 72 20 3d 20 64 user = d
  1326. 000050f0: 61 74 61 2e 75 73 65 72 3b 0a 20 20 20 20 20 20 ata.user;.
  1327. 00005100: 20 20 6d 65 73 73 61 67 65 20 3d 20 64 61 74 61 message = data
  1328. 00005110: 2e 6d 65 73 73 61 67 65 3b 0a 20 20 20 20 20 20 .message;.
  1329. 00005120: 20 20 68 74 6d 6c 20 3d 20 22 3c 70 20 63 6c 61 html = "<p cla
  1330. 00005130: 73 73 3d 27 63 68 61 74 2d 6d 65 73 73 61 67 65 ss='chat-message
  1331. 00005140: 20 22 20 2b 20 75 73 65 72 2e 74 79 70 65 20 2b " + user.type +
  1332. 00005150: 20 22 27 3e 22 3b 0a 20 20 20 20 20 20 20 20 69 "'>";. i
  1333. 00005160: 66 20 28 75 73 65 72 2e 6e 61 6d 65 20 21 3d 3d f (user.name !==
  1334. 00005170: 20 27 53 45 52 56 45 52 27 29 20 7b 0a 20 20 20 'SERVER') {.
  1335. 00005180: 20 20 20 20 20 20 20 68 74 6d 6c 20 2b 3d 20 22 html += "
  1336. 00005190: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 27 75 73 65 <span class='use
  1337. 000051a0: 72 27 3e 22 20 2b 20 75 73 65 72 2e 6e 61 6d 65 r'>" + user.name
  1338. 000051b0: 20 2b 20 22 3a 3a 20 3c 2f 73 70 61 6e 3e 22 3b + ":: </span>";
  1339. 000051c0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
  1340. 000051d0: 20 20 20 68 74 6d 6c 20 2b 3d 20 70 61 72 73 65 html += parse
  1341. 000051e0: 4d 65 73 73 61 67 65 28 6d 65 73 73 61 67 65 29 Message(message)
  1342. 000051f0: 20 2b 20 27 3c 2f 70 3e 27 3b 0a 20 20 20 20 20 + '</p>';.
  1343. 00005200: 20 20 20 72 65 74 75 72 6e 20 24 28 27 23 63 68 return $('#ch
  1344. 00005210: 61 74 62 6f 78 27 29 2e 68 74 6d 6c 28 68 74 6d atbox').html(htm
  1345. 00005220: 6c 20 2b 20 24 28 27 23 63 68 61 74 62 6f 78 27 l + $('#chatbox'
  1346. 00005230: 29 2e 68 74 6d 6c 28 29 29 3b 0a 20 20 20 20 20 ).html());.
  1347. 00005240: 20 7d 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 });. retur
  1348. 00005250: 6e 20 73 6f 63 6b 65 74 2e 6f 6e 28 27 73 65 74 n socket.on('set
  1349. 00005260: 63 68 61 6e 6e 65 6c 73 27 2c 20 66 75 6e 63 74 channels', funct
  1350. 00005270: 69 6f 6e 28 64 61 74 61 29 20 7b 0a 20 20 20 20 ion(data) {.
  1351. 00005280: 20 20 20 20 63 68 61 6e 6e 65 6c 73 20 3d 20 64 channels = d
  1352. 00005290: 61 74 61 2e 63 68 61 6e 6e 65 6c 73 3b 0a 20 20 ata.channels;.
  1353. 000052a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 28 27 return $('
  1354. 000052b0: 23 63 68 61 6e 6e 65 6c 73 27 29 2e 68 74 6d 6c #channels').html
  1355. 000052c0: 28 27 43 68 61 6e 6e 65 6c 73 3a 20 27 20 2b 20 ('Channels: ' +
  1356. 000052d0: 63 68 61 6e 6e 65 6c 73 2e 6a 6f 69 6e 28 27 2c channels.join(',
  1357. 000052e0: 20 27 29 29 3b 0a 20 20 20 20 20 20 7d 29 3b 0a '));. });.
  1358. 000052f0: 20 20 20 20 7d 29 3b 0a 20 20 20 20 73 6f 63 6b });. sock
  1359. 00005300: 65 74 2e 65 6d 69 74 28 27 67 65 74 2d 63 68 61 et.emit('get-cha
  1360. 00005310: 74 2d 64 61 74 61 27 29 3b 0a 20 20 20 20 72 65 t-data');. re
  1361. 00005320: 74 75 72 6e 20 69 6e 69 74 67 61 6d 65 28 29 3b turn initgame();
  1362. 00005330: 0a 20 20 7d 29 3b 0a 7d 3b 0a 0a 6c 6f 67 69 6e . });.};..login
  1363. 00005340: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a = function() {.
  1364. 00005350: 20 20 72 65 74 75 72 6e 20 73 61 66 65 28 66 75 return safe(fu
  1365. 00005360: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 nction() {. v
  1366. 00005370: 61 72 20 70 61 73 73 77 6f 72 64 2c 20 75 73 65 ar password, use
  1367. 00005380: 72 6e 61 6d 65 3b 0a 20 20 20 20 75 73 65 72 6e rname;. usern
  1368. 00005390: 61 6d 65 20 3d 20 24 28 27 23 75 73 65 72 6e 61 ame = $('#userna
  1369. 000053a0: 6d 65 27 29 2e 76 61 6c 28 29 3b 0a 20 20 20 20 me').val();.
  1370. 000053b0: 70 61 73 73 77 6f 72 64 20 3d 20 24 28 27 23 70 password = $('#p
  1371. 000053c0: 61 73 73 77 6f 72 64 27 29 2e 76 61 6c 28 29 3b assword').val();
  1372. 000053d0: 0a 20 20 20 20 72 65 74 75 72 6e 20 73 6f 63 6b . return sock
  1373. 000053e0: 65 74 2e 65 6d 69 74 28 27 6c 6f 67 69 6e 27 2c et.emit('login',
  1374. 000053f0: 20 7b 0a 20 20 20 20 20 20 75 73 65 72 6e 61 6d {. usernam
  1375. 00005400: 65 3a 20 75 73 65 72 6e 61 6d 65 2c 0a 20 20 20 e: username,.
  1376. 00005410: 20 20 20 70 61 73 73 77 6f 72 64 3a 20 70 61 73 password: pas
  1377. 00005420: 73 77 6f 72 64 0a 20 20 20 20 7d 29 3b 0a 20 20 sword. });.
  1378. 00005430: 7d 29 3b 0a 7d 3b 0a 0a 72 65 67 69 73 74 65 72 });.};..register
  1379. 00005440: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a = function() {.
  1380. 00005450: 20 20 72 65 74 75 72 6e 20 73 61 66 65 28 66 75 return safe(fu
  1381. 00005460: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 76 nction() {. v
  1382. 00005470: 61 72 20 70 61 73 73 77 6f 72 64 2c 20 75 73 65 ar password, use
  1383. 00005480: 72 6e 61 6d 65 3b 0a 20 20 20 20 75 73 65 72 6e rname;. usern
  1384. 00005490: 61 6d 65 20 3d 20 24 28 27 23 75 73 65 72 6e 61 ame = $('#userna
  1385. 000054a0: 6d 65 27 29 2e 76 61 6c 28 29 3b 0a 20 20 20 20 me').val();.
  1386. 000054b0: 70 61 73 73 77 6f 72 64 20 3d 20 24 28 27 23 70 password = $('#p
  1387. 000054c0: 61 73 73 77 6f 72 64 27 29 2e 76 61 6c 28 29 3b assword').val();
  1388. 000054d0: 0a 20 20 20 20 72 65 74 75 72 6e 20 73 6f 63 6b . return sock
  1389. 000054e0: 65 74 2e 65 6d 69 74 28 27 72 65 67 69 73 74 65 et.emit('registe
  1390. 000054f0: 72 27 2c 20 7b 0a 20 20 20 20 20 20 75 73 65 72 r', {. user
  1391. 00005500: 6e 61 6d 65 3a 20 75 73 65 72 6e 61 6d 65 2c 0a name: username,.
  1392. 00005510: 20 20 20 20 20 20 70 61 73 73 77 6f 72 64 3a 20 password:
  1393. 00005520: 70 61 73 73 77 6f 72 64 0a 20 20 20 20 7d 29 3b password. });
  1394. 00005530: 0a 20 20 7d 29 3b 0a 7d 3b 0a 0a 6c 6f 67 6f 75 . });.};..logou
  1395. 00005540: 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b t = function() {
  1396. 00005550: 0a 20 20 72 65 74 75 72 6e 20 6c 6f 63 61 74 69 . return locati
  1397. 00005560: 6f 6e 2e 68 72 65 66 20 2b 3d 20 27 27 3b 0a 7d on.href += '';.}
  1398. 00005570: 3b 0a ;.
  1399. 00000000: 4e 98 ea e7 00 e5 92 f7 5f d8 d5 41 N......._..A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement