virtual void OnKeyPressed(Key key) { if(key == Key::ArrowDown) { m_selectionWheel->AdvanceSelection(1); } else if(key == Key::ArrowUp) { m_selectionWheel->AdvanceSelection(-1); } else if(key == Key::PageDown) { m_selectionWheel->AdvanceSelection(5); } else if(key == Key::PageUp) { m_selectionWheel->AdvanceSelection(-5); } else if(key == Key::ArrowLeft) { m_selectionWheel->AdvanceDifficultySelection(-1); } else if(key == Key::ArrowRight) { m_selectionWheel->AdvanceDifficultySelection(1); } else if(key == Key::Return) { bool autoplay = (g_gameWindow->GetModifierKeys() & ModifierKeys::Ctrl) == ModifierKeys::Ctrl; MapIndex* map = m_selectionWheel->GetSelection(); if(map) { DifficultyIndex* diff = m_selectionWheel->GetSelectedDifficulty(); Game* game = Game::Create(diff->path); if(!game) { Logf("Failed to start game", Logger::Error); return; } game->GetScoring().autoplay = autoplay; // Transition to game TransitionScreen* transistion = TransitionScreen::Create(game); g_application->AddTickable(transistion); } } else if(key == Key::F5) { m_mapDatabase.StartSearching(); } else if(key == Key::F2) { m_selectionWheel->SelectRandom(); } }