diff --git a/Assets/Events.meta b/Assets/Events.meta new file mode 100644 index 00000000..4e93ea04 --- /dev/null +++ b/Assets/Events.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f07056912c385f645a71fcb781932ee0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Events/eventsController.cs b/Assets/Events/eventsController.cs new file mode 100644 index 00000000..46fdd766 --- /dev/null +++ b/Assets/Events/eventsController.cs @@ -0,0 +1,10 @@ +using System; + +public class eventsController +{ + public Action baseEvent; + + public void addListener(Action listener) => baseEvent += listener; + public void removeListener(Action listener) => baseEvent -= listener; + public void InvokeEvent() => baseEvent?.Invoke(); +} diff --git a/Assets/Events/eventsController.cs.meta b/Assets/Events/eventsController.cs.meta new file mode 100644 index 00000000..eb549c03 --- /dev/null +++ b/Assets/Events/eventsController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac51a05c789102648aff3c89315a5c88 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Interactables/LightSwitchView.cs b/Assets/Scripts/Interactables/LightSwitchView.cs index 68129e47..0656172d 100644 --- a/Assets/Scripts/Interactables/LightSwitchView.cs +++ b/Assets/Scripts/Interactables/LightSwitchView.cs @@ -7,15 +7,15 @@ public class LightSwitchView : MonoBehaviour, IInteractable { [SerializeField] private List lightsources = new List(); private SwitchState currentState; - public static event Action OnLightSwitchToggled; + // public static event Action OnLightSwitchToggled; // static used for using this event all over the code base. - private void OnEnable() => OnLightSwitchToggled += onLightSwitch; + private void OnEnable() => EventService.Instance.OnLightSwitchToggled.addListener(onLightSwitch); - private void OnDisable() => OnLightSwitchToggled -= onLightSwitch; + private void OnDisable() => EventService.Instance.OnLightSwitchToggled.removeListener(onLightSwitch); private void Start() => currentState = SwitchState.Off; - public void Interact() => OnLightSwitchToggled?.Invoke(); + public void Interact() => EventService.Instance.OnLightSwitchToggled.InvokeEvent(); private void toggleLights() { diff --git a/Assets/Scripts/Player/PlayerController.cs b/Assets/Scripts/Player/PlayerController.cs index 8254b215..8429cac8 100644 --- a/Assets/Scripts/Player/PlayerController.cs +++ b/Assets/Scripts/Player/PlayerController.cs @@ -25,13 +25,13 @@ public PlayerController(PlayerView playerView, PlayerScriptableObject playerScri this.playerScriptableObject = playerScriptableObject; this.playerScriptableObject.KeysEquipped = 0; - LightSwitchView.OnLightSwitchToggled += onLightSwitch; + EventService.Instance.OnLightSwitchToggled.addListener(onLightSwitch); playerState = PlayerState.InDark; } ~PlayerController() { - LightSwitchView.OnLightSwitchToggled -= onLightSwitch; + EventService.Instance.OnLightSwitchToggled.removeListener(onLightSwitch); } public void Interact() => IsInteracted = Input.GetKeyDown(KeyCode.E) ? true : (Input.GetKeyUp(KeyCode.E) ? false : IsInteracted); diff --git a/Assets/Scripts/Service/EventService.cs b/Assets/Scripts/Service/EventService.cs new file mode 100644 index 00000000..c6de769a --- /dev/null +++ b/Assets/Scripts/Service/EventService.cs @@ -0,0 +1,23 @@ + +public class EventService +{ + private static EventService instance; + public static EventService Instance + { + get + { + if (instance == null) + { + instance = new EventService(); + } + return instance; + } + } + + public eventsController OnLightSwitchToggled { get; private set; } + + public EventService() + { + OnLightSwitchToggled = new eventsController(); + } +} diff --git a/Assets/Scripts/Service/EventService.cs.meta b/Assets/Scripts/Service/EventService.cs.meta new file mode 100644 index 00000000..7e85a006 --- /dev/null +++ b/Assets/Scripts/Service/EventService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0ea4b4c06e455f4390617394f638d96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: