コードスペランカー

ゲーム開発日誌など

DXライブラリでジョイパッド状態の詳細な取得

ハットスイッチが使えねーじゃん!とか思っていたら、実は使えた話。
詳細はここ
概要を書いておくと
作り始めたときとコントローラーの想定仕様かわってるよ!なのでDirectInputから直接もらう方法作ったよ!ってことらしい。リファレンスにのってないってことは、仮仕様なんだろうか?
まずはジョイパッドの状態を格納する構造体

// DirectInput のジョイパッド入力情報
struct DINPUT_JOYSTATE
{
	int X ; // スティック0のX軸パラメータ( -1000〜1000 )
	int Y ; // スティック0のY軸パラメータ( -1000〜1000 )
	int Z ; // スティック0のZ軸パラメータ( -1000〜1000 )
	int Rx ; // スティック1のX軸パラメータ( -1000〜1000 )
	int Ry ; // スティック1のY軸パラメータ( -1000〜1000 )
	int Rz ; // スティック1のZ軸パラメータ( -1000〜1000 )
	int Slider[ 2 ] ; // スライダー二つ
	unsigned int POV[ 4 ] ; // ハットスイッチ4つ( -1:入力なし 0:上 4500:右上 9000:右 13500:右下 18000:下 22500:左下 27000:左 31500:左上 )
	unsigned char Buttons[ 32 ] ; // ボタン32個( 押されたボタンは 128 になる )
} ;

次にそこにデータを格納するための関数

GetJoypadDirectInputState( DX_INPUT_PAD1, &joy ) ;

パッドの仕様によって、スティックの上下やらが逆になったりするらしいが、これでやりたいことが出来そう