Esempio n. 1
0
void KeyState::Update(){
	
	CheckKeyDown();
	CheckKeyUp();

	//store previous state
	previousState = InputMan::GetKeyboard()->GetKeyState(myKey);
	
}
Esempio n. 2
0
LRESULT	WINAPI LoopFafaCheck( HWND w, UINT msg, WPARAM mw, LPARAM ml )
{
HDC	h ;

	switch( msg )
		{
		case WM_SYSCOLORCHANGE:
			CreatePensBrushes() ;
			break ;
		case WM_CREATE :
			InitButtonWords( w ) ;
			if ( TstF( GetStyle(), FC_PRESELECT ) )
				SetState( (WORD)FB_SELECTED ) ;
			break ;

		case WM_SETFONT:
		{
			HFONT f = (HFONT)mw ;
			SetFont(f) ;
		        h = GetDC( w ) ;
			if ( TstF( GetStyle(), FC_BUTTONDRAW ) )
				DrawFafaButton( w ,h ) ;
			else	DrawFafaCheck( w ,h ) ;
		        ReleaseDC( w, h ) ;
			break ;
		}
		case WM_CHANGEBITMAP:
		{
			HBITMAP f = (HBITMAP)ml ;
			WORD width = LOBYTE(mw) ;
			WORD height = HIBYTE(mw) ;
			LONG style = GetStyle() ;
			
			if (width == 255) {
		           SIZE s;
			   GetBitmapDimensionEx(f, &s);
			   width = s.cx;
			   height = s.cy;
			}
			
			SetBitmap(f) ;
			SetBitmapW(width) ;
			SetBitmapH(height) ;

			if (f)
			{
				/* Switch to Bitmap button */
				style &= 0xffffff70 ;
				style |= (FC_BUTTONDRAW|FB_BITMAP) ;
			}
			else
			{
				/* Switch to Text button */
				style &= 0xffffff70 ;
				/* default text style for check items */
				if (style&FC_RADIO)
					style |= FC_CIR_DWN ;
				else
					style |= FC_REC_DWN ;
			}
			SetStyle(style) ;
		        h = GetDC( w ) ;
			if ( TstF( GetStyle(), FC_BUTTONDRAW ) )
				DrawFafaButton( w ,h) ;
			else	DrawFafaCheck( w ,h) ;
		        ReleaseDC( w, h ) ;
			break ;
		}
		case WM_GETFONT:
			return (LRESULT)GetFont() ;
		case WM_PAINT :
			if ( TstF( GetStyle(), FC_BUTTONDRAW ) )
				RedrawFafaButton( w ) ;
			else	RedrawFafaCheck( w ) ;
			break ;

		case WM_SETFOCUS:
			ChangeCheckFocus( w, 1 ) ;
			if ( GetAcc() && KeyIsDown( GetAcc() ) )
				CheckKeyDown( w, 1 ) ;
			break ;
		case WM_KILLFOCUS:
			ChangeCheckFocus( w, 0 ) ;
			break ;

		case WM_ENABLE:
			if ( ( mw != 0 ) ^ IsDisabled() )
				InvalidateRect( w, 0, 0 ) ;
			break ;

		case WM_RBUTTONDOWN:
			if ( ! TstF( GetStyle(), FC_RIGHTBUT ) )
				break ;

		case WM_LBUTTONDOWN:
			SetFocus( w ) ;
			MouseDown( w ) ;
			break ;

		case WM_MOUSEMOVE:
			MouseMove( w, ml ) ;
			break ;

		case WM_RBUTTONUP:
			if ( ! TstF( GetStyle(), FC_RIGHTBUT ) )
				break ;

		case WM_LBUTTONUP:
			MouseUp( w, ml ) ;
			break ;

		case FAFA_GETCHECK :
#ifdef DEBUG_FAFA
MyDebugMsg("State of check %x is %d\n",w,TstState(FB_SELECTED));
#endif
			return ( LONG ) TstState( FB_SELECTED ) ;

		case FAFA_SETCHECK :
#ifdef DEBUG_FAFA
MyDebugMsg("Setting Check %x to %d\n",w,mw) ;
#endif
			if ( ChangeCheckSelect( w, ( mw != 0 ) ) && mw )
				MakeRadioIteration( w ) ;
			break ;

		case WM_KEYDOWN:
		case WM_SYSKEYDOWN:
		case WM_KEYUP:
		case WM_SYSKEYUP:
			if ( mw == ' ' || KeyIsAcc( w, mw ) )
				CheckKeyDown( w, IsMessDown( msg ) ) ;
			else	return DefWindowProc( w, msg, mw, ml ) ;
			break;

		case WM_WHOAREYOU :
			return ( LONG ) FB_CHECK ;

		case WM_SETTEXT :
			InvalidateRect( w, 0, 0 ) ;
		default:
			return DefWindowProc( w, msg, mw, ml ) ;
		}

	return 0l ;
}
Esempio n. 3
0
void Player::Ctrl()
{
	//プレイヤーがマップから落ちた場合はHPを0にする
	if(y > Screen_Height + 30)HP = 0;

	//プレイヤーが地面に接触しているかを確認
	bool Flag = false;
	for(b2ContactEdge *i = GetBody()->GetContactList();i;i = i->next)
	{
		string Str = (char*)i->contact->GetFixtureB()->GetBody()->GetUserData();
		if(i->contact->GetManifold()->localNormal.y == 1)
		{
			Flag = true;
		}
		
	}

	//プレイヤーのコンボが途切れていて、かつ地面にいる場合はADを初期化する
	if(ComboCount == 0 && Flag && JudgeSkillCancel())InitAllSkillAvailableCount();

	//コンボが繋がった場合、EXゲージを増やす
	if(ComboCount > BeforeComboCount)EX += ComboCount;
	if(EX > MaxEX)EX = MaxEX;

	//スタン中は行動できない
	if(State == Skill_None_Stan && StateTime > 0)return;

	//スキルウィンドウ表示中は行動できない
	if(SkillWindow.Visible)return;

	//スキル使用
	int Key[9] = {KEY_INPUT_Q,KEY_INPUT_W,KEY_INPUT_E,
					KEY_INPUT_A,KEY_INPUT_S,KEY_INPUT_D,
					KEY_INPUT_Z,KEY_INPUT_X,KEY_INPUT_C};
	for(int i=0;i<9;i++)
	{
		if(CheckKeyDown(Key[i]) && (SkillSet[i%3][(int)(i/3)][3] > 0 || SkillSet[i%3][(int)(i/3)][3] == -1))
		{
			if(SkillConsumeEX[SkillSet[i%3][(int)(i/3)][0]] <= EX)
			{
				if(UseSkill(SkillSet[i%3][(int)(i/3)][0],Equipments[0]))
				{//スキル使用成功時にはAD,EXを減らす
					EX -= SkillConsumeEX[SkillSet[i%3][(int)(i/3)][0]];
					SkillSet[i%3][(int)(i/3)][3]--;
				}
			}
		}
	}

	//スキル使用中には移動、ジャンプができない
	if(!JudgeSkillCancel())return;
	b2Vec2 Vect = GetBody()->GetLinearVelocity();

	//移動
	if(CheckHitKey(KEY_INPUT_LEFT))
	{
		Vect.x = -MoveSpeed;
		Direction = ImageDirection_Left;
	}
	if(CheckHitKey(KEY_INPUT_RIGHT))
	{
		Vect.x = MoveSpeed;
		Direction = ImageDirection_Right;
	}

	if(Flag && CheckKeyDown(KEY_INPUT_SPACE))
	{//ジャンプ(空中不可)
		Vect.y = -MoveSpeed*2.5;
	}

	//地面との摩擦
	if(Flag && Vect.x != 0)Vect.x -= (float32)(Vect.x / fabs(Vect.x) * 0.13);

	//ベクトルを適用
	GetBody()->SetLinearVelocity(Vect);
}
Esempio n. 4
0
File: cfg.c Progetto: Devil084/pcsxr
int ReadAnalogEvent(int padnum, int analognum, int analogdir)
{
	SDL_Joystick *js;
	int i, changed = 0, t;
	Sint16 axis;
	
	if (g.cfg.PadDef[padnum].DevNum >= 0) {
		js = SDL_JoystickOpen(g.cfg.PadDef[padnum].DevNum);
		SDL_JoystickEventState(SDL_IGNORE);
	} else {
		js = NULL;
	}
	
	for (t = 0; t < 1000000 / 1000; t++) {
		// check joystick events
		if (js != NULL) {
			SDL_JoystickUpdate();
			
			for (i = 0; i < SDL_JoystickNumButtons(js); i++) {
				if (SDL_JoystickGetButton(js, i)) {
					g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = BUTTON;
					g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Button = i;
					changed = 1;
					goto end;
				}
			}
			
			for (i = 0; i < NUM_AXES(js); i++) {
				axis = SDL_JoystickGetAxis(js, i);
				if (abs(axis) > 16383 && (abs(axis - PrevAxisPos[i]) > 4096 || abs(axis - InitialAxisPos[i]) > 4096)) {
					g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = AXIS;
					g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Axis = (i + 1) * (axis > 0 ? 1 : -1);
					changed = 1;
					goto end;
				}
				PrevAxisPos[i] = axis;
			}
			
			for (i = 0; i < SDL_JoystickNumHats(js); i++) {
				axis = SDL_JoystickGetHat(js, i);
				if (axis != SDL_HAT_CENTERED) {
					g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = HAT;
					
					if (axis & SDL_HAT_UP) {
						g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_UP);
					} else if (axis & SDL_HAT_DOWN) {
						g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_DOWN);
					} else if (axis & SDL_HAT_LEFT) {
						g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_LEFT);
					} else if (axis & SDL_HAT_RIGHT) {
						g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_RIGHT);
					}
					
					changed = 1;
					goto end;
				}
			}
		}
		
		// check keyboard events
		i = CheckKeyDown();
		if (i != 0) {
			if (i != (kVK_Escape + 1)) g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].Key = i;
			changed = 1;
			goto end;
		}
		
		// check mouse events
		if (GetCurrentButtonState()) {
			changed = 2;
			goto end;
		}
		
		usleep(1000);
	}
	
