summaryrefslogtreecommitdiffstats
path: root/engine/flatserial.cpp
diff options
context:
space:
mode:
authorancarola <raffaele.ancarola@epfl.ch>2019-01-19 13:07:37 +0100
committerancarola <raffaele.ancarola@epfl.ch>2019-01-19 13:07:37 +0100
commit3922c797671cdc23d9233ff76909489e45fd0006 (patch)
treed385754f00159b93a8966fb5080a51dc2d0eb4a0 /engine/flatserial.cpp
parentedas (diff)
downloadflatland-3922c797671cdc23d9233ff76909489e45fd0006.tar.gz
flatland-3922c797671cdc23d9233ff76909489e45fd0006.zip
Test two completed successfully
Diffstat (limited to 'engine/flatserial.cpp')
-rw-r--r--engine/flatserial.cpp76
1 files changed, 69 insertions, 7 deletions
diff --git a/engine/flatserial.cpp b/engine/flatserial.cpp
index d725d30..25eafbe 100644
--- a/engine/flatserial.cpp
+++ b/engine/flatserial.cpp
@@ -1,22 +1,84 @@
#include "flatserial.h"
+#include "flattask.h"
-#include <vector>
-
-using namespace std;
-
-void process_events()
+SDL_EventCollector::SDL_EventCollector()
{
+ checker = new FlatTask<SDL_EventCollector>(this, &SDL_EventCollector::collect, 0);
+}
+SDL_EventCollector::~SDL_EventCollector()
+{
+ delete checker;
}
-void registerFocusable(Focusable*)
+void SDL_EventCollector::collect(void*)
{
+ SDL_Event event;
+
+ while ( SDL_PollEvent(&event) )
+ {
+ switch(event.type)
+ {
+
+ /* Keyboard */
+ case SDL_KEYDOWN:
+ keyboard.push_back(event);
+ break;
+
+ case SDL_KEYUP:
+ keyboard.push_back(event);
+ break;
+
+ /* Window */
+ case SDL_WINDOWEVENT:
+ window.push_back(event);
+ break;
+ /* Quit */
+ case SDL_QUIT:
+ quit.push_back(event);
+ break;
+
+ /* User */
+ case SDL_USEREVENT:
+ user.push_back(event);
+ break;
+ }
+
+ // TODO other events
+ }
}
-void unregisterFocusable(Focusable*)
+const std::vector<SDL_Event>& SDL_EventCollector::getStack(Uint32 id) const
{
+ switch(id)
+ {
+ {
+
+ /* Keyboard */
+ case SDL_KEYDOWN:
+ return keyboard;
+
+ case SDL_KEYUP:
+ return keyboard;
+
+ /* Window */
+ case SDL_WINDOWEVENT:
+ return window;
+
+ /* Quit */
+ case SDL_QUIT:
+ return quit;
+
+ /* User */
+ case SDL_USEREVENT:
+ return user;
+
+ }
+ // TODO other events
+ }
}
+SDL_EventCollector * FlatSerial::collector = new SDL_EventCollector();