← index
Codename.Quadtris/include/cmx_event.h
Source: Codename.Quadtris/include/cmx_event.h
#ifndef CMX_EVENT_H_
#define CMX_EVENT_H_
#include "cmx_joystick.h"
#include<deque>

namespace cmx {
	namespace event {
		enum EventTypes { EVENT_NOTHING, EVENT_KEYUP, EVENT_KEYDOWN, EVENT_MOUSE, EVENT_QUIT };
		enum { K_NULL=0, K_LEFT, K_RIGHT, K_UP, K_DOWN, K_RETURN, K_SPACE, K_ESCAPE};
		class Event {
		public:
			EventTypes type;
			bool translate;
			int skey, key, x, y, button, state;
			bool procEvent();

			Event &operator=( const Event &e ) {
				type = e.type;
				translate = e.translate;
				skey = e.skey;
				key = e.key;
				x = e.x;
				y = e.y;
				button = e.button;
				state = e.state;
				return *this;
			}

			bool translate_joy() {
				static int btn[12][12];
				bool rt_value = false;
				for(int i = 0; i < cmx::input::num_joystick(); ++i) {
					for(int z = 0; z <= cmx::input::BUTTON_START; z++) {
						if(cmx::input::poll_joystick(i, z)) {
							type = EVENT_KEYDOWN;
							if(btn[i][z] != 1) {
								btn[i][z] = 1;
								switch(z) {
								case cmx::input::BUTTON_UP:
									skey = cmx::event::K_UP;
									break;
								case cmx::input::BUTTON_DOWN:
									skey = cmx::event::K_DOWN;
									break;
								case cmx::input::BUTTON_LEFT:
									skey = cmx::event::K_LEFT;
									break;
								case cmx::input::BUTTON_RIGHT:
									skey = cmx::event::K_RIGHT;
									break;
								case cmx::input::BUTTON_START:
									skey = cmx::event::K_RETURN;
									break;
									}
									rt_value = true;
								}
							} else btn[i][z] = 0;
						}
				}
				return rt_value;
			}
		};

		extern std::deque<Event > event_que;
        typedef unsigned int (*timerFunc)(unsigned int, void *);
        unsigned int createTimer(unsigned int interval, timerFunc t);
        void stopTimer(unsigned int value);
        
	}
}

#endif