summaryrefslogtreecommitdiff
path: root/lib/engine.cc
diff options
context:
space:
mode:
authorpixel <pixel>2003-01-22 01:11:50 +0000
committerpixel <pixel>2003-01-22 01:11:50 +0000
commitac4600dbd1260c0703c59d46512656ad3823f848 (patch)
treef7703e53587ce79dd6d287c20e971c3db97239fe /lib/engine.cc
parent38a65f1d57c4dc65dcce9056725ce26e0474eabc (diff)
commit of the day
Diffstat (limited to 'lib/engine.cc')
-rw-r--r--lib/engine.cc44
1 files changed, 35 insertions, 9 deletions
diff --git a/lib/engine.cc b/lib/engine.cc
index fac660e..741deee 100644
--- a/lib/engine.cc
+++ b/lib/engine.cc
@@ -2,12 +2,12 @@
#define _(x) x
-int mogltk::engine::inited = 0;
-bool mogltk::engine::appactive = false, mogltk::engine::cursorvisible = false;
+bool mogltk::engine::inited = false, mogltk::engine::postsetuped = false;
+bool mogltk::engine::appactive = false, mogltk::engine::cursorvisible = false, mogltk::engine::quitrequest = false;
int mogltk::engine::setup() throw(GeneralException) {
if (inited) {
- printm(M_WARNING, "mogltk::engine::startup() called twice, ignoring second call.\n");
+ printm(M_WARNING, "mogltk::engine::setup() called twice, ignoring second call.\n");
return -1;
}
if (SDL_Init(0) < 0) {
@@ -15,7 +15,20 @@ int mogltk::engine::setup() throw(GeneralException) {
}
atexit(SDL_Quit);
- inited = 1;
+ inited = true;
+
+ return 0;
+}
+
+int mogltk::engine::postsetup() throw(GeneralException) {
+ if (postsetuped) {
+ printm(M_WARNING, "mogltk::engine::postsetup() called twice, ignoring second call.\n");
+ return -1;
+ }
+
+ SDL_EnableUNICODE(1);
+
+ postsetuped = true;
return 0;
}
@@ -93,6 +106,9 @@ void mogltk::engine::pollevents() {
SDL_Event event;
bool hastoreturn = appactive;
+ if (!postsetuped)
+ postsetup();
+
while(true) {
if (hastoreturn)
if (!SDL_PollEvent(NULL))
@@ -104,14 +120,10 @@ void mogltk::engine::pollevents() {
hastoreturn = true;
break;
case SDL_MOUSEMOTION:
- printm(M_INFO, "Mouse has gone over the screen - (%i, %i)\n", event.motion.x, event.motion.y);
+ printm(M_INFO, "Mouse slept over the screen - (%i, %i)\n", event.motion.x, event.motion.y);
if (cursorvisible)
hastoreturn = true;
break;
- case SDL_QUIT:
- printm(M_INFO, "Quit requested\n");
- exit(0);
- break;
case SDL_ACTIVEEVENT:
switch (event.active.state) {
case SDL_APPMOUSEFOCUS:
@@ -125,6 +137,15 @@ void mogltk::engine::pollevents() {
break;
}
break;
+ case SDL_KEYDOWN:
+ case SDL_KEYUP:
+ printm(M_INFO, String("Key ") + event.key.keysym.scancode + " on keyboard " + event.key.which + (event.key.state == SDL_PRESSED ? " pressed" : " released") + "\n");
+ printm(M_INFO, "SDL keysym: %i - Unicode: %04x - modifiers: %04x\n", event.key.keysym.sym, event.key.keysym.unicode, event.key.keysym.mod);
+ break;
+ case SDL_QUIT:
+ printm(M_INFO, "Quit requested\n");
+ hastoreturn = quitrequest = true;
+ break;
default:
printm(M_INFO, "Unknow event: %i\n", event.type);
break;
@@ -147,3 +168,8 @@ void mogltk::engine::setcursorvisible(bool p) {
bool mogltk::engine::getcursorvisible() {
return cursorvisible;
}
+
+bool mogltk::engine::quitrequested() {
+ return quitrequest;
+}
+