ctr_test_tools/TwlBackupChecker/DataExportImportTool/window.cpp
N2885 a792749610 DataExportImportTool
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@3 6b0af911-cb57-b745-895f-eec5701120e1
2011-08-08 02:47:01 +00:00

99 lines
2.1 KiB
C++

/*
* window.cpp
*
* Created on: 2011/07/14
* Author: N2885
*/
#include "window.h"
u16 waitTime = 40;
u16 waitAcceleTime = 5;
u16 n = 4;
void Window::Initialize(void)
{
mIndex = 0;
mOriginIndex = 0;
mSelectPos = 0;
mCursorCounter = 0;
mAcceleCounter = 0;
isSelectedWindow = false;
}
//カーソル上下・押しっぱなしで加速
void Window::UpDown(nn::hid::PadStatus& status)
{
if(mCursorCounter == 0)
{
if(status.hold & nn::hid::BUTTON_UP || status.hold & nn::hid::BUTTON_DOWN)
{
if(status.hold & nn::hid::BUTTON_UP)
{
mSelectPos--;
}
else
{
mSelectPos++;
}
mAcceleCounter++;
for(u16 i = 1; i < n; i++)
{
if( mAcceleCounter >= waitAcceleTime * ( i - 1 ) && mAcceleCounter <= waitAcceleTime * i )
{
mCursorCounter = waitTime/ i;
i = n;
}
else
{
mCursorCounter = waitTime / n;
}
}
}
else
{
mAcceleCounter = 0;
}
}
else
{
mCursorCounter--;
}
}
static u16 Min(u16 a, u16 b)
{
return (a > b) ? b : a;
}
void Window::Update(u16 fileSize)
{
if( mSelectPos < 0 )
{
if( mOriginIndex == 0 )
{
mSelectPos = Min(fileSize, mScreenHeight) - 1;
mOriginIndex = fileSize - Min(fileSize,mScreenHeight);
}
else
{
mSelectPos = 0;
mOriginIndex--;
}
}
else if( mSelectPos >= Min(fileSize, mScreenHeight) )
{
if( mOriginIndex < fileSize - mScreenHeight)
{
mSelectPos = mScreenHeight - 1;
mOriginIndex++;
}
else
{
mSelectPos = 0;
mOriginIndex = 0;
}
}
mIndex = mSelectPos + mOriginIndex;
}