use crate::elevator_logic::ElevatorBehaviour;
use crate::elevio::elev::Elevator;
use crate::world_view::ElevatorContainer;
use crate::world_view::WorldView;
pub fn set_hall_lights(
wv: &WorldView,
e: Elevator,
self_container: &ElevatorContainer
)
{
for (i, [up, down]) in wv.hall_request.iter().enumerate()
{
let floor = i as u8;
if floor > e.num_floors {break;}
e.call_button_light(floor, 2, self_container.cab_requests[i]);
if floor != 0
{
e.call_button_light(floor, 1, *down);
}
if floor != e.num_floors
{
e.call_button_light(floor, 0, *up);
}
}
if self_container.behaviour == ElevatorBehaviour::DoorOpen || self_container.behaviour == ElevatorBehaviour::ObstructionError
{
set_door_open_light(e.clone());
} else
{
clear_door_open_light(e.clone());
}
}
pub fn set_cab_light(
e: Elevator,
last_floor: u8
)
{
e.floor_indicator(last_floor);
}
pub fn set_door_open_light(
e: Elevator
)
{
e.door_light(true);
}
pub fn clear_door_open_light(
e: Elevator
)
{
e.door_light(false);
}
pub fn set_stop_button_light(
e: Elevator
)
{
e.stop_button_light(true);
}
pub fn clear_stop_button_light(
e: Elevator
)
{
e.stop_button_light(false);
}