Advertisement
apieceoffruit

Electric Door

Jun 25th, 2022
1,040
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace SmartNetwork
  2. {
  3.     public class ElectricDoor : ElectricalDevice,SecurityDevice,IOpenable
  4.     {
  5.         protected override void OnMessageReceived(string message) => _doorHandler.Handle(message);
  6.  
  7.         protected override void ToggledPower(bool isOn)
  8.         {
  9.             if (isOn) _doorHandler.PoweredOn();
  10.             else _doorHandler.PoweredOff();
  11.         }
  12.  
  13.         public void Open()
  14.         {
  15.             if (Inoperable) return;
  16.            
  17.             if (IsOpen) return;
  18.             if(IsLocked) _doorHandler.TriedToOpen();
  19.             else
  20.             {
  21.                 _doorHandler.Opened();
  22.                 IsOpen = true;
  23.             }
  24.  
  25.         }
  26.  
  27.         public void Close()
  28.         {
  29.             if (Inoperable) return;
  30.            
  31.             if(!IsOpen) return;
  32.             _doorHandler.Closed();
  33.             IsOpen = false;
  34.         }
  35.  
  36.         public void ToggleOpen()
  37.         {
  38.             if (!HasPower) return;
  39.             if(IsOpen) Close();
  40.             else Open();
  41.         }
  42.        
  43.         public bool IsOpen { get; private set; }
  44.         public bool IsLocked { get; set; }
  45.  
  46.         public ElectricDoor(DoorHandler doorHandler) => _doorHandler = doorHandler;
  47.         readonly DoorHandler _doorHandler;
  48.  
  49.         public void Lock()
  50.         {
  51.             if (Inoperable) return;
  52.             if (IsOpen) return;
  53.             _doorHandler.Locked();
  54.             IsLocked = true;
  55.         }
  56.  
  57.         public void Unlock()
  58.         {
  59.             if (Inoperable) return;
  60.            
  61.             if (!IsLocked) return;
  62.             IsLocked = false;
  63.             _doorHandler.UnLocked();
  64.         }
  65.  
  66.  
  67.         public void ToggleLocked()
  68.         {
  69.             if(IsLocked) Unlock();
  70.             else Lock();
  71.         }
  72.     }
  73. }
Advertisement
RAW Paste Data Copied
Advertisement