in agdk/agde/endless-tunnel/endless-tunnel/Android/app/src/main/cpp/ui_scene.cpp [231:270]
void UiScene::OnKeyDown(int ourKeyCode) {
if (mWaitScreen) {
return;
}
int navDir = -1;
switch (ourKeyCode) {
case OURKEY_UP:
navDir = UI_DIR_UP;
break;
case OURKEY_DOWN:
navDir = UI_DIR_DOWN;
break;
case OURKEY_LEFT:
navDir = UI_DIR_LEFT;
break;
case OURKEY_RIGHT:
navDir = UI_DIR_RIGHT;
break;
case OURKEY_ENTER:
DispatchButtonClick(mFocusWidget >= 0 ? mFocusWidget : mDefaultButton);
break;
}
if (navDir >= 0) {
if (mFocusWidget < 0) {
// enter focus mode
mFocusWidget = FindDefaultButton();
} else {
// navigate
int destId = -1;
UiWidget *w = GetWidgetById(mFocusWidget);
UiWidget *destWidget = w ? GetWidgetById(destId = w->GetNav(navDir)) : NULL;
if (destWidget && destWidget->IsClickableButton()) {
// navigate to that widget
mFocusWidget = destId;
}
}
}
}