void game::updateControls(){ if (kbhit()){ char cc = getch(); switch(cc){ default:break; case 'D': case 'd': onMoveRightKeyPressed();break; case 'A': case 'a': onMoveLeftKeyPressed();break; case 'L': case 'l': onRightKeyPressed();break; case 'J': case 'j': onLeftKeyPressed();break; case 'Q': case 'q': onSwitchWeaponKeyPressed();break; case 32: onShootKeyPressed();break; } } }
int CListBox::exec(CMenuTarget* parent, const std::string &/*actionKey*/) { neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; selected = 0; if (parent) parent->hide(); paintHead(); paint(); paintFoot(); frameBuffer->blit(); bool loop = true; modified = false; while (loop) { g_RCInput->getMsg(&msg, &data, g_settings.timing[SNeutrinoSettings::TIMING_EPG]); if (( msg == (neutrino_msg_t)g_settings.key_channelList_cancel) || ( msg == CRCInput::RC_home)) { loop = false; } else if (msg == CRCInput::RC_up || (int) msg == g_settings.key_channelList_pageup) { if(getItemCount()!=0) { int step = 0; int prev_selected = selected; step = ((int) msg == g_settings.key_channelList_pageup) ? listmaxshow : 1; // browse or step 1 selected -= step; if((prev_selected-step) < 0) // because of uint selected = getItemCount() - 1; paintItem(prev_selected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if(oldliststart!=liststart) paint(); else paintItem(selected - liststart); } } else if (msg == CRCInput::RC_down || (int) msg == g_settings.key_channelList_pagedown) { if(getItemCount() != 0) { unsigned int step = 0; int prev_selected = selected; step = ((int) msg == g_settings.key_channelList_pagedown) ? listmaxshow : 1; // browse or step 1 selected += step; if(selected >= getItemCount()) { if (((getItemCount() / listmaxshow) + 1) * listmaxshow == getItemCount() + listmaxshow) // last page has full entries selected = 0; else selected = ((step == listmaxshow) && (selected < (((getItemCount() / listmaxshow) + 1) * listmaxshow))) ? (getItemCount() - 1) : 0; } paintItem(prev_selected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if(oldliststart!=liststart) paint(); else paintItem(selected - liststart); } } else if( msg ==CRCInput::RC_ok) { onOkKeyPressed(); paintTitleInfo(); } else if ( msg ==CRCInput::RC_red) { onRedKeyPressed(); } else if ( msg ==CRCInput::RC_green) { onGreenKeyPressed(); } else if ( msg ==CRCInput::RC_yellow) { onYellowKeyPressed(); } else if ( msg ==CRCInput::RC_blue) { onBlueKeyPressed(); } else if ( msg ==CRCInput::RC_setup) { onMenuKeyPressed(); } else if ( msg ==CRCInput::RC_info) { onInfoKeyPressed(); } else if ( msg ==CRCInput::RC_right) { onRightKeyPressed(); } else if ( msg ==CRCInput::RC_left) { onLeftKeyPressed(); } else if ( msg ==CRCInput::RC_spkr) { onMuteKeyPressed(); } else { CNeutrinoApp::getInstance()->handleMsg( msg, data ); // kein canceling... } frameBuffer->blit(); } hide(); return res; }