/** * @brief Refreshes the map overlay recalculating the dimensions it should have. * * This should be called if the planets or the likes change at any given time. */ void ovr_refresh (void) { double max_x, max_y; int i; /* Must be open. */ if (!ovr_isOpen()) return; /* Calculate max size. */ max_x = 0.; max_y = 0.; for (i=0; i<cur_system->njumps; i++) { max_x = MAX( max_x, ABS(cur_system->jumps[i].pos.x) ); max_y = MAX( max_y, ABS(cur_system->jumps[i].pos.y) ); } for (i=0; i<cur_system->nplanets; i++) { max_x = MAX( max_x, ABS(cur_system->planets[i]->pos.x) ); max_y = MAX( max_y, ABS(cur_system->planets[i]->pos.y) ); } /* We need to calculate the radius of the rendering. */ ovr_res = 2. * 1.2 * MAX( max_x / SCREEN_W, max_y / SCREEN_H ); }
/** * @brief Handles global input. * * Basically separates the event types * * @param event Incoming SDL_Event. */ void input_handle( SDL_Event* event ) { int ismouse = 0; /* Special case mouse stuff. */ if ((event->type == SDL_MOUSEMOTION) || (event->type == SDL_MOUSEBUTTONDOWN) || (event->type == SDL_MOUSEBUTTONUP)) { input_mouseTimer = MOUSE_HIDE; SDL_ShowCursor( SDL_ENABLE ); ismouse = 1; } if (toolkit_isOpen()) { /* toolkit handled completely separately */ if (toolkit_input(event)) return; /* we don't process it if toolkit grabs it */ if (ismouse) return; /* Toolkit absorbs everything mousy. */ } if (ovr_isOpen()) if (ovr_input(event)) return; /* Don't process if the map overlay wants it. */ /* GUI gets event. */ if (gui_handleEvent(event)) return; switch (event->type) { /* * game itself */ case SDL_JOYAXISMOTION: input_joyaxis(event->jaxis.axis, event->jaxis.value); break; case SDL_JOYBUTTONDOWN: input_joyevent(KEY_PRESS, event->jbutton.button); break; case SDL_JOYBUTTONUP: input_joyevent(KEY_RELEASE, event->jbutton.button); break; case SDL_KEYDOWN: #if SDL_VERSION_ATLEAST(2,0,0) if (event->key.repeat != 0) return; #endif /* SDL_VERSION_ATLEAST(2,0,0) */ input_keyevent(KEY_PRESS, event->key.keysym.sym, event->key.keysym.mod, 0); break; case SDL_KEYUP: #if SDL_VERSION_ATLEAST(2,0,0) if (event->key.repeat !=0) return; #endif /* SDL_VERSION_ATLEAST(2,0,0) */ input_keyevent(KEY_RELEASE, event->key.keysym.sym, event->key.keysym.mod, 0); break; /* Mouse stuff. */ case SDL_MOUSEBUTTONDOWN: input_clickevent( event ); break; #if SDL_VERSION_ATLEAST(2,0,0) case SDL_MOUSEWHEEL: if (event->wheel.y > 0) input_clickZoom( 1.1 ); else input_clickZoom( 0.9 ); break; #endif /* SDL_VERSION_ATLEAST(2,0,0) */ case SDL_MOUSEMOTION: input_mouseMove( event ); break; default: break; } }
/** * @brief Handles global input. * * Basically seperates the event types * * @param event Incoming SDL_Event. */ void input_handle( SDL_Event* event ) { /* Special case mouse stuff. */ if ((event->type == SDL_MOUSEMOTION) || (event->type == SDL_MOUSEBUTTONDOWN) || (event->type == SDL_MOUSEBUTTONUP)) { input_mouseTimer = MOUSE_HIDE; SDL_ShowCursor( SDL_ENABLE ); } if (toolkit_isOpen()) /* toolkit handled seperately completely */ if (toolkit_input(event)) return; /* we don't process it if toolkit grabs it */ if (ovr_isOpen()) if (ovr_input(event)) return; /* Don't process if the map overlay wants it. */ /* GUI gets event. */ if (gui_handleEvent(event)) return; switch (event->type) { /* * game itself */ case SDL_JOYAXISMOTION: input_joyaxis(event->jaxis.axis, event->jaxis.value); break; case SDL_JOYBUTTONDOWN: input_joyevent(KEY_PRESS, event->jbutton.button); break; case SDL_JOYBUTTONUP: input_joyevent(KEY_RELEASE, event->jbutton.button); break; case SDL_KEYDOWN: input_keyevent(KEY_PRESS, event->key.keysym.sym, event->key.keysym.mod, 0); break; case SDL_KEYUP: input_keyevent(KEY_RELEASE, event->key.keysym.sym, event->key.keysym.mod, 0); break; /* Mouse stuff. */ case SDL_MOUSEBUTTONDOWN: input_clickevent( event ); break; case SDL_MOUSEMOTION: input_mouseMove( event ); break; default: break; } }