Skip to content

SFME::Mediator

Sztergbaum Roman edited this page Feb 4, 2018 · 66 revisions

Welcome to the page of the SFME::Mediator module

Modules contents

A complete example can be found here

Class Diagram

EventManager

Content for EventManager.

Member function : emit

    template <typename TEvent, typename ... Args>
    void emit(Args &&... args) noexcept;
Template parameters
  • TEvent: The type of event you wish to broadcast.
  • Args: The arguments possibly necessary to the creation of the TEvent object.
Notes
  • TEvent must be a class derived from BaseEvent class.

Who can i use it ?

#include <SFME/mediator/mediator.hpp>
#include "InputEvent.hpp"
#include "ShutdownEvent.hpp"

int main() 
{
    sfme::mediator::EventManager evtMgr;
    // InputEvent constructor take 1 arguments
    // constructor -> InputEvent(char keycode);
    evtMgr.emit<InputEvent>('a');
    // ShutdownEvent is default constructible
    evtMgr.emit<ShutdownEvent>();
    return 0;
}

Member function : subscribe

    template <typename TEvent, typename TReceiver>
    void subscribe(TReceiver &receiver) noexcept;
Template parameters
  • TEvent: Represents the type of event you want to subscribe.
  • Receiver: Represents the instance of the class that wishes to subscribe to this type of event.
Notes
  • TEvent must be a class derived from BaseEvent class.
  • The instance that uses the subscribe member function must be derived from the Receiver class. The use of the CRTP is here only for readability.

Who can i use it ?

#include <SFME/mediator/mediator.hpp>
#include "InputEvent.hpp"

class Example : public sfme::mediator::Receiver<Example>
{
    Example(sfme::mediator::EventManager& evtMgr) noexcept
    {
        evtMgr.subscribe<InputEvent>(*this);
    }
};

int main() 
{
    sfme::mediator::EventManager evtMgr;
    Example ex(evtMgr);
    return 0;
}

BaseEvent

Content for BaseEvent.

Receiver

Content for Receiver.

Example

Content of the examples.

Clone this wiki locally