そこで、以下の様な処理を書いてみました。
void InputManager::Update()
{
GetJoypadXInputState(DX_INPUT_PAD1, &m_xinput);
bool push = false;
for (int i = 0; i < BUTTON_NUM; i++)
{
if (IsKeyDown(i))
{
m_buttonPushTime++;
push = true;
break;
}
}
if (!push)
{
m_buttonPushTime = 0;
}
}
//ボタンが押されているかを取得
bool InputManager::IsKeyDown(int key) const
{
return m_xinput.Buttons[key] == BUTTON_DOWN;
}
//指定時間以上ボタンが押されているかをinterval間隔で取得
bool InputManager::IsKeyRepeatPush(int key, int time, int interval) const
{
return IsKeyDown(key) &&
m_buttonPushTime >= time &&
m_buttonPushTime % interval == 0;
}
しかし、これだと毎フレームfor文で全ボタンを確認してまわらなければならず、凄く冗長で無駄な記述になっている感じがします。
これ以上に簡略化できるようなプログラムの記述方などはありますでしょうか。
よろしくお願いいたします。