end:
	if (js != NULL) {
		SDL_JoystickClose(js);
	}
	
	return changed;
}
Esempio n. 5
0
void Player::StepSkillWindow()
{
	//スキルウィンドウトグル
	if(CheckKeyDown(KEY_INPUT_LALT))SkillWindow.Visible = 1 - SkillWindow.Visible;

	//スキルウィンドウが有効であるかどうか確認
	if(!SkillWindow.Visible)return;

	for(int i=0;i<3;i++)
	{//装備中武器に合わせたスキルセットを取得
		EnableSkillList[i] = GetSkillList(GetEquipmentNameforEquipment(Equipments[i]));
	}

	//操作
	if(!SkillChangeFlag)
	{//カーソルが左にあり、変更操作をおこなっていない状態
		if(CheckKeyDown(KEY_INPUT_LEFT))SkillCursorPoint.x--;
		if(CheckKeyDown(KEY_INPUT_RIGHT))SkillCursorPoint.x++;
		if(CheckKeyDown(KEY_INPUT_UP))SkillCursorPoint.y--;
		if(CheckKeyDown(KEY_INPUT_DOWN))SkillCursorPoint.y++;
	
		if(SkillCursorPoint.x < 0)SkillCursorPoint.x = 2;
		else if(SkillCursorPoint.x > 2)SkillCursorPoint.x = 0;
		if(SkillCursorPoint.y < 0)SkillCursorPoint.y = 3;
		else if(SkillCursorPoint.y > 3)SkillCursorPoint.y = 0;
	}else
	{//スキル変更を行おうとしている状態
		if(CheckKeyDown(KEY_INPUT_LEFT))ChangeSkillPoint.x--;
		if(CheckKeyDown(KEY_INPUT_RIGHT))ChangeSkillPoint.x++;

		if(SkillCursorPoint.y != 0)
		{//スキル変更
			if(CheckKeyDown(KEY_INPUT_UP))
			{
				ChangeSkillPoint.x = 0;
				ChangeSkillPoint.y--;
			}
			if(CheckKeyDown(KEY_INPUT_DOWN))
			{
				ChangeSkillPoint.x = 0;
				ChangeSkillPoint.y++;
			}

			int Length = EnableSkillList[ChangeSkillPoint.y-1].size()-1;

			if(Length < ChangeSkillPoint.x)ChangeSkillPoint.x = 0;
			else if(0 > ChangeSkillPoint.x)ChangeSkillPoint.x = Length;

			if(ChangeSkillPoint.y < 1)ChangeSkillPoint.y = 3;
			else if(ChangeSkillPoint.y > 3)ChangeSkillPoint.y = 1;
		}else
		{//装備変更
			int Length = GetArrayLength(EquipmentNames)-1;
			if(ChangeSkillPoint.x < 0)ChangeSkillPoint.x = Length;
			else if(ChangeSkillPoint.x > Length)ChangeSkillPoint.x = 0;
		}
	}

	if(CheckKeyDown(KEY_INPUT_RETURN))
	{//変更決定
		if(!SkillChangeFlag)
		{
			ChangeSkillPoint.x = 0;
			ChangeSkillPoint.y = SkillCursorPoint.y;
		}else
		{
			if(SkillCursorPoint.y != 0)
			{
				SkillSet[SkillCursorPoint.x][SkillCursorPoint.y-1][0] = EnableSkillList[ChangeSkillPoint.y-1][ChangeSkillPoint.x];
				SkillSet[SkillCursorPoint.x][SkillCursorPoint.y-1][3] = 0;
			}else Equipments[SkillCursorPoint.x] = ChangeSkillPoint.x;

			for(int i=0;i<3;i++)
			{//装備中武器に合わせたスキルセットを取得
				EnableSkillList[i] = GetSkillList(GetEquipmentNameforEquipment(Equipments[i]));
			}

			#pragma region 使用できないスキルを検索し、無効にする
			vector<POINT> Points;

			int Skill[3][3];
			for(int i=0;i<3;i++)
			{
				for(int j=0;j<3;j++)
				{
					Skill[i][j] = 0;
				}
			}
			
			for(int i=0;i<3;i++)
			{
				int Length = EnableSkillList[i].size();
				for(int j=0;j<Length;j++)
				{
					for(int x=0;x<3;x++)
					{
						for(int y=0;y<3;y++)
						{
							if(SkillSet[x][y][0] == EnableSkillList[i][j])
							{
								Skill[x][y] = 1;
							}
						}
					}
				}
			}

			for(int i=0;i<3;i++)
			{
				for(int j=0;j<3;j++)
				{
					if(!Skill[i][j])
					{
						SkillSet[i][j][0] = 0;
					}
				}
			}
			#pragma endregion
		}

		if(SkillChangeFlag)ChangeSkillPoint.x = ChangeSkillPoint.y = -1;
		SkillChangeFlag = 1 - SkillChangeFlag;
	}

	//描画
	SkillWindow.ReWindow();
	SkillWindow.SetDrawThisWindow();

	//DrawBox(15,10,110,35,Black,false);
	
	//パネルの制作
	int Length = AnimeGraphs.size();
	for(int i=0;i<Length;i++)
	{
		SkillPanels[i].ReWindow();
		SkillPanels[i].SetDrawThisWindow();

		SkillImages[i].x = SkillPanels[i].GetWidth()/2;
		SkillImages[i].y = SkillPanels[i].GetHeight()/2+24;
		SkillImages[i].Draw(true);
	}

	Length = EquipmentGraphs.size();
	for(int i=0;i<Length;i++)
	{
		EquipmentPanels[i].ReWindow();
		EquipmentPanels[i].SetDrawThisWindow();

		EquipmentImages[i].x = EquipmentPanels[i].GetWidth()/2;
		EquipmentImages[i].y = EquipmentPanels[i].GetHeight()/2+24;
		EquipmentImages[i].Draw(true);
	}

	SkillWindow.SetDrawThisWindow();

	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			int Select1 = 0,Select2 = 0;
			if(SkillCursorPoint.x == j && SkillCursorPoint.y == i)Select1 = 10;
			if(ChangeSkillPoint.x == j && ChangeSkillPoint.y == i && SkillChangeFlag)Select2 = 10;
			if(i>0)
			{//スキル窓の描画
				//DrawRotaGraph2(15+j*70+32,50+i*70+32,64,40,1,0,AnimeGraphs[SkillSet[j][i-1][0]][0],true);
				if(i < 4)
				{//使用中スキル
					SkillPanels[SkillSet[j][i-1][0]].x = 15+j*70;
					SkillPanels[SkillSet[j][i-1][0]].y = 50+i*70-Select1;
					SkillPanels[SkillSet[j][i-1][0]].Draw();
				}
				/*
				if(EnableSkillList[i-1].size() > j)
				{
					SkillPanels[EnableSkillList[i-1][j]].x = 15+j*70 + SkillWindow.GetWidth()/2;
					SkillPanels[EnableSkillList[i-1][j]].y = 50+i*70-Select2;
					SkillPanels[EnableSkillList[i-1][j]].Draw();
				}
				*/
			}else
			{//装備窓の描画
				//使用中装備
				EquipmentPanels[Equipments[j]].x = 15+j*70;
				EquipmentPanels[Equipments[j]].y = 50+i*70-Select1;
				EquipmentPanels[Equipments[j]].Draw();

			}
			//DrawBox(15+j*70,50+i*70,15+j*70+64,50+i*70+64,Black,false);
		}
	}

	for(int i=0;i<4;i++)
	{
		for(int j=0;j<5;j++)
		{
			int Select2 = 0;
			if(i>0)
			{//スキル窓の描画
				int ShowSkill = j + ChangeSkillPoint.x - 2;
				if(ChangeSkillPoint.x < 2)ShowSkill += 2 - ChangeSkillPoint.x;
				else if(ChangeSkillPoint.x >= EnableSkillList[i-1].size()-2)ShowSkill -= ChangeSkillPoint.x - (EnableSkillList[i-1].size()-3);
				if(ChangeSkillPoint.x == ShowSkill && ChangeSkillPoint.y == i && SkillChangeFlag)Select2 = 10;
				if(EnableSkillList[i-1].size() <= j)continue;
				SkillPanels[EnableSkillList[i-1][ShowSkill]].x = 15+j*70 + SkillWindow.GetWidth()/2;
				SkillPanels[EnableSkillList[i-1][ShowSkill]].y = 50+i*70-Select2;
				SkillPanels[EnableSkillList[i-1][ShowSkill]].Draw();
			}else
			{//装備窓の描画
				int ShowEquip = j;
				if(ChangeSkillPoint.x >= 5 && ChangeSkillPoint.y == i)ShowEquip += ChangeSkillPoint.x - 4;
				if(ChangeSkillPoint.x == ShowEquip && ChangeSkillPoint.y == i && SkillChangeFlag)Select2 = 10;
				if(GetArrayLength(EquipmentValueNames) > ShowEquip)
				{
					EquipmentPanels[ShowEquip].x = 15+j*70 + SkillWindow.GetWidth()/2;
					EquipmentPanels[ShowEquip].y = 50+i*70-Select2;
					EquipmentPanels[ShowEquip].Draw();
				}
			}
		}
	}

	InfoPanel.ReWindow();
	InfoPanel2.ReWindow();

	//装備、スキル説明の描画
	string StrInfo;
	if(SkillCursorPoint.y != 0)StrInfo = SkillInfo[SkillSet[SkillCursorPoint.x][SkillCursorPoint.y-1][0]];
	else StrInfo = EquipmentInfo[Equipments[SkillCursorPoint.x]];
	InfoPanel.DrawStringInWindow(5,5,DrawString_Left,StrInfo,FontSmall,White);
	SkillWindow.SetDrawThisWindow();
	InfoPanel.Draw();

	StrInfo = "";
	if(SkillChangeFlag)
	{
		if(SkillCursorPoint.y != 0)StrInfo = SkillInfo[EnableSkillList[ChangeSkillPoint.y-1][ChangeSkillPoint.x]];
		else StrInfo = EquipmentInfo[ChangeSkillPoint.x];
		InfoPanel2.DrawStringInWindow(5,5,DrawString_Left,StrInfo,FontSmall,White);
	}
	SkillWindow.SetDrawThisWindow();
	InfoPanel2.Draw();

	SetDrawScreen(DX_SCREEN_BACK);
	SkillWindow.Draw();
}