You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 regels
1.2 KiB

  1. define([
  2. 'js/rendering/renderer',
  3. 'js/system/events'
  4. ], function(
  5. renderer,
  6. events
  7. ) {
  8. var scale = 40;
  9. return {
  10. type: 'player',
  11. oldPos: {
  12. x: 0,
  13. y: 0
  14. },
  15. init: function() {
  16. this.obj.addComponent('keyboardMover');
  17. this.obj.addComponent('mouseMover');
  18. this.obj.addComponent('serverActions');
  19. this.obj.addComponent('pather');
  20. events.emit('onGetPortrait', this.obj.class);
  21. },
  22. update: function() {
  23. var obj = this.obj;
  24. var oldPos = this.oldPos;
  25. if ((oldPos.x == obj.x) && (oldPos.y == obj.y))
  26. return;
  27. var dx = obj.x - oldPos.x;
  28. var dy = obj.y - oldPos.y;
  29. var instant = false;
  30. if ((dx > 5) || (dy > 5))
  31. instant = true;
  32. if (dx != 0)
  33. dx = dx / Math.abs(dx);
  34. if (dy != 0)
  35. dy = dy / Math.abs(dy);
  36. this.oldPos.x = this.obj.x;
  37. this.oldPos.y = this.obj.y;
  38. this.canvasFollow({
  39. x: dx,
  40. y: dy
  41. }, instant);
  42. },
  43. canvasFollow: function(delta, instant) {
  44. var obj = this.obj;
  45. delta = delta || {
  46. x: 0,
  47. y: 0
  48. };
  49. renderer.setPosition({
  50. x: (obj.x - (renderer.width / (scale * 2))) * scale,
  51. y: (obj.y - (renderer.height / (scale * 2))) * scale
  52. }, instant);
  53. },
  54. };
  55. });