Events function and propogate properly now

This commit is contained in:
Ben
2021-11-12 21:01:30 +00:00
parent 17a1913747
commit b1f79f4aa3
5 changed files with 199 additions and 35 deletions

View File

@@ -6,10 +6,14 @@
#include <Aeon/Aeon.hpp>
#include <Aeon/Core/Events.hpp>
class Level : public Aeon::Core::GameLayer
class BottomestLevel : public Aeon::Core::GameLayer
{
public:
Level() { }
BottomestLevel()
{
UnshiftThisAsSink("GAME_LOL");
Aeon::Core::EventManager::GetInstance().DebugPrint();
}
void Attach() override
{
@@ -26,9 +30,9 @@ public:
}
bool EventRecieved( Aeon::Core::GenericEvent& e ) override
bool EventRecieved(Aeon::Core::GenericEvent& e) override
{
std::cout << "FROM BOTTOMESTLEVEL " << e.System << " " << e.Type << " " << e.Data << std::endl;
return false;
}
@@ -38,10 +42,92 @@ public:
}
};
class BottomLevel : public Aeon::Core::GameLayer
{
public:
BottomLevel()
{
PushThisAsSink("GAME_LOL");
Aeon::Core::EventManager::GetInstance().DebugPrint();
}
void Attach() override
{
}
void FrameTick() override
{
}
void TimeTick() override
{
}
bool EventRecieved(Aeon::Core::GenericEvent& e) override
{
std::cout << "FROM BOTTOMLEVEL " << e.System << " " << e.Type << " " << e.Data << std::endl;
return false;
}
void Detach() override
{
}
};
class Level : public Aeon::Core::GameLayer
{
public:
Level()
{
mEventDispatcher.RegisterAsSource("GAME_LOL");
PushThisAsSink("GAME_LOL");
Aeon::Core::EventManager::GetInstance().DebugPrint();
}
void Attach() override
{
}
void FrameTick() override
{
mEventDispatcher.Dispatch("Lmao gottem");
}
void TimeTick() override
{
}
bool EventRecieved( Aeon::Core::GenericEvent& e ) override
{
std::cout << "FROM LEVEL " << e.System << " " << e.Type << " " << e.Data << std::endl;
return false;
}
void Detach() override
{
}
Aeon::Core::EventDispatcher mEventDispatcher;
};
class TopLevel : public Aeon::Core::GameLayer
{
public:
TopLevel() { }
TopLevel()
{
PushAndStickThisAsSink("GAME_LOL");
Aeon::Core::EventManager::GetInstance().DebugPrint();
}
void Attach() override
{
@@ -60,7 +146,43 @@ public:
bool EventRecieved( Aeon::Core::GenericEvent& e ) override
{
std::cout << "FROM TOPLEVEL " << e.System << " " << e.Type << " " << e.Data << std::endl;
return false;
}
void Detach() override
{
}
};
class ToperLevel : public Aeon::Core::GameLayer
{
public:
ToperLevel()
{
PushAndStickThisAsSink("GAME_LOL");
Aeon::Core::EventManager::GetInstance().DebugPrint();
}
void Attach() override
{
}
void FrameTick() override
{
}
void TimeTick() override
{
}
bool EventRecieved(Aeon::Core::GenericEvent& e) override
{
std::cout << "FROM TOPERLEVEL " << e.System << " " << e.Type << " " << e.Data << std::endl;
return false;
}
@@ -78,10 +200,16 @@ public:
ExampleGame()
: App( { "Example" }, { "Game with AEON!" } )
{
BottomestLevel* bottomestLevel = new BottomestLevel;
BottomLevel* bottomLevel = new BottomLevel;
Level* level = new Level;
TopLevel* topLevel = new TopLevel;
ToperLevel* toperLevel = new ToperLevel;
PushLayer( (Aeon::Core::GameLayer*)bottomestLevel );
PushLayer( (Aeon::Core::GameLayer*)bottomLevel );
PushLayer( (Aeon::Core::GameLayer*)level );
PushLayer( (Aeon::Core::GameLayer*)topLevel );
PushLayer( (Aeon::Core::GameLayer*)toperLevel);
Run();
delete level;
}