示例#1
0
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;
		}
	}
}
示例#2
0
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;
}