Advertisement
Guest User

Untitled

a guest
Apr 20th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 2.46 KB | None | 0 0
  1.     private function line(xstart: Float, ystart: Float, xend: Float, yend: Float, sprite: Sprite): Void {
  2.         var x0 = Math.round(xstart);
  3.         var y0 = Math.round(ystart);
  4.         var x1 = Math.round(xend);
  5.         var y1 = Math.round(yend);
  6.         sprite.x = x0;
  7.         sprite.y = y0;
  8.         var dx = Math.abs(x1 - x0);
  9.         var dy = Math.abs(y1 - y0);
  10.         var sx : Int;
  11.         var sy : Int;
  12.         if (x0 < x1) sx = 1; else sx = -1;
  13.         if (y0 < y1) sy = 1; else sy = -1;
  14.         var err = dx - dy;
  15.  
  16.         while (true) {
  17.             //setPixel(x0,y0)
  18.             if (x0 == x1 && y0 == y1) {
  19.                 sprite.x = xend;
  20.                 sprite.y = yend;
  21.                 break;
  22.             }
  23.             var e2 = 2 * err;
  24.             if (e2 > -dy) {
  25.                 err -= dy;
  26.                 x0 += sx;
  27.                 sprite.x = x0;
  28.                 if (map.collides(sprite)) {
  29.                     sprite.y -= 1;
  30.                     if (!map.collides(sprite)) {
  31.                         continue;
  32.                     }
  33.                     else {
  34.                         sprite.y -= 1;
  35.                         if (!map.collides(sprite)) {
  36.                             continue;
  37.                         }
  38.                         else {
  39.                             sprite.y -= 1;
  40.                             if (!map.collides(sprite)) {
  41.                                 continue;
  42.                             }
  43.                             sprite.y += 1;
  44.                         }
  45.                         sprite.y += 1;
  46.                     }
  47.                     sprite.y += 1;
  48.                     sprite.x -= sx;
  49.                     if (sx < 0) sprite.hitFrom(Direction.RIGHT);
  50.                     else sprite.hitFrom(Direction.LEFT);
  51.                     while (true) {
  52.                         if (y0 == y1) {
  53.                             sprite.y = yend;
  54.                             return;
  55.                         }
  56.                         y0 += sy;
  57.                         sprite.y = y0;
  58.                         if (map.collides(sprite)) {
  59.                             sprite.y -= sy;
  60.                             if (sy < 0) sprite.hitFrom(Direction.DOWN);
  61.                             else sprite.hitFrom(Direction.UP);
  62.                             return;
  63.                         }
  64.                     }
  65.                     return;
  66.                 }
  67.             }
  68.             if (e2 < dx) {
  69.                 err += dx;
  70.                 y0 += sy;
  71.                 sprite.y = y0;
  72.                 if (map.collides(sprite)) {
  73.                     sprite.y -= sy;
  74.                     if (sy < 0) sprite.hitFrom(Direction.DOWN);
  75.                     else sprite.hitFrom(Direction.UP);
  76.                     while (true) {
  77.                         if (x0 == x1) {
  78.                             sprite.x = xend;
  79.                             return;
  80.                         }
  81.                         x0 += sx;
  82.                         sprite.x = x0;
  83.                         if (map.collides(sprite)) {
  84.                             sprite.y -= 1;
  85.                             if (!map.collides(sprite)) {
  86.                                 continue;
  87.                             }
  88.                             else {
  89.                                 sprite.y -= 1;
  90.                                 if (!map.collides(sprite)) {
  91.                                     continue;
  92.                                 }
  93.                                 else {
  94.                                     sprite.y -= 1;
  95.                                     if (!map.collides(sprite)) {
  96.                                         continue;
  97.                                     }
  98.                                     sprite.y += 1;
  99.                                 }
  100.                                 sprite.y += 1;
  101.                             }
  102.                             sprite.y += 1;
  103.                             sprite.x -= sx;
  104.                             if (sx < 0) sprite.hitFrom(Direction.RIGHT);
  105.                             else sprite.hitFrom(Direction.LEFT);
  106.                             return;
  107.                         }
  108.                     }
  109.                     return;
  110.                 }
  111.             }
  112.         }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement