Skip to content

Commit

Permalink
Add new signals system with possibility to order the listeners, pause…
Browse files Browse the repository at this point in the history
… dispatching and consumption of Signals 🤯
  • Loading branch information
Johannes Deml committed Jul 15, 2019
1 parent b1969ca commit 82536f7
Show file tree
Hide file tree
Showing 26 changed files with 1,040 additions and 383 deletions.
3 changes: 3 additions & 0 deletions Examples.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Examples/Scripts.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions Examples/Scripts/ExampleSignal.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ExampleSignal.cs" company="Supyrb">
// Copyright (c) 2019 Supyrb. All rights reserved.
// </copyright>
// <author>
// Johannes Deml
// [email protected]
// </author>
// --------------------------------------------------------------------------------------------------------------------


using System;

namespace Supyrb
{
public class ExampleSignal : ASignal
{

}
}
3 changes: 3 additions & 0 deletions Examples/Scripts/ExampleSignal.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 76 additions & 0 deletions Examples/Scripts/ExampleSignalTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ExampleSignalTest.cs" company="Supyrb">
// Copyright (c) Supyrb. All rights reserved.
// </copyright>
// <author>
// Johannes Deml
// [email protected]
// </author>
// --------------------------------------------------------------------------------------------------------------------

using System.Collections;
using UnityEngine;
using Debug = UnityEngine.Debug;

namespace Supyrb
{
public class ExampleSignalTest : MonoBehaviour
{
private ASignal exampleSignal;
private void Awake()
{
exampleSignal = Signals.Get<ExampleSignal>();
SubscribeListeners();
DispatchSignal();
}

private void SubscribeListeners()
{
exampleSignal.AddListener(FirstListener, -100);
exampleSignal.AddListener(PauseTwoSecondsListener, -10);
exampleSignal.AddListener(DefaultListener);
exampleSignal.AddListener(ConsumeEventListener, 10);
exampleSignal.AddListener(LastListener, 100);
}

[ContextMenu("DispatchSignal")]
public void DispatchSignal()
{
exampleSignal.Dispatch();
}

private void FirstListener()
{
Debug.Log("First Listener (Order -100)");
}

private void PauseTwoSecondsListener()
{
Debug.Log("Pausing for 2 seconds (Order -10)");
exampleSignal.Pause();
StartCoroutine(ContinueAfterDelay(exampleSignal, 2f));
}

private void DefaultListener()
{
Debug.Log("Default order Listener (Order 0)");
}

private void ConsumeEventListener()
{
Debug.Log("Consume Signal (Order 10)");
exampleSignal.Consume();
}

private void LastListener()
{
Debug.Log("Won't be called, since the signal was consumed. (Order 100)");
}

private IEnumerator ContinueAfterDelay(ASignal signal, float delay)
{
yield return new WaitForSeconds(delay);
signal.Continue();
}
}
}
3 changes: 3 additions & 0 deletions Examples/Scripts/ExampleSignalTest.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 82536f7

Please sign in to comment.