Advertisement
Guest User

Untitled

a guest
Aug 24th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. bool GameField::isPathOpen(const Vec2Tile & from, const Vec2Tile & to) const
  2. {
  3. int l, dx, dy;
  4. int xr = abs(to.x - from.x);
  5. int yr = abs(to.y - from.y);
  6.  
  7. if (xr > yr)
  8. {
  9. l = xr;
  10. }
  11. else
  12. {
  13. l = yr;
  14. }
  15.  
  16. int px = (from.x << 12) + (1 << 11);
  17. int py = (from.y << 12) + (1 << 11);
  18. int ex = (to.x << 12) + (1 << 11);
  19. int ey = (to.y << 12) + (1 << 11);
  20.  
  21. if (l != 0)
  22. {
  23. dx = (ex - px) / l;
  24. dy = (ey - py) / l;
  25. }
  26. else
  27. {
  28. dx = 0;
  29. dy = 0;
  30. }
  31.  
  32. for (int i = 0; i <= l; i++)
  33. {
  34. if (!getTileAt(Vec2Tile(px >> 12, py >> 12)).isOpen())
  35. return false;
  36.  
  37. px += dx;
  38. py += dy;
  39. }
  40.  
  41. return true;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement