From d7575bef1e530eac004c973b0384a12561f0bb8b Mon Sep 17 00:00:00 2001 From: pixel Date: Mon, 20 Oct 2003 16:21:24 +0000 Subject: Commit of the month --- lib/engine.cc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'lib/engine.cc') diff --git a/lib/engine.cc b/lib/engine.cc index 6792706..40426c1 100644 --- a/lib/engine.cc +++ b/lib/engine.cc @@ -10,7 +10,7 @@ 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::mx, mogltk::engine::my, mogltk::engine::mbuttons; +int mogltk::engine::mx, mogltk::engine::my, mogltk::engine::mz = 0, mogltk::engine::mbuttons; int mogltk::engine::frames, mogltk::engine::locked = 0; double mogltk::engine::curfps = -1; Uint32 mogltk::engine::curticks; @@ -133,7 +133,7 @@ SDL_RWops * mogltk::engine::RWFromHandle(Handle * h) throw (GeneralException) { return r; } -void mogltk::engine::pollevents() { +void mogltk::engine::pollevents() throw (GeneralException) { SDL_Event event; bool hastoreturn = appactive; @@ -158,7 +158,9 @@ void mogltk::engine::pollevents() { updatemouse(); return; } - SDL_WaitEvent(&event); + if (!SDL_WaitEvent(&event)) { + throw GeneralException("Error polling for SDL Event"); + } switch(event.type) { case SDL_ACTIVEEVENT: switch (event.active.state) { @@ -205,7 +207,15 @@ void mogltk::engine::pollevents() { break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: - printm(M_INFO, String("Mouse button %02x ") + (event.button.state == SDL_PRESSED ? "pressed" : "released") + " at (%i, %i)\n", event.button.button, event.button.x, event.button.y); + printm(M_INFO, String().set("Mouse button %02x ", event.button.button) + String((event.button.state == SDL_PRESSED ? "pressed" : "released")) + " at (" + event.button.x + ", " + event.button.y + ")\n"); + if (event.button.state == SDL_PRESSED) { + if (event.button.button == 4) { + mz--; + } + if (event.button.button == 5) { + mz++; + } + } break; case SDL_QUIT: printm(M_INFO, "Quit requested\n"); @@ -254,6 +264,10 @@ int mogltk::engine::mouseY() { return my; } +int mogltk::engine::mouseZ() { + return mz; +} + int mogltk::engine::mousebuttons() { return mbuttons; } -- cgit v1.2.3