blob: f8517a3de5c6272a4bb16e8dc07b78f150a7e9d7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#pragma once
#include "../util/OptionalRef.h"
// TODO: remove these singletons:
#include "../facade/SDLContext.h"
#include "EventManager.h"
#include "SaveManager.h"
namespace crepe {
class ComponentManager;
class SceneManager;
/**
* Struct to pass references to classes that would otherwise need to be singletons down to
* other classes within the engine hierarchy. Made to prevent constant changes to subclasses to
* pass specific references through dependency injection. All references on this struct
* *should* be explicitly checked for availability as this struct does not guarantee anything.
*
* \note Dereferencing members of this struct should be deferred. If you are a user of this
* class, keep a reference to this mediator instead of just picking references from it when you
* receive an instance.
*
* \warning This class should never be directly accessible from the API
*/
struct Mediator {
OptionalRef<ComponentManager> component_manager;
OptionalRef<SceneManager> scene_manager;
OptionalRef<SaveManager> save_manager = SaveManager::get_instance();
OptionalRef<EventManager> event_manager = EventManager::get_instance();
OptionalRef<SDLContext> sdl_context = SDLContext::get_instance();
};
} // namespace crepe
|