Ejemplo n.º 1
0
// <KEY_SEQUENCE>
KeySeq *SettingLoader::load_KEY_SEQUENCE(
	const tstringi &i_name, bool i_isInParen, Modifier::Type i_mode)
{
	KeySeq keySeq(i_name);
	while (!isEOL()) {
		Modifier::Type mode;
		Modifier modifier = load_MODIFIER(i_mode, m_defaultKeySeqModifier, &mode);
		keySeq.setMode(mode);
		Token *t = lookToken();
		if (t->isCloseParen() && i_isInParen)
			break;
		else if (t->isOpenParen()) {
			getToken(); // open paren
			KeySeq *ks = load_KEY_SEQUENCE(_T(""), true, i_mode);
			getToken(); // close paren
			keySeq.add(ActionKeySeq(ks));
		} else if (*t == _T("$")) { // <KEYSEQ_NAME>
			getToken();
			t = getToken();
			KeySeq *ks = m_setting->m_keySeqs.searchByName(t->getString());
			if (ks == NULL)
				throw ErrorMessage() << _T("`$") << *t
				<< _T("': unknown keyseq name.");
			if (!ks->isCorrectMode(i_mode))
				throw ErrorMessage()
				<< _T("`$") << *t
				<< _T("': Some of R-, IL-, IC-, NL-, CL-, SL-, KL-, MAX-, MIN-, MMAX-, MMIN-, T-, TS-, M0...M9- and L0...L9- are used in the keyseq.  They are prohibited in this context.");
			keySeq.setMode(ks->getMode());
			keySeq.add(ActionKeySeq(ks));
		} else if (*t == _T("&")) { // <FUNCTION_NAME>
			getToken();
			t = getToken();

			// search function
			ActionFunction af(createFunctionData(t->getString()), modifier);
			if (af.m_functionData == NULL)
				throw ErrorMessage() << _T("`&") << *t
				<< _T("': unknown function name.");
			af.m_functionData->load(this);
			keySeq.add(af);
		} else { // <KEYSEQ_MODIFIED_KEY_NAME>
			ModifiedKey mkey;
			mkey.m_modifier = modifier;
			mkey.m_key = load_KEY_NAME();
			keySeq.add(ActionKey(mkey));
		}
	}
	return m_setting->m_keySeqs.add(keySeq);
}
Ejemplo n.º 2
0
void PortableAction(int state, int action)
{
	LOGI("PortableAction %d   %d",state,action);

	if (PortableInMenu())
	{
		if (action >= PORT_ACT_MENU_UP && action <= PORT_ACT_MENU_BACK)
		{

			int sdl_code [] = { SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT,
					SDL_SCANCODE_RIGHT, SDL_SCANCODE_RETURN, SDL_SCANCODE_ESCAPE };
			PortableKeyEvent(state, sdl_code[action-PORT_ACT_MENU_UP], 0);
			return;

		}
	}
	else
	{

		int key = -1;

		switch (action)
		{
		case PORT_ACT_LEFT:
			key = key_left;
			break;
		case PORT_ACT_RIGHT:
			key = key_right;
			break;
		case PORT_ACT_FWD:
			key = key_up;
			break;
		case PORT_ACT_BACK:
			key = key_down;
			break;
		case PORT_ACT_MOVE_LEFT:
			key = key_strafeleft;
			break;
		case PORT_ACT_MOVE_RIGHT:
			key = key_straferight;
			break;
		case PORT_ACT_USE:
			key = key_use;
			break;
		case PORT_ACT_ATTACK:
			key = key_fire;
			break;
		case PORT_ACT_JUMP:
			key = key_jump;
			break;
		case PORT_ACT_STRAFE:
			key = key_strafe;
			break;
		case PORT_ACT_SPEED:
			key = key_speed;
			break;
		case PORT_ACT_MAP:
			key = key_map_toggle;
			break;
		case PORT_ACT_MAP_ZOOM_IN:
			key = key_map_zoomin;
			break;
		case PORT_ACT_MAP_ZOOM_OUT:
			key = key_map_zoomout;
			break;
		case PORT_ACT_INVUSE:
			key = key_useartifact;
			break;
		case PORT_ACT_INVDROP:
			key = key_invdrop;
			break;
		case PORT_ACT_INVPREV:
			key = key_invleft;
			break;
		case PORT_ACT_INVNEXT:
			key = key_invright;
			break;
		case PORT_ACT_NEXT_WEP:
			key = key_nextweapon;
			break;
		case PORT_ACT_PREV_WEP:
			key = key_prevweapon;
			break;
		case PORT_ACT_QUICKSAVE:
			key = key_menu_qsave;
			break;
		case PORT_ACT_QUICKLOAD:
			key = key_menu_qload;
			break;
		case PORT_ACT_GAMMA:
			key = key_menu_gamma;
			break;
		case PORT_ACT_HELPCOMP:
			key = key_mission;
			break;
		case PORT_ACT_SHOW_WEAPONS:
			key = key_invpop;
			break;
		case PORT_ACT_SHOW_KEYS:
			key = key_invkey;
			break;
		case PORT_ACT_FLY_UP:
			key = key_flyup;
			break;
		case PORT_ACT_FLY_DOWN:
			key = key_flydown;
			break;
		case PORT_ACT_FLY_CENTER:
			key = key_flycenter;
			break;
		case PORT_ACT_WEAP1:
			newweapon = 1;
			break;
		case PORT_ACT_WEAP2:
			newweapon = 2;
			break;
		case PORT_ACT_WEAP3:
			newweapon = 3;
			break;
		case PORT_ACT_WEAP4:
			newweapon = 4;
			break;
		case PORT_ACT_WEAP5:
			newweapon = 5;
			break;
		case PORT_ACT_WEAP6:
			newweapon = 6;
			break;
		case PORT_ACT_WEAP7:
			newweapon = 7;
			break;
		case PORT_ACT_WEAP8:
			newweapon = 8;
			break;
		}

		if (key != -1)
			ActionKey(state,key);
	}
}
Ejemplo n.º 3
0
ActionValue::WeakPtr ActionValue::find(const ActionGenerator *gen, QObject *controller)
{
	return actionMap()->value(ActionKey(controller, gen));
}