dEngine
Simple 2D C++ game engine
Public Types | Public Member Functions | Public Attributes | List of all members
dengine::EventSystem Class Reference

Event System. More...

#include <EventSystem.h>

Public Types

typedef std::function< void(SDL_Event &)> EventCallback
 

Public Member Functions

 EventSystem ()
 
void RegisterEventCallback (Uint32 eventType, EventCallback callback)
 Function to register an event callback. More...
 
void DeregisterEventCallback (Uint32 eventType)
 Function to deregister an event callback. More...
 
void processEvents ()
 Process events, including custom events. More...
 
void cleanup ()
 Clean up resources. More...
 

Public Attributes

std::map< Uint32, EventCallbackeventCallbacks
 

Detailed Description

Event System.

Member Typedef Documentation

◆ EventCallback

typedef std::function<void(SDL_Event&)> dengine::EventSystem::EventCallback

Constructor & Destructor Documentation

◆ EventSystem()

EventSystem::EventSystem ( )

Member Function Documentation

◆ cleanup()

void dengine::EventSystem::cleanup ( )

Clean up resources.

◆ DeregisterEventCallback()

void dengine::EventSystem::DeregisterEventCallback ( Uint32  eventType)
inline

Function to deregister an event callback.

Parameters
eventTypeThe type of event you want to deregister

◆ processEvents()

void dengine::EventSystem::processEvents ( )
inline

Process events, including custom events.

Referenced by dengine::Game::loop().

◆ RegisterEventCallback()

void dengine::EventSystem::RegisterEventCallback ( Uint32  eventType,
EventCallback  callback 
)
inline

Function to register an event callback.

Parameters
eventTypeThe type of event your want this registered for
callbackThe callback itself
void StartGameButton::CheckMouseHover(SDL_Event& event){
if(event.type == SDL_MOUSEMOTION) {
int x, y;
SDL_GetMouseState(&x, &y);
if (x > textRect.x && x < textRect.x + textRect.w
&& y > textRect.y && y < textRect.y + textRect.h) {
inRect = true;
SetDrawColor({255, 0, 0, 255});
} else {
inRect = false;
SetDrawColor({255, 102, 255, 255});
}
}else if(event.type == SDL_MOUSEBUTTONUP){
OnClick();
}
}
void StartGameButton::Start(){
Game::GetInstance().GetEventSystem()->RegisterEventCallback(SDL_MOUSEMOTION, [this](SDL_Event& event) {
CheckMouseHover(event);
});
Game::GetInstance().GetEventSystem()->RegisterEventCallback(SDL_MOUSEBUTTONUP, [this](SDL_Event& event) {
CheckMouseHover(event);
});
}

Member Data Documentation

◆ eventCallbacks

std::map<Uint32, EventCallback> dengine::EventSystem::eventCallbacks