sub draw_line {
my $room = $_[0];
my $x0 = $_[1];
my $y0 = $_[2];
my $x1 = $_[3];
my $y1 = $_[4];
my $steep = abs($y1 - $y0) > abs($x1 - $x0);
if ($steep) {
($x0, $y0) = ($y0, $x0);
($x1, $y1) = ($y1, $x1);
}
if ($x0 > $x1) {
($x0, $x1) = ($x1, $x0);
($y0, $y1) = ($y1, $y0);
}
my $deltax = $x1 - $x0;
my $deltay = abs($y1 - $y0);
my $error = $deltax / 2;
my $ystep;
my $x;
my $y = $y0;
if ($y0 < $y1) { $ystep = 1; } else { $ystep = -1; }
for ($x = $x0;$x <= $x1;$x++) {
my ($cx, $cy);
if ($steep) {
$cx = $y;
$cy = $x;
} else {
$cx = $x;
$cy = $y;
}
$error = $error - $deltay;
if ($error < 0) {
$y = $y + $ystep;
$error = $error + $deltax;
}
}
return 1;
}