Advertisement
Guest User

player.js

a guest
Oct 19th, 2021
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. import io from "socket.io-client";
  2. import {
  3. NEW_PLAYER,
  4. ALL_PLAYERS,
  5. CHAT,
  6. KEY_PRESS,
  7. MOVE,
  8. STOP,
  9. REMOVE,
  10. } from "../../shared/constants/playerAction";
  11.  
  12. let SPEED = 200;
  13. let FADE_DURATION = 1000;
  14. let playerKey;
  15. let leftKey;
  16. let rightKey;
  17. let upKey;
  18. let downKey;
  19.  
  20. class Player extends Phaser.GameObjects.Sprite {
  21. constructor(scene, room, position) {
  22. super(scene);
  23.  
  24. this.scene = scene;
  25. this.room = room;
  26. this.position = position;
  27. this.socket = io();
  28. this.playersObj = {};
  29. this.currentPlayer = {};
  30.  
  31. console.log("scene: ", this.scene);
  32. console.log("room: ", this.room);
  33. console.log("position: ", this.position);
  34. }
  35.  
  36. create(key) {
  37. playerKey = key;
  38. leftKey = "left-" + key;
  39. rightKey = "right-" + key;
  40. upKey = "up-" + key;
  41. downKey = "down-" + key;
  42.  
  43. this.socket.emit(NEW_PLAYER, this.room, this.position);
  44. console.log("*** emit player.create NEW_PLAYER");
  45.  
  46. this.socket.on(NEW_PLAYER, (data) => {
  47. console.log("*** recv NEW_PLAYER: ", data);
  48. this.addPlayer(data.id, data.x, data.y, data.direction);
  49. });
  50.  
  51. this.socket.on(ALL_PLAYERS, (data) => {
  52. console.log("*** recv ALL_PLAYER: ", data);
  53. this.scene.cameras.main.fadeFrom(FADE_DURATION);
  54. this.scene.scene.setVisible(true, this.room);
  55.  
  56. for (let i = 0; i < data.length; i++) {
  57. this.addPlayer(data[i].id, data[i].x, data[i].y, data[i].direction);
  58. }
  59.  
  60. this.scene.cameras.main.startFollow(
  61. this.playersObj[this.socket.id],
  62. true
  63. );
  64.  
  65. //this.playersObj[this.socket.id].setCollideWorldBounds(true);
  66.  
  67. this.socket.on(MOVE, (data) => {
  68. //console.log("*** recv MOVE: ", data);
  69. this.playersObj[data.id].x = data.x;
  70. this.playersObj[data.id].y = data.y;
  71. this.playersObj[data.id].anims.play(data.direction, true);
  72. });
  73.  
  74. this.socket.on(STOP, (data) => {
  75. //console.log("*** recv STOP: ", data);
  76. this.playersObj[data.id].x = data.x;
  77. this.playersObj[data.id].y = data.y;
  78. this.playersObj[data.id].anims.stop();
  79. });
  80.  
  81. this.socket.on(REMOVE, (id) => {
  82. console.log("*** recv REMOVE: ", id);
  83. this.playersObj[id].destroy();
  84. delete this.playersObj[id];
  85. });
  86.  
  87. // Implement chat later
  88. //this.registerChat();
  89. });
  90. }
  91.  
  92. addPlayer(id, x, y, direction) {
  93. console.log("*** addPlayer: ", id, x, y, direction);
  94. // Change here to get different avatar
  95.  
  96. this.playersObj[id] = this.scene.physics.add
  97. .sprite(x, y, playerKey)
  98. .setScale(2);
  99. this.playersObj[id].anims.play(downKey);
  100. this.playersObj[id].anims.stop();
  101.  
  102. this.currentPlayer = this.playersObj[this.socket.id];
  103. //console.log("currentPlayer: ", this.currentPlayer);
  104. }
  105.  
  106. left() {
  107. this.playersObj[this.socket.id].body.velocity.x = -SPEED;
  108. this.playersObj[this.socket.id].anims.play(leftKey, true);
  109. this.socket.emit(KEY_PRESS, leftKey, {
  110. x: this.playersObj[this.socket.id].x,
  111. y: this.playersObj[this.socket.id].y,
  112. });
  113. }
  114.  
  115. right() {
  116. this.playersObj[this.socket.id].body.velocity.x = SPEED;
  117. this.playersObj[this.socket.id].anims.play(rightKey, true);
  118. this.socket.emit(KEY_PRESS, rightKey, {
  119. x: this.playersObj[this.socket.id].x,
  120. y: this.playersObj[this.socket.id].y,
  121. });
  122. }
  123.  
  124. up() {
  125. this.playersObj[this.socket.id].body.velocity.y = -SPEED;
  126. this.playersObj[this.socket.id].anims.play(upKey, true);
  127. this.socket.emit(KEY_PRESS, upKey, {
  128. x: this.playersObj[this.socket.id].x,
  129. y: this.playersObj[this.socket.id].y,
  130. });
  131. }
  132.  
  133. down() {
  134. this.playersObj[this.socket.id].body.velocity.y = SPEED;
  135. this.playersObj[this.socket.id].anims.play(downKey, true);
  136. this.socket.emit(KEY_PRESS, downKey, {
  137. x: this.playersObj[this.socket.id].x,
  138. y: this.playersObj[this.socket.id].y,
  139. });
  140. }
  141.  
  142. stop() {
  143. this.playersObj[this.socket.id].body.velocity.x = 0;
  144. this.playersObj[this.socket.id].body.velocity.y = 0;
  145. this.playersObj[this.socket.id].anims.stop();
  146. this.socket.emit(STOP, {
  147. x: this.playersObj[this.socket.id].x,
  148. y: this.playersObj[this.socket.id].y,
  149. });
  150. }
  151.  
  152. // registerChat() {
  153. // let chat = document.getElementById(CHAT);
  154. // let messages = document.getElementById("messages");
  155.  
  156. // chat.onsubmit = (e) => {
  157. // e.preventDefault();
  158. // let message = document.getElementById("message");
  159.  
  160. // this.socket.emit(CHAT, message.value);
  161. // message.value = "";
  162. // };
  163.  
  164. // this.socket.on(CHAT, (name, message) => {
  165. // console.log("*** recv CHAT: ", name, message);
  166. // messages.innerHTML += `${name}: ${message}<br>`;
  167. // messages.scrollTo(0, messages.scrollHeight);
  168. // });
  169. // }
  170. }
  171.  
  172. export default Player;
  173.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement