Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public enum DoorMaterial
- {
- WOOD,
- STEEL,
- PLASTIC
- }
- public enum LockStatus
- {
- OPENED,
- CLOSED
- }
- public class DoorKey
- {
- public int code;
- }
- public class DoorLock
- {
- protected int code;
- public LockStatus status;
- }
- public class KeyLock : DoorLock
- {
- public void Open(DoorKey key)
- {
- if (status == LockStatus.OPENED)
- {
- return;
- }
- bool result = CheckKey(key);
- if (result == true)
- {
- status = LockStatus.OPENED;
- }
- }
- private bool CheckKey(DoorKey key)
- {
- return code == key.code;
- }
- }
- public class CodeLock : DoorLock
- {
- public void Open(int usercode)
- {
- if (status == LockStatus.OPENED)
- {
- return;
- }
- if (usercode == code)
- {
- status = LockStatus.OPENED;
- }
- }
- }
- public class Door
- {
- public float perimeter;
- public DoorMaterial material;
- public readonly DoorLock _lock;
- public Door(DoorLock @lock)
- {
- _lock = @lock;
- }
- public bool TryOpenWithKey(DoorKey key)
- {
- if (_lock is KeyLock keyLock)
- {
- keyLock.Open(key);
- }
- return _lock.status != LockStatus.CLOSED;
- }
- public bool TryOpenWithCode(int code)
- {
- if (_lock is CodeLock codeLock)
- {
- codeLock.Open(code);
- }
- return _lock.status != LockStatus.CLOSED;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment