home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Classicos / pepsi_pinball.swf / scripts / frame_8 / DoAction_2.as next >
Encoding:
Text File  |  2006-05-18  |  2.7 KB  |  107 lines

  1. function dist(x1, y1, x2, y2)
  2. {
  3.    var output = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  4.    return output;
  5. }
  6. function normalizeVect(v)
  7. {
  8.    var x = v.x / v.norm;
  9.    var y = v.y / v.norm;
  10.    var result = new tVector(x,y);
  11.    return result;
  12. }
  13. function sumVect(v1, v2, v3)
  14. {
  15.    var x = v1.x + v2.x + v3.x;
  16.    var y = v1.y + v2.y + v3.y;
  17.    var result = new tVector(x,y);
  18.    return result;
  19. }
  20. function count(str, root)
  21. {
  22.    if(root == undefined)
  23.    {
  24.       root = _root;
  25.    }
  26.    var num = 0;
  27.    for(var i in root)
  28.    {
  29.       if(i.substr(0,str.length) == str)
  30.       {
  31.          var char = i.substr(str.length,1);
  32.          if(!isNaN(char))
  33.          {
  34.             num++;
  35.          }
  36.       }
  37.    }
  38.    return num;
  39. }
  40. function addSpace(str)
  41. {
  42.    var newStr;
  43.    var count;
  44.    var i;
  45.    var char;
  46.    str = str.toString();
  47.    newStr = "";
  48.    count = 0;
  49.    i = str.length - 1;
  50.    while(i >= 0)
  51.    {
  52.       char = str.charAt(i);
  53.       count++;
  54.       if(count == 3 && i != 0)
  55.       {
  56.          count = 0;
  57.          char = "," + char;
  58.       }
  59.       newStr = char + newStr;
  60.       i--;
  61.    }
  62.    return newStr;
  63. }
  64. function doWallCollision(wall, ball)
  65. {
  66.    var x = ball.pos.x - wall.pos.x;
  67.    var y = ball.pos.y - wall.pos.y;
  68.    var dx = ball.pos.x - ball.oldPos.x;
  69.    var dy = ball.pos.y - ball.oldPos.y;
  70.    var angleRad = wall.angle;
  71.    var cosAngle = Math.cos(angleRad);
  72.    var sinAngle = Math.sin(angleRad);
  73.    var x1 = cosAngle * x + sinAngle * y;
  74.    var y1 = cosAngle * y - sinAngle * x;
  75.    var dx1 = cosAngle * dx + sinAngle * dy;
  76.    var dy1 = cosAngle * dy - sinAngle * dx;
  77.    var vx1 = cosAngle * ball.vel.x + sinAngle * ball.vel.y;
  78.    var vy1 = cosAngle * ball.vel.y - sinAngle * ball.vel.x;
  79.    if(Math.abs(y1) < radius && dy1 > 0)
  80.    {
  81.       y1 = - radius;
  82.       vy1 *= - bounce;
  83.       x = cosAngle * x1 - sinAngle * y1;
  84.       y = cosAngle * y1 + sinAngle * x1;
  85.       ball.vel.x = cosAngle * vx1 - sinAngle * vy1;
  86.       ball.vel.y = cosAngle * vy1 + sinAngle * vx1;
  87.       ball.vel.x *= wall.strength;
  88.       ball.vel.y *= wall.strength;
  89.       ball.pos.x = x + wall.pos.x;
  90.       ball.pos.y = y + wall.pos.y;
  91.    }
  92. }
  93. function doPointCollision(point, ball)
  94. {
  95.    var distBallPoint = dist(ball.pos.x,ball.pos.y,point.pos.x,point.pos.y);
  96.    if(distBallPoint < radius + point.radius)
  97.    {
  98.       var end = new Position(point.pos.x,point.pos.y);
  99.       var bv = new tVector(ball.vel.x,ball.vel.y);
  100.       var bm = normalizeVect(new tVector(ball.pos.x - end.x,ball.pos.y - end.y));
  101.       var fl = new tVector(bm.x * bv.norm * point.strength,bm.y * bv.norm * point.strength);
  102.       var sum = sumVect(bv,bm,fl);
  103.       ball.vel.x = sum.x;
  104.       ball.vel.y = sum.y;
  105.    }
  106. }
  107.