/** * @brief This function is called when a game key is pressed. * @param key a key */ void Game::key_pressed(GameControls::GameKey key) { if (!is_suspended()) { if (key == GameControls::PAUSE) { if (can_pause()) { set_paused(true); } } else { // when the game is not suspended, all other keys apply to the hero hero->key_pressed(key); } } // is a message being shown? else if (is_showing_message()) { dialog_box->key_pressed(key); } // is the game paused? else if (is_paused()) { pause_menu->key_pressed(key); } // is the game over sequence shown? else if (is_showing_gameover()) { gameover_sequence->key_pressed(key); } }
/** * \brief This function is called when a game command is pressed. * \param command A game command. */ void Game::notify_command_pressed(GameCommands::Command command) { // Is a built-in dialog box being shown? if (is_dialog_enabled()) { if (dialog_box.notify_command_pressed(command)) { return; } } // See if the game script handles the command. if (get_lua_context().game_on_command_pressed(*this, command)) { return; } // See if the map script handled the command. if (get_lua_context().map_on_command_pressed(get_current_map(), command)) { return; } // Lua scripts did not override the command: do the built-in behavior. if (command == GameCommands::PAUSE) { if (is_paused()) { if (can_unpause()) { set_paused(false); } } else { if (can_pause()) { set_paused(true); } } } else if (!is_suspended()) { // When the game is not suspended, all other commands apply to the hero. hero->notify_command_pressed(command); } }