Advertisement
Guest User

Beach Balls v3

a guest
Jan 28th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.27 KB | None | 0 0
  1. // ==UserScript==
  2. // @name TagPro Beach Balls
  3. // @description Fun at the beach!
  4. // @version 3
  5. // @grant none
  6. // @include http://tagpro-*.koalabeast.com:*
  7. // @include http://tangent.jukejuice.com:*
  8. // @include http://*.newcompte.fr:*
  9. // @license 2015
  10. // @author Ly, CFlakes
  11. // @namespace http://www.reddit.com/user/Cumflakes
  12. // ==/UserScript==
  13.  
  14. tagpro.ready(function () {
  15. var texture = PIXI.Texture.fromImage('http://i.imgur.com/91Q6srF.png'),
  16. redBall = new PIXI.Texture(texture, new PIXI.Rectangle(80, 0, 40, 40)),
  17. blueBall = new PIXI.Texture(texture, new PIXI.Rectangle(0, 0, 40, 40)),
  18. whiteBall = new PIXI.Texture(texture, new PIXI.Rectangle(120, 0, 40, 40)),
  19. outline = new PIXI.Texture(texture, new PIXI.Rectangle(160, 0, 40, 40)),
  20. tagproTexture = new PIXI.Texture(texture, new PIXI.Rectangle(200, 0, 40, 40)),
  21. tr = tagpro.renderer;
  22.  
  23. tr.updatePlayerColor = function (player) {
  24. var tileId = player.team === 1 ? "red" : "blue";
  25. if (player.sprites.ballColor[0].tileId !== tileId) {
  26. tr.createBallSpin(player);
  27. }
  28. };
  29.  
  30. tr.createBallSprite = function (player) {
  31. if (!player.sprites.actualBall) {
  32. player.sprites.actualBall = new PIXI.Sprite(whiteBall);
  33. player.sprites.ball.addChild(player.sprites.actualBall);
  34. }
  35. };
  36.  
  37. tr.createBallSpin = function (player) {
  38. var teamColor = player.team === 1 ? redBall : blueBall;
  39. if (!player.sprites.ballColor || !player.sprites.ballMask) {
  40. player.sprites.ballColor = [];
  41. player.sprites.ballMask = [];
  42. for (i = 0; i < 3; i++) {
  43. player.sprites.ballColor[i] = new PIXI.Sprite(teamColor);
  44. player.sprites.ballMask[i] = new PIXI.Graphics();
  45. player.sprites.ballMask[i].x = 20;
  46. player.sprites.ballMask[i].y = 20;
  47. player.sprites.ball.addChild(player.sprites.ballColor[i]);
  48. player.sprites.ball.addChild(player.sprites.ballMask[i]);
  49. player.sprites.ballColor[i].mask = player.sprites.ballMask[i];
  50. player.sprites.ballColor[i].tileId = (player.team === 1) ? "red" : "blue";
  51. }
  52. } else {
  53. for (i = 0; i < 3; i++) {
  54. player.sprites.ballColor[i].setTexture(teamColor);
  55. player.sprites.ballColor[i].tileId = (player.team === 1) ? "red" : "blue";
  56. }
  57. }
  58. };
  59.  
  60. tr.createBallOutline = function (player) {
  61. if (!player.sprites.ballOutline) {
  62. player.sprites.ballOutline = new PIXI.Sprite(outline);
  63. player.sprites.ball.addChild(player.sprites.ballOutline);
  64. }
  65. };
  66.  
  67. var upsp = tr.updatePlayerSpritePosition;
  68. tr.updatePlayerSpritePosition = function (player) {
  69. if (!player.sprites.ballColor || (!player.sprites.ballOutline && !player.tagpro)) {
  70. tr.createBallSpin(player);
  71. tr.createBallOutline(player);
  72. } else {
  73. var radian = (Math.PI / 180),
  74. points = [],
  75. angle = (player.angle / radian % 360) + 360;
  76.  
  77. for (i = 0; i < 6; i++) {
  78. var iAngle = angle + 360 / 6 * i,
  79. side = ((iAngle + 270) % 360 > 180) ? 1 : -1,
  80. outerAngle = (iAngle + 90) % 180,
  81. outerAngle = (side > 0) ? 180 - outerAngle : outerAngle,
  82. offset = (-8.546e-10 * Math.pow(outerAngle, 5)
  83. + 4.311e-7 * Math.pow(outerAngle, 4)
  84. - 6.669e-5 * Math.pow(outerAngle, 3)
  85. + 0.001099 * Math.pow(outerAngle, 2)
  86. + 0.3462 * outerAngle),
  87. innerX = 18 * Math.cos(iAngle * radian),
  88. innerY = 18 * Math.sin(iAngle * radian) - 10,
  89. outerX = 30 * Math.cos((iAngle + offset * side) * radian),
  90. outerY = 30 * Math.sin((iAngle + offset * side) * radian);
  91.  
  92. points.push({ix: innerX, iy: innerY, ox: outerX, oy: outerY});
  93. }
  94.  
  95. for (i = 0; i < points.length; i += 2) {
  96. var first = points[i],
  97. second = points[(i + 1) % points.length],
  98. context = player.sprites.ballMask[i / 2];
  99.  
  100. context.clear();
  101.  
  102. context.beginFill(0x000000);
  103. context.moveTo(0, -10);
  104. context.quadraticCurveTo(first.ix, first.iy, first.ox, first.oy);
  105. context.lineTo(second.ox, second.oy);
  106. context.quadraticCurveTo(second.ix, second.iy, 0, -10);
  107. context.endFill();
  108. }
  109. }
  110. upsp(player);
  111. };
  112.  
  113. tr.updateTagpro = function (player) {
  114. if (player.tagpro) {
  115. if (!tr.options.disableParticles && !player.sprites.tagproSparks) {
  116. player.sprites.tagproSparks = new cloudkid.Emitter(
  117. player.sprites.ball, [tr.particleFireTexture],
  118. tagpro.particleDefinitions.tagproSparks);
  119. tr.emitters.push(player.sprites.tagproSparks);
  120. }
  121. if (!player.sprites.tagproTexture) {
  122. player.sprites.ball.removeChild(player.sprites.ballOutline);
  123. player.sprites.ballOutline = null;
  124. player.sprites.tagproTexture = new PIXI.Sprite(tagproTexture);
  125. player.sprites.ball.addChild(player.sprites.tagproTexture);
  126. }
  127. } else {
  128. if (player.sprites.tagproTexture) {
  129. player.sprites.ball.removeChild(player.sprites.tagproTexture);
  130. player.sprites.tagproTexture = null;
  131. }
  132. if (player.sprites.tagproSparks) {
  133. player.sprites.tagproSparks.emit = false;
  134. var sparksIndex = tr.emitters.indexOf(player.sprites.tagproSparks);
  135. tr.emitters.splice(sparksIndex, 1);
  136. player.sprites.tagproSparks.destroy();
  137. player.sprites.tagproSparks = null;
  138. }
  139. }
  140. };
  141. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement