Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace SmartNetwork
- {
- public class ElectricDoor : ElectricalDevice,SecurityDevice,IOpenable
- {
- protected override void OnMessageReceived(string message) => _doorHandler.Handle(message);
- protected override void ToggledPower(bool isOn)
- {
- if (isOn) _doorHandler.PoweredOn();
- else _doorHandler.PoweredOff();
- }
- public void Open()
- {
- if (Inoperable) return;
- if (IsOpen) return;
- if(IsLocked) _doorHandler.TriedToOpen();
- else
- {
- _doorHandler.Opened();
- IsOpen = true;
- }
- }
- public void Close()
- {
- if (Inoperable) return;
- if(!IsOpen) return;
- _doorHandler.Closed();
- IsOpen = false;
- }
- public void ToggleOpen()
- {
- if (!HasPower) return;
- if(IsOpen) Close();
- else Open();
- }
- public bool IsOpen { get; private set; }
- public bool IsLocked { get; set; }
- public ElectricDoor(DoorHandler doorHandler) => _doorHandler = doorHandler;
- readonly DoorHandler _doorHandler;
- public void Lock()
- {
- if (Inoperable) return;
- if (IsOpen) return;
- _doorHandler.Locked();
- IsLocked = true;
- }
- public void Unlock()
- {
- if (Inoperable) return;
- if (!IsLocked) return;
- IsLocked = false;
- _doorHandler.UnLocked();
- }
- public void ToggleLocked()
- {
- if(IsLocked) Unlock();
- else Lock();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement