Display priorities.
This commit is contained in:
parent
00e5e4fcf8
commit
4c5d693dfd
@ -39,7 +39,15 @@ fn send<T: Write>(w: &mut T, board: &Board) -> std::io::Result<()> {
|
|||||||
for square in line {
|
for square in line {
|
||||||
let c = match square {
|
let c = match square {
|
||||||
Square::Unused => Color::black(),
|
Square::Unused => Color::black(),
|
||||||
Square::Unknown { .. } => Color::black(),
|
Square::Unknown { prio } => {
|
||||||
|
if *prio == 0 {
|
||||||
|
Color::black()
|
||||||
|
} else if *prio < 0 {
|
||||||
|
Color::lightblue()
|
||||||
|
} else {
|
||||||
|
Color::darkyellow()
|
||||||
|
}
|
||||||
|
}
|
||||||
Square::Corridor => Color::yellow(),
|
Square::Corridor => Color::yellow(),
|
||||||
Square::Wall => Color::darkblue(),
|
Square::Wall => Color::darkblue(),
|
||||||
Square::Start => Color::red(),
|
Square::Start => Color::red(),
|
||||||
@ -91,19 +99,27 @@ impl Board {
|
|||||||
|
|
||||||
fn set_orientation(&mut self, desired: Orientation, pos: Point2d) {
|
fn set_orientation(&mut self, desired: Orientation, pos: Point2d) {
|
||||||
let sq = self.get(pos);
|
let sq = self.get(pos);
|
||||||
let actual;
|
|
||||||
match sq {
|
match sq {
|
||||||
Square::Unknown { .. } => {
|
Square::Unknown { .. } => {
|
||||||
// determine wall orientation
|
let prio;
|
||||||
if pos.x % 2 == 0 && pos.y % 2 != 0 {
|
if pos.x % 2 == 0 && pos.y % 2 != 0 {
|
||||||
actual = Orientation::Vertical;
|
// horizontal corridor, vertical wall
|
||||||
} else if pos.x % 2 != 0 && pos.y % 2 == 0 {
|
prio = if desired == Orientation::Vertical {
|
||||||
actual = Orientation::Horizontal;
|
10
|
||||||
} else {
|
} else {
|
||||||
// not a potential wall, unused
|
-10
|
||||||
actual = Orientation::Horizontal;
|
};
|
||||||
|
} else if pos.x % 2 != 0 && pos.y % 2 == 0 {
|
||||||
|
// vertical corridor, horizontal wall
|
||||||
|
prio = if desired == Orientation::Horizontal {
|
||||||
|
10
|
||||||
|
} else {
|
||||||
|
-10
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// always corridor at the end
|
||||||
|
prio = 0;
|
||||||
}
|
}
|
||||||
let prio = if actual == desired { 10 } else { -10 };
|
|
||||||
self.set(pos, Square::Unknown { prio });
|
self.set(pos, Square::Unknown { prio });
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
|
@ -39,7 +39,15 @@ fn send<T: Write>(w: &mut T, board: &Board) -> std::io::Result<()> {
|
|||||||
for square in line {
|
for square in line {
|
||||||
let c = match square {
|
let c = match square {
|
||||||
Square::Unused => Color::black(),
|
Square::Unused => Color::black(),
|
||||||
Square::Unknown { .. } => Color::black(),
|
Square::Unknown { prio } => {
|
||||||
|
if *prio == 0 {
|
||||||
|
Color::black()
|
||||||
|
} else if *prio < 0 {
|
||||||
|
Color::lightblue()
|
||||||
|
} else {
|
||||||
|
Color::darkyellow()
|
||||||
|
}
|
||||||
|
}
|
||||||
Square::Corridor => Color::yellow(),
|
Square::Corridor => Color::yellow(),
|
||||||
Square::Wall => Color::darkblue(),
|
Square::Wall => Color::darkblue(),
|
||||||
Square::Start => Color::red(),
|
Square::Start => Color::red(),
|
||||||
@ -93,19 +101,27 @@ impl Board {
|
|||||||
|
|
||||||
fn set_orientation(&mut self, desired: Orientation, pos: Point2d) {
|
fn set_orientation(&mut self, desired: Orientation, pos: Point2d) {
|
||||||
let sq = self.get(pos);
|
let sq = self.get(pos);
|
||||||
let actual;
|
|
||||||
match sq {
|
match sq {
|
||||||
Square::Unknown { .. } => {
|
Square::Unknown { .. } => {
|
||||||
// determine corridor orientation
|
let prio;
|
||||||
if pos.x % 2 == 0 && pos.y % 2 != 0 {
|
if pos.x % 2 == 0 && pos.y % 2 != 0 {
|
||||||
actual = Orientation::Horizontal;
|
// horizontal corridor, vertical wall
|
||||||
} else if pos.x % 2 != 0 && pos.y % 2 == 0 {
|
prio = if desired == Orientation::Horizontal {
|
||||||
actual = Orientation::Vertical;
|
10
|
||||||
} else {
|
} else {
|
||||||
// not a potential wall, unused
|
-10
|
||||||
actual = Orientation::Horizontal;
|
};
|
||||||
|
} else if pos.x % 2 != 0 && pos.y % 2 == 0 {
|
||||||
|
// vertical corridor, horizontal wall
|
||||||
|
prio = if desired == Orientation::Vertical {
|
||||||
|
10
|
||||||
|
} else {
|
||||||
|
-10
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// always corridor at the end
|
||||||
|
prio = 0;
|
||||||
}
|
}
|
||||||
let prio = if actual == desired { 10 } else { -10 };
|
|
||||||
self.set(pos, Square::Unknown { prio });
|
self.set(pos, Square::Unknown { prio });
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
|
Loading…
Reference in New Issue
Block a user