//class_global_inputs.hpp for global input //******************************* //*** class_global_inputs.hpp *** //******************************* //Version 1.0 //Developed with Dev C++ 5.2.0.3 & Allegro 5.0.6 //By Alain Galiani //Dedalusman //nageondu@gmail.com //Start 20 08 2012 //Finished 00 00 2013 //Last updat 20 08 2012 //History: /* */ class class_global_inputs {public: //*** DATAS *** lm4o fps; ALLEGRO_EVENT ob_event; ALLEGRO_EVENT_QUEUE *ptr_event_queue; ALLEGRO_TIMER *ptr_timer; //*** FONCTIONS *** lm4o init(lm4o p_fps); void run(); }; lm4o class_global_inputs::init(lm4o p_fps) { fps=p_fps; if(!al_install_keyboard()) { return -1; } if(!al_install_mouse()) { return -1; } if(!al_install_joystick()) { return -1; } ptr_event_queue=al_create_event_queue(); ptr_timer=al_create_timer(1.0/fps); al_register_event_source(ptr_event_queue,al_get_keyboard_event_source()); al_register_event_source(ptr_event_queue,al_get_mouse_event_source()); al_register_event_source(ptr_event_queue,al_get_timer_event_source(ptr_timer)); al_register_event_source(ptr_event_queue,al_get_joystick_event_source()); al_start_timer(ptr_timer); return 0; } void class_global_inputs::run() { al_wait_for_event(ptr_event_queue,&ob_event); switch(ob_event.type) { case ALLEGRO_EVENT_KEY_DOWN: switch(ob_event.keyboard.keycode) { case ALLEGRO_KEY_UP: g_key_up=true; break; case ALLEGRO_KEY_DOWN: g_key_down=true; break; case ALLEGRO_KEY_LEFT: g_key_left=true; break; case ALLEGRO_KEY_RIGHT: g_key_right=true; break; } break; case ALLEGRO_EVENT_KEY_UP: switch(ob_event.keyboard.keycode) { case ALLEGRO_KEY_UP: g_key_up=false; break; case ALLEGRO_KEY_DOWN: g_key_down=false; break; case ALLEGRO_KEY_LEFT: g_key_left=false; break; case ALLEGRO_KEY_RIGHT: g_key_right=false; break; case ALLEGRO_KEY_ESCAPE: g_game_loop=false; break; } break; case ALLEGRO_EVENT_DISPLAY_CLOSE: g_game_loop=false; break; case ALLEGRO_EVENT_MOUSE_AXES: g_mouse_pos_x=ob_event.mouse.x; g_mouse_pos_y=ob_event.mouse.y; break; case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN: if(ob_event.mouse.button & 2) { g_but_mouse_right=true; } if(ob_event.mouse.button & 1) { g_but_mouse_left=true; } break; case ALLEGRO_EVENT_MOUSE_BUTTON_UP: if(ob_event.mouse.button & 2) { g_but_mouse_right=false; } if(ob_event.mouse.button & 1) { g_but_mouse_left=false; } break; case ALLEGRO_EVENT_JOYSTICK_AXIS: switch(ob_event.joystick.stick) { case 0: switch(ob_event.joystick.axis) { case 0: g_x1_axis_joy1=ob_event.joystick.pos; break; case 1: g_y1_axis_joy1=ob_event.joystick.pos; break; } break; case 1: switch(ob_event.joystick.axis) { case 0: g_x2_axis_joy1=ob_event.joystick.pos; break; case 1: g_y2_axis_joy1=ob_event.joystick.pos; break; } break; case 2: switch(ob_event.joystick.axis) { case 0: g_x3_axis_joy1=ob_event.joystick.pos; break; case 1: g_y3_axis_joy1=ob_event.joystick.pos; break; } break; case 3: switch(ob_event.joystick.axis) { case 0: g_x4_axis_joy1=ob_event.joystick.pos; break; case 1: g_y4_axis_joy1=ob_event.joystick.pos; break; } break; case 4: switch(ob_event.joystick.axis) { case 0: g_x5_axis_joy1=ob_event.joystick.pos; break; case 1: g_y5_axis_joy1=ob_event.joystick.pos; break; } break; } break; case ALLEGRO_EVENT_JOYSTICK_BUTTON_DOWN: switch(ob_event.joystick.button) { case 0: g_but_00_joy1=true; break; case 1: g_but_01_joy1=true; break; case 2: g_but_02_joy1=true; break; case 3: g_but_03_joy1=true; break; case 4: g_but_04_joy1=true; break; case 5: g_but_05_joy1=true; break; case 6: g_but_06_joy1=true; break; case 7: g_but_07_joy1=true; break; case 8: g_but_08_joy1=true; break; case 9: g_but_09_joy1=true; break; case 10: g_but_10_joy1=true; break; case 11: g_but_11_joy1=true; break; case 12: g_but_12_joy1=true; break; } break; case ALLEGRO_EVENT_JOYSTICK_BUTTON_UP: switch(ob_event.joystick.button) { case 0: g_but_00_joy1=false; break; case 1: g_but_01_joy1=false; break; case 2: g_but_02_joy1=false; break; case 3: g_but_03_joy1=false; break; case 4: g_but_04_joy1=false; break; case 5: g_but_05_joy1=false; break; case 6: g_but_06_joy1=false; break; case 7: g_but_07_joy1=false; break; case 8: g_but_08_joy1=false; break; case 9: g_but_09_joy1=false; break; case 10: g_but_10_joy1=false; break; case 11: g_but_11_joy1=false; break; case 12: g_but_12_joy1=false; break; } break; case ALLEGRO_EVENT_TIMER: if(al_is_event_queue_empty(ptr_event_queue)) { g_redraw=true; } break; } }